mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-02-07 20:54:32 +00:00
(Info-find-file): Check for symbols apropos',
history',
`toc' in the input filename, and return these symbols as is. (Info-find-node-2): Set Info-current-file to symbols `apropos', `history', `toc' instead of strings. (Info-set-mode-line): For non-string Info-current-file use the symbol's name inside **. (Info-isearch-push-state): Add quote before Info-current-file and Info-current-node. (Info-isearch-pop-state): Use `equal' instead of `string='. (Info-extract-pointer, Info-following-node-name): Use `match-string-no-properties' instead of `match-string'. (Info-up): Check `old-file' for `stringp'. (Info-history): Use `equal' instead of `string-equal'. Check `file' for `stringp'. (Info-history): Use symbol `history' instead of string as first arg of `Info-find-node'. (Info-toc): Check `Info-current-file' for `stringp'. Use symbol `toc' instead of string. (Info-extract-menu-node-name): Use `buffer-substring-no-properties' instead of `buffer-substring', and `match-string-no-properties' instead of `match-string'. (Info-index-nodes): Check for symbols `apropos', `history', `toc' instead of strings. (info-apropos): Use `Info-find-node' instead of `Info-goto-node'. Use symbol `apropos' instead of string. (Info-copy-current-node-name): Check `Info-current-file' for `stringp' and construct a command with `Info-find-node' from it. (Info-fontify-node): Use `match-string-no-properties' instead of `match-string' and check file names for `stringp'. (Info-desktop-buffer-misc-data): Check for symbols `apropos', `history', `toc' instead of strings.
This commit is contained in:
parent
2f457246e7
commit
bec275ed0a
@ -1,3 +1,37 @@
|
||||
2006-02-17 Juri Linkov <juri@jurta.org>
|
||||
|
||||
* info.el (Info-find-file): Check for symbols `apropos', `history',
|
||||
`toc' in the input filename, and return these symbols as is.
|
||||
(Info-find-node-2): Set Info-current-file to symbols `apropos',
|
||||
`history', `toc' instead of strings.
|
||||
(Info-set-mode-line): For non-string Info-current-file use the
|
||||
symbol's name inside **.
|
||||
(Info-isearch-push-state): Add quote before Info-current-file and
|
||||
Info-current-node.
|
||||
(Info-isearch-pop-state): Use `equal' instead of `string='.
|
||||
(Info-extract-pointer, Info-following-node-name): Use
|
||||
`match-string-no-properties' instead of `match-string'.
|
||||
(Info-up): Check `old-file' for `stringp'.
|
||||
(Info-history): Use `equal' instead of `string-equal'.
|
||||
Check `file' for `stringp'.
|
||||
(Info-history): Use symbol `history' instead of string as first arg
|
||||
of `Info-find-node'.
|
||||
(Info-toc): Check `Info-current-file' for `stringp'. Use symbol
|
||||
`toc' instead of string.
|
||||
(Info-extract-menu-node-name): Use `buffer-substring-no-properties'
|
||||
instead of `buffer-substring', and `match-string-no-properties'
|
||||
instead of `match-string'.
|
||||
(Info-index-nodes): Check for symbols `apropos', `history', `toc'
|
||||
instead of strings.
|
||||
(info-apropos): Use `Info-find-node' instead of `Info-goto-node'.
|
||||
Use symbol `apropos' instead of string.
|
||||
(Info-copy-current-node-name): Check `Info-current-file' for
|
||||
`stringp' and construct a command with `Info-find-node' from it.
|
||||
(Info-fontify-node): Use `match-string-no-properties' instead of
|
||||
`match-string' and check file names for `stringp'.
|
||||
(Info-desktop-buffer-misc-data): Check for symbols `apropos',
|
||||
`history', `toc' instead of strings.
|
||||
|
||||
2006-02-17 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* files.el: Rearrange functions and variables in the file local
|
||||
|
168
lisp/info.el
168
lisp/info.el
@ -622,12 +622,6 @@ just return nil (no error)."
|
||||
(cond
|
||||
((string= (downcase filename) "dir")
|
||||
(setq found t))
|
||||
((string= filename "apropos")
|
||||
(setq found 'apropos))
|
||||
((string= filename "history")
|
||||
(setq found 'history))
|
||||
((string= filename "toc")
|
||||
(setq found 'toc))
|
||||
(t
|
||||
(let ((dirs (if (string-match "^\\./" filename)
|
||||
;; If specified name starts with `./'
|
||||
@ -673,7 +667,8 @@ just return nil (no error)."
|
||||
(if noerror
|
||||
(setq filename nil)
|
||||
(error "Info file %s does not exist" filename)))
|
||||
filename)))
|
||||
filename)
|
||||
(and (member filename '(apropos history toc)) filename)))
|
||||
|
||||
(defun Info-find-node (filename nodename &optional no-going-back)
|
||||
"Go to an Info node specified as separate FILENAME and NODENAME.
|
||||
@ -891,9 +886,6 @@ a case-insensitive match is tried."
|
||||
(setq Info-current-file
|
||||
(cond
|
||||
((eq filename t) "dir")
|
||||
((eq filename 'apropos) "apropos")
|
||||
((eq filename 'history) "history")
|
||||
((eq filename 'toc) "toc")
|
||||
(t filename)))
|
||||
))
|
||||
;; Use string-equal, not equal, to ignore text props.
|
||||
@ -1409,7 +1401,7 @@ any double quotes or backslashes must be escaped (\\\",\\\\)."
|
||||
(if (stringp Info-current-file)
|
||||
(replace-regexp-in-string
|
||||
"%" "%%" (file-name-nondirectory Info-current-file))
|
||||
"")
|
||||
(format "*%S*" Info-current-file))
|
||||
") "
|
||||
(if Info-current-node
|
||||
(propertize (replace-regexp-in-string
|
||||
@ -1831,11 +1823,11 @@ If DIRECTION is `backward', search in the reverse direction."
|
||||
|
||||
(defun Info-isearch-push-state ()
|
||||
`(lambda (cmd)
|
||||
(Info-isearch-pop-state cmd ,Info-current-file ,Info-current-node)))
|
||||
(Info-isearch-pop-state cmd ',Info-current-file ',Info-current-node)))
|
||||
|
||||
(defun Info-isearch-pop-state (cmd file node)
|
||||
(or (and (string= Info-current-file file)
|
||||
(string= Info-current-node node))
|
||||
(or (and (equal Info-current-file file)
|
||||
(equal Info-current-node node))
|
||||
(progn (Info-find-node file node) (sit-for 0))))
|
||||
|
||||
(defun Info-isearch-start ()
|
||||
@ -1853,7 +1845,7 @@ if ERRORNAME is nil, just return nil."
|
||||
(forward-line 1)
|
||||
(cond ((re-search-backward
|
||||
(concat name ":" (Info-following-node-name-re)) bound t)
|
||||
(match-string 1))
|
||||
(match-string-no-properties 1))
|
||||
((not (eq errorname t))
|
||||
(error "Node has no %s"
|
||||
(capitalize (or errorname name)))))))))
|
||||
@ -1875,7 +1867,7 @@ End of submatch 0, 1, and 3 are the same, so you can safely concat."
|
||||
;;; For compatibility; other files have used this name.
|
||||
(defun Info-following-node-name ()
|
||||
(and (looking-at (Info-following-node-name-re))
|
||||
(match-string 1)))
|
||||
(match-string-no-properties 1)))
|
||||
|
||||
(defun Info-next ()
|
||||
"Go to the next node of this node."
|
||||
@ -1909,7 +1901,8 @@ If SAME-FILE is non-nil, do not move to a different Info file."
|
||||
(Info-goto-node node)
|
||||
(setq p (point))
|
||||
(goto-char (point-min))
|
||||
(if (and (search-forward "\n* Menu:" nil t)
|
||||
(if (and (stringp old-file)
|
||||
(search-forward "\n* Menu:" nil t)
|
||||
(re-search-forward
|
||||
(if (string-equal old-node "Top")
|
||||
(concat "\n\\*[^:]+: +(" (file-name-nondirectory old-file) ")")
|
||||
@ -1977,51 +1970,53 @@ If SAME-FILE is non-nil, do not move to a different Info file."
|
||||
(while hl
|
||||
(let ((file (nth 0 (car hl)))
|
||||
(node (nth 1 (car hl))))
|
||||
(if (and (string-equal file curr-file)
|
||||
(string-equal node curr-node))
|
||||
(if (and (equal file curr-file)
|
||||
(equal node curr-node))
|
||||
(setq p (point)))
|
||||
(insert "* " node ": ("
|
||||
(propertize (or (file-name-directory file) "") 'invisible t)
|
||||
(file-name-nondirectory file)
|
||||
")" node ".\n"))
|
||||
(if (stringp file)
|
||||
(insert "* " node ": ("
|
||||
(propertize (or (file-name-directory file) "") 'invisible t)
|
||||
(file-name-nondirectory file)
|
||||
")" node ".\n")))
|
||||
(setq hl (cdr hl))))))
|
||||
(Info-find-node "history" "Top")
|
||||
(Info-find-node 'history "Top")
|
||||
(goto-char (or p (point-min)))))
|
||||
|
||||
(defun Info-toc ()
|
||||
"Go to a node with table of contents of the current Info file.
|
||||
Table of contents is created from the tree structure of menus."
|
||||
(interactive)
|
||||
(let ((curr-file (substring-no-properties Info-current-file))
|
||||
(curr-node (substring-no-properties Info-current-node))
|
||||
p)
|
||||
(with-current-buffer (get-buffer-create " *info-toc*")
|
||||
(let ((inhibit-read-only t)
|
||||
(node-list (Info-build-toc curr-file)))
|
||||
(erase-buffer)
|
||||
(goto-char (point-min))
|
||||
(insert "\n\^_\nFile: toc, Node: Top, Up: (dir)\n\n")
|
||||
(insert "Table of Contents\n*****************\n\n")
|
||||
(insert "*Note Top: (" curr-file ")Top.\n")
|
||||
(Info-insert-toc
|
||||
(nth 2 (assoc "Top" node-list)) ; get Top nodes
|
||||
node-list 0 curr-file))
|
||||
(if (not (bobp))
|
||||
(let ((Info-hide-note-references 'hide)
|
||||
(Info-fontify-visited-nodes nil))
|
||||
(Info-mode)
|
||||
(setq Info-current-file "toc" Info-current-node "Top")
|
||||
(goto-char (point-min))
|
||||
(narrow-to-region (or (re-search-forward "\n[\^_\f]\n" nil t)
|
||||
(point-min))
|
||||
(point-max))
|
||||
(Info-fontify-node)
|
||||
(widen)))
|
||||
(goto-char (point-min))
|
||||
(if (setq p (search-forward (concat "*Note " curr-node ":") nil t))
|
||||
(setq p (- p (length curr-node) 2))))
|
||||
(Info-find-node "toc" "Top")
|
||||
(goto-char (or p (point-min)))))
|
||||
(if (stringp Info-current-file)
|
||||
(let ((curr-file (substring-no-properties Info-current-file))
|
||||
(curr-node (substring-no-properties Info-current-node))
|
||||
p)
|
||||
(with-current-buffer (get-buffer-create " *info-toc*")
|
||||
(let ((inhibit-read-only t)
|
||||
(node-list (Info-build-toc curr-file)))
|
||||
(erase-buffer)
|
||||
(goto-char (point-min))
|
||||
(insert "\n\^_\nFile: toc, Node: Top, Up: (dir)\n\n")
|
||||
(insert "Table of Contents\n*****************\n\n")
|
||||
(insert "*Note Top: (" curr-file ")Top.\n")
|
||||
(Info-insert-toc
|
||||
(nth 2 (assoc "Top" node-list)) ; get Top nodes
|
||||
node-list 0 curr-file))
|
||||
(if (not (bobp))
|
||||
(let ((Info-hide-note-references 'hide)
|
||||
(Info-fontify-visited-nodes nil))
|
||||
(Info-mode)
|
||||
(setq Info-current-file 'toc Info-current-node "Top")
|
||||
(goto-char (point-min))
|
||||
(narrow-to-region (or (re-search-forward "\n[\^_\f]\n" nil t)
|
||||
(point-min))
|
||||
(point-max))
|
||||
(Info-fontify-node)
|
||||
(widen)))
|
||||
(goto-char (point-min))
|
||||
(if (setq p (search-forward (concat "*Note " curr-node ":") nil t))
|
||||
(setq p (- p (length curr-node) 2))))
|
||||
(Info-find-node 'toc "Top")
|
||||
(goto-char (or p (point-min))))))
|
||||
|
||||
(defun Info-insert-toc (nodes node-list level curr-file)
|
||||
"Insert table of contents with references to nodes."
|
||||
@ -2221,16 +2216,18 @@ Because of ambiguities, this should be concatenated with something like
|
||||
(setq Info-point-loc
|
||||
(if (match-beginning 5)
|
||||
(string-to-number (match-string 5))
|
||||
(buffer-substring (match-beginning 0) (1- (match-beginning 1)))))
|
||||
(buffer-substring-no-properties
|
||||
(match-beginning 0) (1- (match-beginning 1)))))
|
||||
;;; Uncomment next line to use names of cross-references in non-index nodes:
|
||||
;;; (setq Info-point-loc
|
||||
;;; (buffer-substring (match-beginning 0) (1- (match-beginning 1))))
|
||||
)
|
||||
(replace-regexp-in-string
|
||||
"[ \n]+" " "
|
||||
(or (match-string 2)
|
||||
(or (match-string-no-properties 2)
|
||||
;; If the node name is the menu entry name (using `entry::').
|
||||
(buffer-substring (match-beginning 0) (1- (match-beginning 1)))))))
|
||||
(buffer-substring-no-properties
|
||||
(match-beginning 0) (1- (match-beginning 1)))))))
|
||||
|
||||
;; No one calls this.
|
||||
;;(defun Info-menu-item-sequence (list)
|
||||
@ -2684,7 +2681,7 @@ following nodes whose names also contain the word \"Index\"."
|
||||
(or file (setq file Info-current-file))
|
||||
(or (assoc file Info-index-nodes)
|
||||
;; Skip virtual Info files
|
||||
(and (member file '("dir" "history" "toc" "apropos"))
|
||||
(and (member file '("dir" apropos history toc))
|
||||
(setq Info-index-nodes (cons (cons file nil) Info-index-nodes)))
|
||||
(not (stringp file))
|
||||
(if Info-file-supports-index-cookies
|
||||
@ -2926,7 +2923,7 @@ Build a menu of the possible matches."
|
||||
(message "%s" (if (eq (car-safe err) 'error)
|
||||
(nth 1 err) err))
|
||||
(sit-for 1 t)))))
|
||||
(Info-goto-node (concat "(" current-file ")" current-node))
|
||||
(Info-find-node current-file current-node)
|
||||
(setq Info-history ohist
|
||||
Info-history-list ohist-list)
|
||||
(message "Searching indices...done")
|
||||
@ -2945,7 +2942,7 @@ Build a menu of the possible matches."
|
||||
(if (nth 3 entry)
|
||||
(concat " (line " (nth 3 entry) ")")
|
||||
"")))))
|
||||
(Info-find-node "apropos" "Index")
|
||||
(Info-find-node 'apropos "Index")
|
||||
(setq Info-complete-cache nil)))))
|
||||
|
||||
(defun Info-undefined ()
|
||||
@ -3287,10 +3284,14 @@ With a zero prefix arg, put the name inside a function call to `info'."
|
||||
(interactive "P")
|
||||
(unless Info-current-node
|
||||
(error "No current Info node"))
|
||||
(let ((node (concat "(" (file-name-nondirectory Info-current-file) ")"
|
||||
Info-current-node)))
|
||||
(let ((node (if (stringp Info-current-file)
|
||||
(concat "(" (file-name-nondirectory Info-current-file) ")"
|
||||
Info-current-node))))
|
||||
(if (zerop (prefix-numeric-value arg))
|
||||
(setq node (concat "(info \"" node "\")")))
|
||||
(unless (stringp Info-current-file)
|
||||
(setq node (format "(Info-find-node '%S '%S)"
|
||||
Info-current-file Info-current-node)))
|
||||
(kill-new node)
|
||||
(message "%s" node)))
|
||||
|
||||
@ -3817,29 +3818,30 @@ the variable `Info-file-list-for-emacs'."
|
||||
"^[ \t]+" ""
|
||||
(replace-regexp-in-string
|
||||
"[ \t\n]+" " "
|
||||
(or (match-string 5)
|
||||
(or (match-string-no-properties 5)
|
||||
(and (not (equal (match-string 4) ""))
|
||||
(match-string 4))
|
||||
(match-string 2)))))
|
||||
(match-string-no-properties 4))
|
||||
(match-string-no-properties 2)))))
|
||||
(external-link-p
|
||||
(string-match "(\\([^)]+\\))\\([^)]*\\)" node))
|
||||
(file (if external-link-p
|
||||
(file-name-nondirectory
|
||||
(match-string 1 node))
|
||||
(match-string-no-properties 1 node))
|
||||
Info-current-file))
|
||||
(hl Info-history-list)
|
||||
res)
|
||||
(if external-link-p
|
||||
(setq node (if (equal (match-string 2 node) "")
|
||||
"Top"
|
||||
(match-string 2 node))))
|
||||
(match-string-no-properties 2 node))))
|
||||
(while hl
|
||||
(if (and (string-equal node (nth 1 (car hl)))
|
||||
(string-equal
|
||||
file (if external-link-p
|
||||
(file-name-nondirectory
|
||||
(caar hl))
|
||||
(caar hl))))
|
||||
(equal file
|
||||
(if (and external-link-p
|
||||
(stringp (caar hl)))
|
||||
(file-name-nondirectory
|
||||
(caar hl))
|
||||
(caar hl))))
|
||||
(setq res (car hl) hl nil)
|
||||
(setq hl (cdr hl))))
|
||||
res))) 'info-xref-visited 'info-xref))
|
||||
@ -3932,26 +3934,28 @@ the variable `Info-file-list-for-emacs'."
|
||||
(if (and Info-fontify-visited-nodes
|
||||
(save-match-data
|
||||
(let* ((node (if (equal (match-string 3) "")
|
||||
(match-string 1)
|
||||
(match-string 3)))
|
||||
(match-string-no-properties 1)
|
||||
(match-string-no-properties 3)))
|
||||
(external-link-p
|
||||
(string-match "(\\([^)]+\\))\\([^)]*\\)" node))
|
||||
(file (if external-link-p
|
||||
(file-name-nondirectory
|
||||
(match-string 1 node))
|
||||
(match-string-no-properties 1 node))
|
||||
Info-current-file))
|
||||
(hl Info-history-list)
|
||||
res)
|
||||
(if external-link-p
|
||||
(setq node (if (equal (match-string 2 node) "")
|
||||
"Top"
|
||||
(match-string 2 node))))
|
||||
(match-string-no-properties 2 node))))
|
||||
(while hl
|
||||
(if (and (string-equal node (nth 1 (car hl)))
|
||||
(string-equal
|
||||
file (if external-link-p
|
||||
(file-name-nondirectory (caar hl))
|
||||
(caar hl))))
|
||||
(equal file
|
||||
(if (and external-link-p
|
||||
(stringp (caar hl)))
|
||||
(file-name-nondirectory
|
||||
(caar hl))
|
||||
(caar hl))))
|
||||
(setq res (car hl) hl nil)
|
||||
(setq hl (cdr hl))))
|
||||
res))) 'info-xref-visited 'info-xref)))
|
||||
@ -4210,8 +4214,8 @@ BUFFER is the buffer speedbar is requesting buttons for."
|
||||
|
||||
(defun Info-desktop-buffer-misc-data (desktop-dirname)
|
||||
"Auxiliary information to be saved in desktop file."
|
||||
(if (not (member Info-current-file '("apropos" "history" "toc")))
|
||||
(list Info-current-file Info-current-node)))
|
||||
(unless (member Info-current-file '(apropos history toc nil))
|
||||
(list Info-current-file Info-current-node)))
|
||||
|
||||
(defun Info-restore-desktop-buffer (desktop-buffer-file-name
|
||||
desktop-buffer-name
|
||||
|
Loading…
x
Reference in New Issue
Block a user