diff options
| author | Luke Yen-Xun Lee | 2017-05-27 16:25:02 +0300 |
|---|---|---|
| committer | Eli Zaretskii | 2017-05-27 16:25:02 +0300 |
| commit | b0177da7fe51b267de6ffa84a38bd0ec3f6c0fa9 (patch) | |
| tree | 76116654eb5130be80c2f84ba94b84c4c3b4a33c | |
| parent | 704fea97e495b43e4bbd03f28d0ccc66b45e80a8 (diff) | |
| download | emacs-b0177da7fe51b267de6ffa84a38bd0ec3f6c0fa9.tar.gz emacs-b0177da7fe51b267de6ffa84a38bd0ec3f6c0fa9.zip | |
Fix ruler-mode text-scaling issues
* lisp/ruler-mode.el (ruler-mode-text-scaled-width): New function
for computing scaled text width.
(ruler-mode-text-scaled-window-hscroll)
(ruler-mode-text-scaled-window-width): Compute text scaled
`window-width' value.
(ruler-mode-mouse-grab-any-column, ruler-mode-mouse-add-tab-stop)
(ruler-mode-ruler): Change `window-hscroll' into
`ruler-mode-text-scaled-window-hscroll', and change `window-width'
into `ruler-mode-text-scaled-window-width'.
| -rw-r--r-- | lisp/ruler-mode.el | 34 |
1 files changed, 24 insertions, 10 deletions
diff --git a/lisp/ruler-mode.el b/lisp/ruler-mode.el index 4f09a1887f5..7b0588dfead 100644 --- a/lisp/ruler-mode.el +++ b/lisp/ruler-mode.el | |||
| @@ -360,6 +360,20 @@ START-EVENT is the mouse click event." | |||
| 360 | That is `fill-column', `comment-column', `goal-column', or nil when | 360 | That is `fill-column', `comment-column', `goal-column', or nil when |
| 361 | nothing is dragged.") | 361 | nothing is dragged.") |
| 362 | 362 | ||
| 363 | (defun ruler-mode-text-scaled-width (width) | ||
| 364 | "Compute scaled text width according to current font scaling. | ||
| 365 | Convert a width of char units into a text-scaled char width units, | ||
| 366 | Ex. `window-hscroll'." | ||
| 367 | (/ (* width (frame-char-width)) (default-font-width))) | ||
| 368 | |||
| 369 | (defun ruler-mode-text-scaled-window-hscroll () | ||
| 370 | "Text scaled `window-hscroll'." | ||
| 371 | (ruler-mode-text-scaled-width (window-hscroll))) | ||
| 372 | |||
| 373 | (defun ruler-mode-text-scaled-window-width () | ||
| 374 | "Text scaled `window-width'." | ||
| 375 | (ruler-mode-text-scaled-width (window-width))) | ||
| 376 | |||
| 363 | (defun ruler-mode-mouse-grab-any-column (start-event) | 377 | (defun ruler-mode-mouse-grab-any-column (start-event) |
| 364 | "Drag a column symbol on the ruler. | 378 | "Drag a column symbol on the ruler. |
| 365 | Start dragging on mouse down event START-EVENT, and update the column | 379 | Start dragging on mouse down event START-EVENT, and update the column |
| @@ -372,9 +386,9 @@ dragging. See also the variable `ruler-mode-dragged-symbol'." | |||
| 372 | (save-selected-window | 386 | (save-selected-window |
| 373 | (select-window (posn-window start)) | 387 | (select-window (posn-window start)) |
| 374 | (setq col (ruler-mode-window-col (car (posn-col-row start))) | 388 | (setq col (ruler-mode-window-col (car (posn-col-row start))) |
| 375 | newc (+ col (window-hscroll))) | 389 | newc (+ col (ruler-mode-text-scaled-window-hscroll))) |
| 376 | (and | 390 | (and |
| 377 | (>= col 0) (< col (window-width)) | 391 | (>= col 0) (< col (ruler-mode-text-scaled-window-width)) |
| 378 | (cond | 392 | (cond |
| 379 | 393 | ||
| 380 | ;; Handle the fill column. | 394 | ;; Handle the fill column. |
| @@ -457,8 +471,8 @@ Called on each mouse motion event START-EVENT." | |||
| 457 | (save-selected-window | 471 | (save-selected-window |
| 458 | (select-window (posn-window start)) | 472 | (select-window (posn-window start)) |
| 459 | (setq col (ruler-mode-window-col (car (posn-col-row end))) | 473 | (setq col (ruler-mode-window-col (car (posn-col-row end))) |
| 460 | newc (+ col (window-hscroll))) | 474 | newc (+ col (ruler-mode-text-scaled-window-hscroll))) |
| 461 | (when (and (>= col 0) (< col (window-width))) | 475 | (when (and (>= col 0) (< col (ruler-mode-text-scaled-window-width))) |
| 462 | (set ruler-mode-dragged-symbol newc))))) | 476 | (set ruler-mode-dragged-symbol newc))))) |
| 463 | 477 | ||
| 464 | (defun ruler-mode-mouse-add-tab-stop (start-event) | 478 | (defun ruler-mode-mouse-add-tab-stop (start-event) |
| @@ -473,8 +487,8 @@ START-EVENT is the mouse click event." | |||
| 473 | (save-selected-window | 487 | (save-selected-window |
| 474 | (select-window (posn-window start)) | 488 | (select-window (posn-window start)) |
| 475 | (setq col (ruler-mode-window-col (car (posn-col-row start))) | 489 | (setq col (ruler-mode-window-col (car (posn-col-row start))) |
| 476 | ts (+ col (window-hscroll))) | 490 | ts (+ col (ruler-mode-text-scaled-window-hscroll))) |
| 477 | (and (>= col 0) (< col (window-width)) | 491 | (and (>= col 0) (< col (ruler-mode-text-scaled-window-width)) |
| 478 | (not (member ts tab-stop-list)) | 492 | (not (member ts tab-stop-list)) |
| 479 | (progn | 493 | (progn |
| 480 | (message "Tab stop set to %d" ts) | 494 | (message "Tab stop set to %d" ts) |
| @@ -494,8 +508,8 @@ START-EVENT is the mouse click event." | |||
| 494 | (save-selected-window | 508 | (save-selected-window |
| 495 | (select-window (posn-window start)) | 509 | (select-window (posn-window start)) |
| 496 | (setq col (ruler-mode-window-col (car (posn-col-row start))) | 510 | (setq col (ruler-mode-window-col (car (posn-col-row start))) |
| 497 | ts (+ col (window-hscroll))) | 511 | ts (+ col (ruler-mode-text-scaled-window-hscroll))) |
| 498 | (and (>= col 0) (< col (window-width)) | 512 | (and (>= col 0) (< col (ruler-mode-text-scaled-window-width)) |
| 499 | (member ts tab-stop-list) | 513 | (member ts tab-stop-list) |
| 500 | (progn | 514 | (progn |
| 501 | (message "Tab stop at %d deleted" ts) | 515 | (message "Tab stop at %d deleted" ts) |
| @@ -648,11 +662,11 @@ Optional argument PROPS specifies other text properties to apply." | |||
| 648 | 662 | ||
| 649 | (defun ruler-mode-ruler () | 663 | (defun ruler-mode-ruler () |
| 650 | "Compute and return a header line ruler." | 664 | "Compute and return a header line ruler." |
| 651 | (let* ((w (window-width)) | 665 | (let* ((w (ruler-mode-text-scaled-window-width)) |
| 652 | (m (window-margins)) | 666 | (m (window-margins)) |
| 653 | (f (window-fringes)) | 667 | (f (window-fringes)) |
| 654 | (i 0) | 668 | (i 0) |
| 655 | (j (window-hscroll)) | 669 | (j (ruler-mode-text-scaled-window-hscroll)) |
| 656 | ;; Setup the scrollbar, fringes, and margins areas. | 670 | ;; Setup the scrollbar, fringes, and margins areas. |
| 657 | (lf (ruler-mode-space | 671 | (lf (ruler-mode-space |
| 658 | 'left-fringe | 672 | 'left-fringe |