• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.10.1/emacs-93/emacs/lisp/

Lines Matching +defs:fringe +defs:mode

1 ;;; ruler-mode.el --- display a ruler in the header line
31 ;; This library provides a minor mode to display a ruler in the header
53 ;; `ruler-mode-toggle-show-tab-stops' toggle showing and visually
54 ;; editing `tab-stop-list' setting. The `ruler-mode-show-tab-stops'
57 ;; In the ruler the character `ruler-mode-current-column-char' shows
58 ;; the `current-column' location, `ruler-mode-fill-column-char' shows
59 ;; the `fill-column' location, `ruler-mode-comment-column-char' shows
60 ;; the `comment-column' location, `ruler-mode-goal-column-char' shows
61 ;; the `goal-column' and `ruler-mode-tab-stop-char' shows tab stop
67 ;; - `ruler-mode-basic-graduation-char' character used for basic
69 ;; - `ruler-mode-inter-graduation-char' character used for
74 ;; - `ruler-mode-default' the ruler default face.
75 ;; - `ruler-mode-fill-column' the face used to highlight the
77 ;; - `ruler-mode-comment-column' the face used to highlight the
79 ;; - `ruler-mode-goal-column' the face used to highlight the
81 ;; - `ruler-mode-current-column' the face used to highlight the
83 ;; - `ruler-mode-tab-stop' the face used to highlight tab stop
85 ;; - `ruler-mode-margins' the face used to highlight graduations
87 ;; - `ruler-mode-fringes' the face used to highlight graduations
89 ;; - `ruler-mode-column-number' the face used to highlight the
92 ;; `ruler-mode-default' inherits from the built-in `default' face.
93 ;; All `ruler-mode' faces inherit from `ruler-mode-default'.
100 ;; function as the buffer-local value of `ruler-mode-ruler-function'.
106 ;; (add-hook '<major-mode>-hook 'ruler-mode)
117 (require 'fringe)
119 (defgroup ruler-mode nil
124 (defcustom ruler-mode-show-tab-stops nil
128 or remove a tab stop. \\[ruler-mode-toggle-show-tab-stops] or
130 :group 'ruler-mode
135 (defun ruler-mode-character-validate (widget)
145 (defcustom ruler-mode-fill-column-char (if (char-displayable-p ?�)
149 :group 'ruler-mode
153 :validate ruler-mode-character-validate)))
155 (defcustom ruler-mode-comment-column-char ?\#
157 :group 'ruler-mode
161 :validate ruler-mode-character-validate)))
163 (defcustom ruler-mode-goal-column-char ?G
165 :group 'ruler-mode
169 :validate ruler-mode-character-validate)))
171 (defcustom ruler-mode-current-column-char (if (char-displayable-p ?�)
175 :group 'ruler-mode
179 :validate ruler-mode-character-validate)))
181 (defcustom ruler-mode-tab-stop-char ?\T
183 :group 'ruler-mode
187 :validate ruler-mode-character-validate)))
189 (defcustom ruler-mode-basic-graduation-char ?\.
191 :group 'ruler-mode
195 :validate ruler-mode-character-validate)))
197 (defcustom ruler-mode-inter-graduation-char ?\!
199 :group 'ruler-mode
203 :validate ruler-mode-character-validate)))
205 (defcustom ruler-mode-set-goal-column-ding-flag t
207 :group 'ruler-mode
211 (defface ruler-mode-default
226 :group 'ruler-mode)
228 (defface ruler-mode-pad
230 (:inherit ruler-mode-default
234 (:inherit ruler-mode-default
238 :group 'ruler-mode)
240 (defface ruler-mode-margins
242 (:inherit ruler-mode-default
246 :group 'ruler-mode)
248 (defface ruler-mode-fringes
250 (:inherit ruler-mode-default
254 :group 'ruler-mode)
256 (defface ruler-mode-column-number
258 (:inherit ruler-mode-default
262 :group 'ruler-mode)
264 (defface ruler-mode-fill-column
266 (:inherit ruler-mode-default
270 :group 'ruler-mode)
272 (defface ruler-mode-comment-column
274 (:inherit ruler-mode-default
278 :group 'ruler-mode)
280 (defface ruler-mode-goal-column
282 (:inherit ruler-mode-default
286 :group 'ruler-mode)
288 (defface ruler-mode-tab-stop
290 (:inherit ruler-mode-default
294 :group 'ruler-mode)
296 (defface ruler-mode-current-column
298 (:inherit ruler-mode-default
303 :group 'ruler-mode)
307 (defsubst ruler-mode-full-window-width ()
312 (defsubst ruler-mode-window-col (n)
318 (fringe-columns 'left)
322 (defun ruler-mode-mouse-set-left-margin (start-event)
334 w (- (ruler-mode-full-window-width)
344 (defun ruler-mode-mouse-set-right-margin (start-event)
356 w (- (ruler-mode-full-window-width)
367 (defvar ruler-mode-dragged-symbol nil
372 (defun ruler-mode-mouse-grab-any-column (start-event)
376 dragging. See also the variable `ruler-mode-dragged-symbol'."
378 (setq ruler-mode-dragged-symbol nil)
383 (setq col (ruler-mode-window-col (car (posn-col-row start)))
392 ruler-mode-dragged-symbol 'fill-column)
398 ruler-mode-dragged-symbol 'comment-column)
410 ruler-mode-dragged-symbol 'goal-column)
422 (when ruler-mode-set-goal-column-ding-flag
426 (propertize (char-to-string ruler-mode-goal-column-char)
427 'face 'ruler-mode-goal-column))
430 (if (eq 'click (ruler-mode-mouse-drag-any-column-iteration
432 (when (eq 'goal-column ruler-mode-dragged-symbol)
437 ruler-mode-dragged-symbol
438 (symbol-value ruler-mode-dragged-symbol)
441 (defun ruler-mode-mouse-drag-any-column-iteration (window)
452 (ruler-mode-mouse-drag-any-column event)
453 (force-mode-line-update))))
458 (defun ruler-mode-mouse-drag-any-column (start-event)
466 (setq col (ruler-mode-window-col (car (posn-col-row end)))
469 (set ruler-mode-dragged-symbol newc)))))
472 (defun ruler-mode-mouse-add-tab-stop (start-event)
476 (when ruler-mode-show-tab-stops
483 (setq col (ruler-mode-window-col (car (posn-col-row start)))
492 (defun ruler-mode-mouse-del-tab-stop (start-event)
496 (when ruler-mode-show-tab-stops
503 (setq col (ruler-mode-window-col (car (posn-col-row start)))
511 (defun ruler-mode-toggle-show-tab-stops ()
514 (setq ruler-mode-show-tab-stops (not ruler-mode-show-tab-stops))
515 (force-mode-line-update))
518 (defvar ruler-mode-map
525 #'ruler-mode-mouse-grab-any-column)
527 #'ruler-mode-mouse-set-left-margin)
529 #'ruler-mode-mouse-set-right-margin)
531 #'ruler-mode-mouse-add-tab-stop)
533 #'ruler-mode-mouse-del-tab-stop)
535 #'ruler-mode-toggle-show-tab-stops)
547 "Keymap for ruler minor mode.")
549 (defvar ruler-mode-header-line-format-old nil
552 (defvar ruler-mode-ruler-function 'ruler-mode-ruler
556 (defconst ruler-mode-header-line-format
557 '(:eval (funcall ruler-mode-ruler-function))
558 "`header-line-format' used in ruler mode.
559 Call `ruler-mode-ruler-function' to compute the ruler value.")
562 (define-minor-mode ruler-mode
565 ruler-mode-map
566 :group 'ruler-mode
567 (if ruler-mode
569 ;; When `ruler-mode' is on save previous header line format
572 (set (make-local-variable 'ruler-mode-header-line-format-old)
574 (setq header-line-format ruler-mode-header-line-format)
575 (add-hook 'post-command-hook 'force-mode-line-update nil t))
576 ;; When `ruler-mode' is off restore previous header line format if
578 (when (eq header-line-format ruler-mode-header-line-format)
580 (when (local-variable-p 'ruler-mode-header-line-format-old)
581 (setq header-line-format ruler-mode-header-line-format-old)
582 (kill-local-variable 'ruler-mode-header-line-format-old)))
583 (remove-hook 'post-command-hook 'force-mode-line-update t)))
586 ;; Add ruler-mode to the minor mode menu in the mode line
587 (define-key mode-line-mode-menu [ruler-mode]
588 `(menu-item "Ruler" ruler-mode
589 :button (:toggle . ruler-mode)))
591 (defconst ruler-mode-ruler-help-echo
597 `ruler-mode-show-tab-stops' is nil.")
599 (defconst ruler-mode-ruler-help-echo-when-goal-column
604 `goal-column' is set and `ruler-mode-show-tab-stops' is nil.")
606 (defconst ruler-mode-ruler-help-echo-when-tab-stops
611 `ruler-mode-show-tab-stops' is non-nil.")
613 (defconst ruler-mode-fill-column-help-echo
617 (defconst ruler-mode-comment-column-help-echo
621 (defconst ruler-mode-goal-column-help-echo
627 (defconst ruler-mode-margin-help-echo
631 (defconst ruler-mode-fringe-help-echo
632 "%s fringe %S"
633 "Help string shown when mouse is over a fringe area.")
635 (defsubst ruler-mode-space (width &rest props)
641 (defun ruler-mode-ruler ()
649 (lf (ruler-mode-space
650 'left-fringe
651 'face 'ruler-mode-fringes
652 'help-echo (format ruler-mode-fringe-help-echo
654 (rf (ruler-mode-space
655 'right-fringe
656 'face 'ruler-mode-fringes
657 'help-echo (format ruler-mode-fringe-help-echo
659 (lm (ruler-mode-space
661 'face 'ruler-mode-margins
662 'help-echo (format ruler-mode-margin-help-echo
664 (rm (ruler-mode-space
666 'face 'ruler-mode-margins
667 'help-echo (format ruler-mode-margin-help-echo
669 (sb (ruler-mode-space
671 'face 'ruler-mode-pad))
677 (make-string w ruler-mode-basic-graduation-char)
678 'face 'ruler-mode-default
679 'local-map ruler-mode-map
681 (ruler-mode-show-tab-stops
682 ruler-mode-ruler-help-echo-when-tab-stops)
684 ruler-mode-ruler-help-echo-when-goal-column)
685 (ruler-mode-ruler-help-echo))))
697 i (1+ i) 'face 'ruler-mode-column-number
704 (aset ruler i ruler-mode-inter-graduation-char)))
709 (aset ruler i ruler-mode-current-column-char)
711 i (1+ i) 'face 'ruler-mode-current-column
715 (aset ruler i ruler-mode-goal-column-char)
717 i (1+ i) 'face 'ruler-mode-goal-column
720 i (1+ i) 'mouse-face 'mode-line-highlight
723 i (1+ i) 'help-echo ruler-mode-goal-column-help-echo
727 (aset ruler i ruler-mode-comment-column-char)
729 i (1+ i) 'face 'ruler-mode-comment-column
732 i (1+ i) 'mouse-face 'mode-line-highlight
735 i (1+ i) 'help-echo ruler-mode-comment-column-help-echo
739 (aset ruler i ruler-mode-fill-column-char)
741 i (1+ i) 'face 'ruler-mode-fill-column
744 i (1+ i) 'mouse-face 'mode-line-highlight
747 i (1+ i) 'help-echo ruler-mode-fill-column-help-echo
750 ((and ruler-mode-show-tab-stops (member j tab-stop-list))
751 (aset ruler i ruler-mode-tab-stop-char)
753 i (1+ i) 'face 'ruler-mode-tab-stop
767 (provide 'ruler-mode)
774 ;;; ruler-mode.el ends here