diff options
| author | Andrea Rossetti | 2022-02-22 15:22:50 +0100 |
|---|---|---|
| committer | Lars Ingebrigtsen | 2022-02-22 15:22:50 +0100 |
| commit | 257ae88d4e58a9b9eebf536475c457db2fd0102e (patch) | |
| tree | a53a4e462c912a74d841df3e92d325556dd88945 | |
| parent | 161f5b4be4ea684357e47064aef0f6c5b1c570ec (diff) | |
| download | emacs-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.el | 25 |
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. |
| 284 | N is a column number relative to selected frame. | 284 | EVENT is the mouse event that gives the current column. |
| 285 | If required, account for screen estate taken by `display-line-numbers'." | 285 | If 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) |