Mercurial > emacs
changeset 42328:58de0a625e52
(texinfo-show-structure): Display the line showing the current location
in the middle of the window.
author | Robert J. Chassell <bob@rattlesnake.com> |
---|---|
date | Tue, 25 Dec 2001 16:16:22 +0000 |
parents | 86a0b7cc1600 |
children | 9638b242156c |
files | lisp/textmodes/texinfo.el |
diffstat | 1 files changed, 43 insertions(+), 18 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/textmodes/texinfo.el Tue Dec 25 15:32:10 2001 +0000 +++ b/lisp/textmodes/texinfo.el Tue Dec 25 16:16:22 2001 +0000 @@ -872,28 +872,53 @@ Lines with structuring commands beginning in them are displayed in another buffer named `*Occur*'. In that buffer, you can move point to -one of those lines and then use \\<occur-mode-map>\\[occur-mode-goto-occurrence], +one of those lines and then use +\\<occur-mode-map>\\[occur-mode-goto-occurrence], to jump to the corresponding spot in the Texinfo source file." (interactive "P") - (save-excursion + ;; First, remember current location + (let ((source-buffer (current-buffer)) + current-location) + (save-excursion + (end-of-line) ; so as to find section on current line + (if (re-search-backward + ;; do not require `texinfo-section-types-regexp' in texnfo-upd.el + "^@\\(chapter \\|sect\\|subs\\|subh\\|unnum\\|major\\|chapheading \\|heading \\|appendix\\)" + nil t) + (setq current-location + (progn + (beginning-of-line) + (buffer-substring (point) (progn (end-of-line) (point))))) + ;; else point is located before before any section command + (setq current-location "tex"))) + ;; Second, create and format an *Occur* buffer + (save-excursion + (goto-char (point-min)) + (if nodes-too + (occur (concat "^@node\\>\\|" outline-regexp)) + (occur outline-regexp))) + (pop-to-buffer "*Occur*") (goto-char (point-min)) - (if nodes-too - (occur (concat "^@node\\>\\|" outline-regexp)) - (occur outline-regexp))) - (pop-to-buffer "*Occur*") - (goto-char (point-min)) - (let ((inhibit-read-only t)) - (flush-lines "-----") - ;; Now format the "*Occur*" buffer to show the structure. - ;; Thanks to ceder@signum.se (Per Cederqvist) - (goto-char (point-max)) - (let (level) - (while (re-search-backward "^ *[0-9]*:@\\(\\sw+\\)" nil 0) - (goto-char (1- (match-beginning 1))) - (setq level (or (cadr (assoc (match-string 1) texinfo-section-list)) 2)) - (indent-to-column (+ (current-column) (* 4 (- level 2)))) - (beginning-of-line))))) + (let ((inhibit-read-only t)) + (flush-lines "-----") + ;; Now format the "*Occur*" buffer to show the structure. + ;; Thanks to ceder@signum.se (Per Cederqvist) + (goto-char (point-max)) + (let (level) + (while (re-search-backward "^ *[0-9]*:@\\(\\sw+\\)" nil 0) + (goto-char (1- (match-beginning 1))) + (setq level + (or (cadr (assoc (match-string 1) texinfo-section-list)) 2)) + (indent-to-column (+ (current-column) (* 4 (- level 2)))) + (beginning-of-line)))) + ;; Third, go to line corresponding to location in source file + ;; potential bug: two exactly similar `current-location' lines ... + (goto-char (point-min)) + (re-search-forward current-location nil t) + (beginning-of-line) + )) + ;;; The tex and print function definitions: