aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrea Rossetti2022-02-22 15:22:50 +0100
committerLars Ingebrigtsen2022-02-22 15:22:50 +0100
commit257ae88d4e58a9b9eebf536475c457db2fd0102e (patch)
treea53a4e462c912a74d841df3e92d325556dd88945
parent161f5b4be4ea684357e47064aef0f6c5b1c570ec (diff)
downloademacs-257ae88d4e58a9b9eebf536475c457db2fd0102e.tar.gz
emacs-257ae88d4e58a9b9eebf536475c457db2fd0102e.zip
Improve ruler-mode dragging
* lisp/ruler-mode.el (ruler-mode-mouse-drag-any-column) (ruler-mode-mouse-add-tab-stop, ruler-mode-mouse-del-tab-stop): Adjust callers. * lisp/ruler-mode.el (ruler-mode-window-col): Fix dragging when stepping outside the header line (bug#17788). Copyright-paperwork-exempt: yes
-rw-r--r--lisp/ruler-mode.el25
1 files changed, 14 insertions, 11 deletions
diff --git a/lisp/ruler-mode.el b/lisp/ruler-mode.el
index afe1cd4bfda..f0efc20f037 100644
--- a/lisp/ruler-mode.el
+++ b/lisp/ruler-mode.el
@@ -279,21 +279,24 @@ or remove a tab stop. \\[ruler-mode-toggle-show-tab-stops] or
279 (let ((edges (window-edges))) 279 (let ((edges (window-edges)))
280 (- (nth 2 edges) (nth 0 edges)))) 280 (- (nth 2 edges) (nth 0 edges))))
281 281
282(defsubst ruler-mode-window-col (n) 282(defsubst ruler-mode-window-col (event)
283 "Return a column number relative to the selected window. 283 "Return a column number relative to the selected window.
284N is a column number relative to selected frame. 284EVENT is the mouse event that gives the current column.
285If required, account for screen estate taken by `display-line-numbers'." 285If required, account for screen estate taken by `display-line-numbers'."
286 (if display-line-numbers 286 (let ((n (car (posn-col-row event))))
287 (when display-line-numbers
287 ;; FIXME: ruler-mode relies on N being an integer, so if the 288 ;; FIXME: ruler-mode relies on N being an integer, so if the
288 ;; 'line-number' face is customized to use a font that is larger 289 ;; 'line-number' face is customized to use a font that is larger
289 ;; or smaller than that of the default face, the alignment might 290 ;; or smaller than that of the default face, the alignment might
290 ;; be off by up to half a column, unless the font width is an 291 ;; be off by up to half a column, unless the font width is an
291 ;; integral multiple or divisor of the default face's font. 292 ;; integral multiple or divisor of the default face's font.
292 (setq n (- n (round (line-number-display-width 'columns))))) 293 (setq n (- n (round (line-number-display-width 'columns)))))
293 (- n 294 (- n
294 (or (car (window-margins)) 0) 295 (if (eq (posn-area event) 'header-line)
295 (fringe-columns 'left) 296 (+ (or (car (window-margins)) 0)
296 (scroll-bar-columns 'left))) 297 (fringe-columns 'left)
298 (scroll-bar-columns 'left))
299 0))))
297 300
298(defun ruler-mode-mouse-set-left-margin (start-event) 301(defun ruler-mode-mouse-set-left-margin (start-event)
299 "Set left margin end to the graduation where the mouse pointer is on. 302 "Set left margin end to the graduation where the mouse pointer is on.
@@ -370,7 +373,7 @@ dragging. See also the variable `ruler-mode-dragged-symbol'."
370 col newc oldc) 373 col newc oldc)
371 (save-selected-window 374 (save-selected-window
372 (select-window (posn-window start)) 375 (select-window (posn-window start))
373 (setq col (ruler-mode-window-col (car (posn-col-row start))) 376 (setq col (ruler-mode-window-col start)
374 newc (+ col (ruler-mode-text-scaled-window-hscroll))) 377 newc (+ col (ruler-mode-text-scaled-window-hscroll)))
375 (and 378 (and
376 (>= col 0) (< col (ruler-mode-text-scaled-window-width)) 379 (>= col 0) (< col (ruler-mode-text-scaled-window-width))
@@ -455,7 +458,7 @@ Called on each mouse motion event START-EVENT."
455 col newc) 458 col newc)
456 (save-selected-window 459 (save-selected-window
457 (select-window (posn-window start)) 460 (select-window (posn-window start))
458 (setq col (ruler-mode-window-col (car (posn-col-row end))) 461 (setq col (ruler-mode-window-col end)
459 newc (+ col (ruler-mode-text-scaled-window-hscroll))) 462 newc (+ col (ruler-mode-text-scaled-window-hscroll)))
460 (when (and (>= col 0) (< col (ruler-mode-text-scaled-window-width))) 463 (when (and (>= col 0) (< col (ruler-mode-text-scaled-window-width)))
461 (set ruler-mode-dragged-symbol newc))))) 464 (set ruler-mode-dragged-symbol newc)))))
@@ -471,7 +474,7 @@ START-EVENT is the mouse click event."
471 (when (eq start end) ;; mouse click 474 (when (eq start end) ;; mouse click
472 (save-selected-window 475 (save-selected-window
473 (select-window (posn-window start)) 476 (select-window (posn-window start))
474 (setq col (ruler-mode-window-col (car (posn-col-row start))) 477 (setq col (ruler-mode-window-col start)
475 ts (+ col (ruler-mode-text-scaled-window-hscroll))) 478 ts (+ col (ruler-mode-text-scaled-window-hscroll)))
476 (and (>= col 0) (< col (ruler-mode-text-scaled-window-width)) 479 (and (>= col 0) (< col (ruler-mode-text-scaled-window-width))
477 (not (member ts tab-stop-list)) 480 (not (member ts tab-stop-list))
@@ -492,7 +495,7 @@ START-EVENT is the mouse click event."
492 (when (eq start end) ;; mouse click 495 (when (eq start end) ;; mouse click
493 (save-selected-window 496 (save-selected-window
494 (select-window (posn-window start)) 497 (select-window (posn-window start))
495 (setq col (ruler-mode-window-col (car (posn-col-row start))) 498 (setq col (ruler-mode-window-col start)
496 ts (+ col (ruler-mode-text-scaled-window-hscroll))) 499 ts (+ col (ruler-mode-text-scaled-window-hscroll)))
497 (and (>= col 0) (< col (ruler-mode-text-scaled-window-width)) 500 (and (>= col 0) (< col (ruler-mode-text-scaled-window-width))
498 (member ts tab-stop-list) 501 (member ts tab-stop-list)