all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Luc Teirlinck <teirllm@dms.auburn.edu>
Cc: emacs-devel@gnu.org
Subject: Re: unnecessary fringe-indicators defcustom creates trouble
Date: Wed, 3 Aug 2005 20:03:04 -0500 (CDT)	[thread overview]
Message-ID: <200508040103.j74134v11621@raven.dms.auburn.edu> (raw)
In-Reply-To: <E1E0Obv-00026R-Pt@fencepost.gnu.org> (rms@gnu.org)

The patches below keep all the functionality available through the
menu bar while getting rid of `fringe-indicators'.  They implement
some changes, but that is only because I believe that they are very
much changes for the better and not because getting rid of
`fringe-indicators' requires them.  They can be undone, while still
getting rid of `fringe-indicators'.  The changes are:

1.  More descriptive help-echos.

2.  The extra choice "Other (customize)" for `indicate-buffer-boundaries'.
    If you select that one, you get a customization buffer for
    `indicate-buffer-boundaries'.  This is just to inform people that
    additional choices are available.

3.  The possibility to customize `indicate-empty-lines' and
    `indicate-buffer-boundaries' independently through the menu bar.
    This is desirable, because the two do by no means make each other
    useless. `indicate-empty-lines' does not show buffer beginning nor
    arrows.  `indicate-buffer-boundaries' does not reliably indicate
    all empty lines:  for instance, just using indicate-buffer-boundaries
    it is impossible to tell whether a buffer is completely empty or
    whether you are completely overscrolled.  Also, the isolated
    end-of-buffer glyph can easily be overwritten by some other glyph,
    much more easily than all empty lines at the end of a buffer.
    I personally enable empty line indicators to the left and boundary
    indicators to the right.  The two are absolutely not redundant.

    I also believe that it is confusing to somebody that has enabled
    `indicate-empty-lines' in some other way that enabling buffer
    boundary indicators in the right fringe gets rid of the empty line
    indicators in the left fringe.

===File ~/menu-bar-diff=====================================
*** menu-bar.el	04 Jul 2005 19:48:43 -0500	1.261
--- menu-bar.el	03 Aug 2005 18:34:45 -0500	
***************
*** 649,656 ****
  		   debug-on-quit debug-on-error
  		   tooltip-mode menu-bar-mode tool-bar-mode
  		   save-place uniquify-buffer-name-style fringe-mode
! 		   fringe-indicators case-fold-search
! 		   display-time-mode auto-compression-mode
  		   current-language-environment default-input-method
  		   ;; Saving `text-mode-hook' is somewhat questionable,
  		   ;; as we might get more than we bargain for, if
--- 649,656 ----
  		   debug-on-quit debug-on-error
  		   tooltip-mode menu-bar-mode tool-bar-mode
  		   save-place uniquify-buffer-name-style fringe-mode
! 		   indicate-empty-lines indicate-buffer-boundaries
! 		   case-fold-search display-time-mode auto-compression-mode
  		   current-language-environment default-input-method
  		   ;; Saving `text-mode-hook' is somewhat questionable,
  		   ;; as we might get more than we bargain for, if
