changeset 96843:cc8f5c6c468e

(visual-line): New custom group. (visual-line-fringe-indicators): New var. (visual-line-mode): Set fringe-indicator-alist based on visual-line-fringe-indicators.
author Chong Yidong <cyd@stupidchicken.com>
date Mon, 21 Jul 2008 03:50:17 +0000
parents a6bc7ef623c5
children 767c19ce14e0
files lisp/simple.el
diffstat 1 files changed, 40 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/simple.el	Mon Jul 21 03:49:58 2008 +0000
+++ b/lisp/simple.el	Mon Jul 21 03:50:17 2008 +0000
@@ -4466,6 +4466,11 @@
     (with-no-warnings
       (previous-line arg try-vscroll))))
 
+(defgroup visual-line nil
+  "Editing based on visual lines."
+  :group 'convenience
+  :version "23.1")
+
 (defvar visual-line-mode-map
   (let ((map (make-sparse-keymap)))
     (define-key map [remap kill-line] 'kill-visual-line)
@@ -4475,16 +4480,47 @@
     (define-key map "\M-]" 'next-logical-line)
     map))
 
+(defcustom visual-line-fringe-indicators '(nil nil)
+  "How fringe indicators are shown for wrapped lines in `visual-line-mode'.
+The value should be a list of the form (LEFT RIGHT), where LEFT
+and RIGHT are symbols representing the bitmaps to display, to
+indicate wrapped lines, in the left and right fringes respectively.
+See also `fringe-indicator-alist'.
+The default is not to display fringe indicators for wrapped lines.
+This variable does not affect fringe indicators displayed for
+other purposes."
+  :type '(list (choice (const :tag "Hide left indicator" nil)
+		       (const :tag "Left curly arrow" left-curly-arrow)
+		       (symbol :tag "Other bitmap"))
+	       (choice (const :tag "Hide right indicator" nil)
+		       (const :tag "Right curly arrow" right-curly-arrow)
+		       (symbol :tag "Other bitmap")))
+  :set (lambda (symbol value)
+	 (dolist (buf (buffer-list))
+	   (with-current-buffer buf
+	     (when (and (boundp 'visual-line-mode)
+			(symbol-value 'visual-line-mode))
+	       (setq fringe-indicator-alist
+		     (cons (cons 'continuation value)
+			   (assq-delete-all
+			    'continuation
+			    (copy-tree fringe-indicator-alist)))))))
+	 (set-default symbol value)))
+
 (define-minor-mode visual-line-mode
-  "Define key binding for visual line moves."
+  "Redefine simple editing commands to act on visual lines, not logical lines."
   :keymap visual-line-mode-map
-  :group 'convenience
+  :group 'visual-line
   (if visual-line-mode
       (progn
 	(set (make-local-variable 'line-move-visual) t)
-	(setq word-wrap t))
+	(setq word-wrap t)
+	(setq fringe-indicator-alist
+	      (cons (cons 'continuation visual-line-fringe-indicators)
+		    fringe-indicator-alist)))
     (kill-local-variable 'line-move-visual)
-    (kill-local-variable 'word-wrap)))
+    (kill-local-variable 'word-wrap)
+    (kill-local-variable 'fringe-indicator-alist)))
 
 (defun turn-on-visual-line-mode ()
   (visual-line-mode 1))