emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/ruler-mode.el


From: Richard M. Stallman
Subject: [Emacs-diffs] Changes to emacs/lisp/ruler-mode.el
Date: Thu, 13 Dec 2001 02:55:50 -0500

Index: emacs/lisp/ruler-mode.el
diff -c emacs/lisp/ruler-mode.el:1.2 emacs/lisp/ruler-mode.el:1.3
*** emacs/lisp/ruler-mode.el:1.2        Sat Nov 24 19:10:03 2001
--- emacs/lisp/ruler-mode.el    Thu Dec 13 02:55:49 2001
***************
*** 5,11 ****
  ;; Author: David Ponce <address@hidden>
  ;; Maintainer: David Ponce <address@hidden>
  ;; Created: 24 Mar 2001
! ;; Version: 1.3.1
  ;; Keywords: environment
  
  ;; This file is part of GNU Emacs.
--- 5,11 ----
  ;; Author: David Ponce <address@hidden>
  ;; Maintainer: David Ponce <address@hidden>
  ;; Created: 24 Mar 2001
! ;; Version: 1.4
  ;; Keywords: environment
  
  ;; This file is part of GNU Emacs.
***************
*** 438,512 ****
    "Right margin %S"
    "Help string shown when mouse is over the right margin area.")
  
! (defvar ruler-mode-left-fringe-cols nil
!   "Hold last result of function `ruler-mode-left-fringe-cols'.
! This cache is local to each frame.")
! (make-variable-frame-local 'ruler-mode-left-fringe-cols)
! 
! (defun ruler-mode-left-fringe-cols (&optional check)
!   "Return the character width of fringe and left vertical scrollbar.
! That is a pair (FRINGE-COLS . VSCROLLBAR-COLS) where:
! 
! - - FRINGE-COLS is the number of columns occupied by a fringe area.
! 
! - - VSCROLLBAR-COLS is the number of columns occupied by the left
!     vertical scrollbar or 0 if there is no vertical scrollbar on the
!     left side.
! 
! The first time this function is called its result is saved in a frame
! local cache and then returned on next calls.  If optional argument
! CHECK is non-nil or if the frame 'vertical-scroll-bars parameter has
! been changed the function re-computes the result."
!   (let* ((f   (selected-frame))
!          (vsb (frame-parameter f 'vertical-scroll-bars))
!          (lfc (frame-parameter f 'ruler-mode-left-fringe-cols)))
!     (if (or check (not (eq (cdr lfc) vsb)))
!         (let* ((w   (frame-first-window f))
!                (sbw (frame-pixel-width f))
!                (chw (frame-char-width f))
!                (chx (/ 1.0 (float chw)))
!                (pos (cons 0.0 0))
!                (lfw 0.0)
!                coord)
!           (if vsb
!               (modify-frame-parameters
!                f '((vertical-scroll-bars . nil))))
!           (setq coord (coordinates-in-window-p pos w))
!           (while (not (memq coord '(left-fringe mode-line)))
!             (setcdr pos (1+ (cdr pos)))
!             (setq coord (coordinates-in-window-p pos w)))
!           (while (eq coord 'left-fringe)
!             (setcar pos (+ (car pos) chx))
!             (setq lfw   (+ lfw chx)
!                   coord (coordinates-in-window-p pos w)))
!           (or vsb
!               (modify-frame-parameters
!                f '((vertical-scroll-bars . right))))
!           (setq sbw (/ (abs (- sbw (frame-pixel-width f))) chw)
!                 lfw (floor lfw))
!           (setq lfc (cons (cons lfw (if (eq vsb 'left) sbw 0)) vsb))
!           (modify-frame-parameters
!            f (list (cons 'vertical-scroll-bars vsb)
!                    (cons 'ruler-mode-left-fringe-cols lfc)))))
!     (car lfc)))
  
  (defun ruler-mode-ruler ()
    "Return a string ruler."
    (if ruler-mode
!       (let* ((lfr   (ruler-mode-left-fringe-cols))
!              (w     (+ (window-width) 1 (cdr lfr)))
               (m     (window-margins))
               (l     (or (car m) 0))
               (r     (or (cdr m) 0))
-              (j     (+ (car lfr) (cdr lfr)))
               (o     (- (window-hscroll) l j))
               (i     0)
               (ruler (concat
                       ;; unit graduations
                       (make-string w ruler-mode-basic-graduation-char)
                       ;; extra space to fill the header line
!                      (make-string j ?\ )))
!              c k)
  
          ;; Setup default face and help echo.
          (put-text-property 0 (length ruler)
--- 438,473 ----
    "Right margin %S"
    "Help string shown when mouse is over the right margin area.")
  
! (defun ruler-mode-extra-left-cols ()
!   "Return number of extra columns on the left side of selected frame.
! That is the number of columns occupied by the left fringe area and
! vertical scrollbar on the left side of the selected frame."
!   (let ((w  (frame-first-window))
!         (xy (cons 0 0)))
!     (with-current-buffer (window-buffer w)
!       (let (header-line-format)
!         (while (not (listp (coordinates-in-window-p xy w)))
!           (setcar xy (1+ (car xy))))
!         (car xy)))))
  
  (defun ruler-mode-ruler ()
    "Return a string ruler."
    (if ruler-mode
!       (let* ((j     (ruler-mode-extra-left-cols))
!              (k     (/ (or (frame-parameter nil 'right-fringe) 0)
!                        (frame-char-width)))
!              (w     (+ (window-width) j))
               (m     (window-margins))
               (l     (or (car m) 0))
               (r     (or (cdr m) 0))
               (o     (- (window-hscroll) l j))
               (i     0)
               (ruler (concat
                       ;; unit graduations
                       (make-string w ruler-mode-basic-graduation-char)
                       ;; extra space to fill the header line
!                      (make-string k ?\ )))
!              c)
  
          ;; Setup default face and help echo.
          (put-text-property 0 (length ruler)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]