***************
*** 717,804 ****
  			      (frame-visible-p
  			       (symbol-value 'speedbar-frame))))))
  
  
! (defvar menu-bar-showhide-fringe-ind-menu (make-sparse-keymap "Indicators"))
! 
! ;; The real definition is in fringe.el.
! ;; This is to prevent errors in the :radio conditions below.
! (setq fringe-indicators nil)
  
! (defun menu-bar-showhide-fringe-ind-empty ()
!   "Display empty line indicators in the left or right fringe."
    (interactive)
!   (require 'fringe)
!   (customize-set-variable 'fringe-indicators 'empty))
  
! (define-key menu-bar-showhide-fringe-ind-menu [empty]
!   '(menu-item "Empty lines only" menu-bar-showhide-fringe-ind-empty
! 	      :help "Show empty line indicators in fringe"
! 	      :visible (display-graphic-p)
! 	      :button (:radio . (eq fringe-indicators 'empty))))
  
  (defun menu-bar-showhide-fringe-ind-mixed ()
!   "Display top and bottom indicators in opposite fringes, arrow in right."
    (interactive)
!   (require 'fringe)
!   (customize-set-variable 'fringe-indicators 'mixed))
  
  (define-key menu-bar-showhide-fringe-ind-menu [mixed]
    '(menu-item "Opposite, arrows right" menu-bar-showhide-fringe-ind-mixed
! 	      :help "Show top/bottom indicators in opposite fringes, arrows in right"
  	      :visible (display-graphic-p)
! 	      :button (:radio . (eq fringe-indicators 'mixed))))
  
  (defun menu-bar-showhide-fringe-ind-box ()
    "Display top and bottom indicators in opposite fringes."
    (interactive)
!   (require 'fringe)
!   (customize-set-variable 'fringe-indicators 'box))
  
  (define-key menu-bar-showhide-fringe-ind-menu [box]
    '(menu-item "Opposite, no arrows" menu-bar-showhide-fringe-ind-box
  	      :help "Show top/bottom indicators in opposite fringes, no arrows"
  	      :visible (display-graphic-p)
! 	      :button (:radio . (eq fringe-indicators 'box))))
  
  (defun menu-bar-showhide-fringe-ind-right ()
!   "Display fringe indicators in the right fringe."
    (interactive)
!   (require 'fringe)
!   (customize-set-variable 'fringe-indicators 'right))
  
  (define-key menu-bar-showhide-fringe-ind-menu [right]
    '(menu-item "In right fringe" menu-bar-showhide-fringe-ind-right
! 	      :help "Show indicators in right fringe"
  	      :visible (display-graphic-p)
! 	      :button (:radio . (eq fringe-indicators 'right))))
  
  (defun menu-bar-showhide-fringe-ind-left ()
!   "Display fringe indicators in the left fringe."
    (interactive)
!   (require 'fringe)
!   (customize-set-variable 'fringe-indicators 'left))
  
  (define-key menu-bar-showhide-fringe-ind-menu [left]
    '(menu-item "In left fringe" menu-bar-showhide-fringe-ind-left
! 	      :help "Show indicators in left fringe"
  	      :visible (display-graphic-p)
! 	      :button (:radio . (eq fringe-indicators 'left))))
  
  (defun menu-bar-showhide-fringe-ind-none ()
!   "Do not display any fringe indicators."
    (interactive)
!   (require 'fringe)
!   (customize-set-variable 'fringe-indicators nil))
  
  (define-key menu-bar-showhide-fringe-ind-menu [none]
    '(menu-item "No indicators" menu-bar-showhide-fringe-ind-none
! 	      :help "Hide all fringe indicators"
  	      :visible (display-graphic-p)
! 	      :button (:radio . (eq fringe-indicators nil))))
! 
  
  
! (defvar menu-bar-showhide-fringe-menu (make-sparse-keymap "Fringe"))
  
  (defun menu-bar-showhide-fringe-menu-customize ()
    "Show customization buffer for `fringe-mode'."
--- 717,808 ----
  			      (frame-visible-p
  			       (symbol-value 'speedbar-frame))))))
  
+ (defvar menu-bar-showhide-fringe-menu (make-sparse-keymap "Fringe"))
  
! (defvar menu-bar-showhide-fringe-ind-menu
!   (make-sparse-keymap "Buffer boundaries"))
  
! (defun menu-bar-showhide-boundaries-menu-customize ()
!   "Show customization buffer for `indicate-buffer-boundaries'."
    (interactive)
!   (customize-variable 'indicate-buffer-boundaries))
  
! (define-key menu-bar-showhide-fringe-ind-menu [customize]
!   '(menu-item "Other (customize)"
! 	      menu-bar-showhide-boundaries-menu-customize
! 	      :help "Additional choices available through Custom buffer"
! 	      :visible (display-graphic-p)))
  
  (defun menu-bar-showhide-fringe-ind-mixed ()
!   "Display top and bottom indicators in opposite fringes, arrows in right."
    (interactive)
!   (customize-set-variable 'indicate-buffer-boundaries
! 			  '((t . right) (top . left))))
  
  (define-key menu-bar-showhide-fringe-ind-menu [mixed]
    '(menu-item "Opposite, arrows right" menu-bar-showhide-fringe-ind-mixed
! 	      :help
! 	      "Show top/bottom indicators in opposite fringes, arrows in right"
  	      :visible (display-graphic-p)
! 	      :button (:radio . (eq indicate-buffer-boundaries
! 				    '((t . right) (top . left))))))
  
  (defun menu-bar-showhide-fringe-ind-box ()
    "Display top and bottom indicators in opposite fringes."
    (interactive)
!   (customize-set-variable 'indicate-buffer-boundaries
! 			  '((top . left) (bottom . right))))
  
  (define-key menu-bar-showhide-fringe-ind-menu [box]
    '(menu-item "Opposite, no arrows" menu-bar-showhide-fringe-ind-box
  	      :help "Show top/bottom indicators in opposite fringes, no arrows"
  	      :visible (display-graphic-p)
! 	      :button (:radio . (eq indicate-buffer-boundaries
! 				    '((top . left) (bottom . right))))))
  
  (defun menu-bar-showhide-fringe-ind-right ()
!   "Display buffer boundaries and arrows in the right fringe."
    (interactive)
!   (customize-set-variable 'indicate-buffer-boundaries 'right))
  
  (define-key menu-bar-showhide-fringe-ind-menu [right]
    '(menu-item "In right fringe" menu-bar-showhide-fringe-ind-right
! 	      :help "Show buffer boundaries and arrows in right fringe"
  	      :visible (display-graphic-p)
! 	      :button (:radio . (eq indicate-buffer-boundaries 'right))))
  
  (defun menu-bar-showhide-fringe-ind-left ()
!   "Display buffer boundaries and arrows in the left fringe."
    (interactive)
!   (customize-set-variable 'indicate-buffer-boundaries 'left))
  
  (define-key menu-bar-showhide-fringe-ind-menu [left]
    '(menu-item "In left fringe" menu-bar-showhide-fringe-ind-left
! 	      :help "Show buffer boundaries and arrows in left fringe"
  	      :visible (display-graphic-p)
! 	      :button (:radio . (eq indicate-buffer-boundaries 'left))))
  
  (defun menu-bar-showhide-fringe-ind-none ()
!   "Do not display any buffer boundary indicators."
    (interactive)
!   (customize-set-variable 'indicate-buffer-boundaries nil))
  
  (define-key menu-bar-showhide-fringe-ind-menu [none]
    '(menu-item "No indicators" menu-bar-showhide-fringe-ind-none
! 	      :help "Hide all buffer boundary indicators and arrows"
  	      :visible (display-graphic-p)
! 	      :button (:radio . (eq indicate-buffer-boundaries nil))))
  
+ (define-key menu-bar-showhide-fringe-menu [showhide-fringe-ind]
+   (list 'menu-item "Buffer boundaries" menu-bar-showhide-fringe-ind-menu
+ 	:visible `(display-graphic-p)
+ 	:help "Indicate buffer boundaries in fringe"))
  
! (define-key menu-bar-showhide-fringe-menu [indicate-empty-lines]
!   (menu-bar-make-toggle toggle-indicate-empty-lines indicate-empty-lines
! 			"Empty line indicators"
! 			"Indicating of empty lines %s"
! 			"Indicate trailing empty lines in fringe"))
  
  (defun menu-bar-showhide-fringe-menu-customize ()
    "Show customization buffer for `fringe-mode'."
***************
*** 806,812 ****
    (customize-variable 'fringe-mode))
  
  (define-key menu-bar-showhide-fringe-menu [customize]
!   '(menu-item "Customize" menu-bar-showhide-fringe-menu-customize
  	      :help "Detailed customization of fringe"
  	      :visible (display-graphic-p)))
  
--- 810,816 ----
    (customize-variable 'fringe-mode))
  
  (define-key menu-bar-showhide-fringe-menu [customize]
!   '(menu-item "Customize fringe" menu-bar-showhide-fringe-menu-customize
  	      :help "Detailed customization of fringe"
  	      :visible (display-graphic-p)))
  
***************
*** 815,829 ****
    (interactive)
    (customize-set-variable 'fringe-mode nil))
  
- (define-key menu-bar-showhide-fringe-menu [showhide-fringe-ind]
-   (list 'menu-item "Indicators" menu-bar-showhide-fringe-ind-menu
- 	:visible `(display-graphic-p)
- 	:help "Select fringe mode"))
- 
- ;; The real definition is in fringe.el.
- ;; This is to prevent errors in the :radio conditions below.
- (setq fringe-mode nil)
- 
  (define-key menu-bar-showhide-fringe-menu [default]
    '(menu-item "Default" menu-bar-showhide-fringe-menu-customize-reset
  	      :help "Default width fringe on both left and right side"
--- 819,824 ----
============================================================

===File ~/fringe-diff=======================================
*** fringe.el	09 Jul 2005 19:13:39 -0500	1.20
--- fringe.el	02 Aug 2005 07:49:07 -0500	
***************
*** 260,302 ****
  	       0)
             (float (frame-char-width))))
  
- ;; Fake defvar.  Real definition using defcustom is below.  The fake
- ;; defvar is necessary because `fringe-indicators' and
- ;; `set-fringe-indicators-1' mutually use each other.
- (defvar fringe-indicators)
- 
- (defun set-fringe-indicators-1 (ignore value)
-   "Set fringe indicators according to VALUE.
- This is usually invoked when setting `fringe-indicators' via customize."
-   (setq fringe-indicators value)
-   (setq default-indicate-empty-lines nil)
-   (setq default-indicate-buffer-boundaries
- 	(cond
- 	 ((memq value '(left right t))
- 	  value)
- 	 ((eq value 'box)
- 	  '((top . left) (bottom . right)))
- 	 ((eq value 'mixed)
- 	  '((top . left) (t . right)))
- 	 ((eq value 'empty)
- 	  (setq default-indicate-empty-lines t)
- 	  nil)
- 	 (t nil))))
- 
- ;;;###autoload
- (defcustom fringe-indicators nil
-   "Visually indicate buffer boundaries and scrolling.
- Setting this variable, changes `default-indicate-buffer-boundaries'."
-   :type '(choice (const :tag "No indicators" nil)
- 		 (const :tag "On left" left)
- 		 (const :tag "On right" right)
- 		 (const :tag "Opposite, no arrows" box)
- 		 (const :tag "Opposite, arrows right" mixed)
- 		 (const :tag "Empty lines" empty))
-   :group 'fringe
-   :require 'fringe
-   :set 'set-fringe-indicators-1)
- 
  (provide 'fringe)
  
  ;;; arch-tag: 6611ef60-0869-47ed-8b93-587ee7d3ff5d
--- 260,265 ----
============================================================

  reply	other threads:[~2005-08-04  1:03 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-07-29  1:13 unnecessary fringe-indicators defcustom creates trouble Luc Teirlinck
2005-07-29 15:29 ` Kim F. Storm
2005-07-30  4:02   ` Luc Teirlinck
2005-08-01  0:45 ` Richard M. Stallman
2005-08-01  2:47   ` Luc Teirlinck
2005-08-01 16:45     ` Richard M. Stallman
     [not found]       ` <200508012118.j71LI0N06793@raven.dms.auburn.edu>
2005-08-02 17:44         ` Richard M. Stallman
2005-08-02 20:31           ` Luc Teirlinck
2005-08-03 19:09             ` Richard M. Stallman
2005-08-04  1:03               ` Luc Teirlinck [this message]
2005-08-04  2:49                 ` Luc Teirlinck
2005-08-06 18:36                   ` Richard M. Stallman
2005-08-06 18:36                 ` Richard M. Stallman
2005-08-01  4:04   ` Luc Teirlinck

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200508040103.j74134v11621@raven.dms.auburn.edu \
    --to=teirllm@dms.auburn.edu \
    --cc=emacs-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.