changeset 51435:13588bcc615a

(Info-fontify-node): Use :align-to display prop. Use `invisible' rather than `display' prop to hide text.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Tue, 03 Jun 2003 20:28:21 +0000
parents 4c85e6a5a9d2
children 84e38964119a
files lisp/info.el
diffstat 1 files changed, 34 insertions(+), 27 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/info.el	Tue Jun 03 19:54:42 2003 +0000
+++ b/lisp/info.el	Tue Jun 03 20:28:21 2003 +0000
@@ -2903,33 +2903,40 @@
 	      (set-marker m nil))))
 
 	(goto-char (point-min))
-	(if (and (search-forward "\n* Menu:" nil t)
-		 (not (string-match "\\<Index\\>" Info-current-node))
-		 ;; Don't take time to annotate huge menus
-		 (< (- (point-max) (point)) Info-fontify-maximum-menu-size))
-	    (let ((n 0)
-		  cont)
-	      (while (re-search-forward "^\\* +\\([^:\t\n]*\\)\\(:[^.,:(]*\\(([^)]*)[^.,:]*\\)?[,:.][ \t]*\\)" nil t)
-		(setq n (1+ n))
-		(if (zerop (% n 3)) ; visual aids to help with 1-9 keys
-		    (put-text-property (match-beginning 0)
-				       (1+ (match-beginning 0))
-				       'font-lock-face 'info-menu-5))
-		(add-text-properties (match-beginning 1) (match-end 1)
-				     '(font-lock-face info-xref
-				       mouse-face highlight
-				       help-echo "mouse-2: go to this node"))
-		(when (eq Info-hide-note-references t)
-		  (add-text-properties (match-beginning 2) (match-end 2)
-				       (list 'display
-					     (make-string (max 2 (- 22 (- (match-end 1) (match-beginning 1)))) ? )))
-		  (setq cont (looking-at "[ \t]*[^\n]")))
-		(if (eq Info-hide-note-references t)
-		    (while (and (= (forward-line 1) 0)
-				(looking-at "\\([ \t]+\\)[^*\n]"))
-		      (add-text-properties (match-beginning 1) (match-end 1)
-					   (list 'display (make-string (+ 22 (if cont 4 2)) ? )))
-		      (setq cont t))))))
+	(when (and (search-forward "\n* Menu:" nil t)
+		   (not (string-match "\\<Index\\>" Info-current-node))
+		   ;; Don't take time to annotate huge menus
+		   (< (- (point-max) (point)) Info-fontify-maximum-menu-size))
+	  (let ((n 0)
+		cont)
+	    (while (re-search-forward "^\\* +\\([^:\t\n]*\\)\\(:[^.,:(]*\\(([^)]*)[^.,:]*\\)?[,:.]\\([ \t]*\\)\\)" nil t)
+	      (setq n (1+ n))
+	      (if (zerop (% n 3))	; visual aids to help with 1-9 keys
+		  (put-text-property (match-beginning 0)
+				     (1+ (match-beginning 0))
+				     'font-lock-face 'info-menu-5))
+	      (add-text-properties (match-beginning 1) (match-end 1)
+				   '(font-lock-face info-xref
+				     mouse-face highlight
+				     help-echo "mouse-2: go to this node"))
+	      (when (eq Info-hide-note-references t)
+		(put-text-property (match-beginning 2) (match-beginning 4)
+				   'invisible t)
+		;; We need a stretchable space like :align-to but with
+		;; a minimum value.
+		(put-text-property (match-beginning 4) (match-end 4) 'display
+				   (if (>= 22 (- (match-end 1)
+						 (match-beginning 0)))
+				       '(space :align-to 24)
+				     '(space :width 2)))
+		(setq cont (looking-at "."))
+		(while (and (= (forward-line 1) 0)
+			    (looking-at "\\([ \t]+\\)[^*\n]"))
+		  (put-text-property (match-beginning 1) (match-end 1) 'display
+				     (if cont
+					 '(space :align-to 26)
+				       '(space :align-to 24)))
+		  (setq cont t))))))
 
 	(Info-fontify-menu-headers)
 	(set-buffer-modified-p nil)))))