⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 info.el

📁 早期freebsd实现
💻 EL
📖 第 1 页 / 共 2 页
字号:
(defun Info-next ()  "Go to the next node of this node."  (interactive)  (Info-goto-node (Info-extract-pointer "next")))(defun Info-prev ()  "Go to the previous node of this node."  (interactive)  (Info-goto-node (Info-extract-pointer "prev[ious]*" "previous")))(defun Info-up ()  "Go to the superior node of this node."  (interactive)  (Info-goto-node (Info-extract-pointer "up")))(defun Info-last ()  "Go back to the last node visited."  (interactive)  (or Info-history      (error "This is the first Info node you looked at"))  (let (filename nodename opoint)    (setq filename (car (car Info-history)))    (setq nodename (car (cdr (car Info-history))))    (setq opoint (car (cdr (cdr (car Info-history)))))    (setq Info-history (cdr Info-history))    (Info-find-node filename nodename)    (setq Info-history (cdr Info-history))    (goto-char opoint)))(defun Info-directory ()  "Go to the Info directory node."  (interactive)  (Info-find-node "dir" "top"))(defun Info-follow-reference (footnotename)  "Follow cross reference named NAME to the node it refers to.NAME may be an abbreviation of the reference name."  (interactive   (let ((completion-ignore-case t)	 completions str i)     (save-excursion       (goto-char (point-min))       (while (re-search-forward "\\*note[ \n\t]*\\([^:]*\\):" nil t)	 (setq str (buffer-substring		    (match-beginning 1)		    (1- (point))))	 (setq i 0)	 (while (setq i (string-match "[ \n\t]+" str i))	   (setq str (concat (substring str 0 i) " "			     (substring str (match-end 0))))	   (setq i (1+ i)))	 (setq completions	       (cons (cons str nil)		     completions))))     (if completions	 (list (completing-read "Follow reference named: " completions nil t))       (error "No cross-references in this node"))))  (let (target beg i (str (concat "\\*note " footnotename)))    (while (setq i (string-match " " str i))      (setq str (concat (substring str 0 i) "[ \t\n]+" (substring str (1+ i))))      (setq i (+ i 6)))    (save-excursion      (goto-char (point-min))      (or (re-search-forward str nil t)	  (error "No cross-reference named %s" footnotename))      (goto-char (+ (match-beginning 0) 5))      (setq target (Info-extract-menu-node-name "Bad format cross reference")))    (while (setq i (string-match "[ \t\n]+" target i))      (setq target (concat (substring target 0 i) " "			   (substring target (match-end 0))))      (setq i (+ i 1)))    (Info-goto-node target)))(defun Info-extract-menu-node-name (&optional errmessage)  (skip-chars-forward " \t\n")  (let ((beg (point))	str i)    (skip-chars-forward "^:")    (forward-char 1)    (setq str	  (if (looking-at ":")	      (buffer-substring beg (1- (point)))	    (skip-chars-forward " \t\n")	    (Info-following-node-name "^.,\t\n")))    (while (setq i (string-match "\n" str i))      (aset str i ?\ ))    str))(defun Info-menu-item-sequence (list)  (while list    (Info-menu-item (car list))    (setq list (cdr list))))(defun Info-menu (menu-item)  "Go to node for menu item named (or abbreviated) NAME."  (interactive   (let ((completions '())	 ;; If point is within a menu item, use that item as the default	 (default nil)	 (p (point))	 (last nil))     (save-excursion       (goto-char (point-min))       (if (not (search-forward "\n* menu:" nil t))	   (error "No menu in this node"))       (while (re-search-forward		"\n\\* \\([^:\t\n]*\\):" nil t)	 (if (and (null default)		  (prog1 (if last (< last p) nil)		    (setq last (match-beginning 0)))		  (<= p last))	     (setq default (car (car completions))))	 (setq completions (cons (cons (buffer-substring					 (match-beginning 1)					 (match-end 1))				       (match-beginning 1))				 completions)))       (if (and (null default) last		(< last p)		(<= p (progn (end-of-line) (point))))	   (setq default (car (car completions)))))     (let ((item nil))       (while (null item)	 (setq item (let ((completion-ignore-case t))		      (completing-read (if default					   (format "Menu item (default %s): "						   default)					   "Menu item: ")				       completions nil t)))	 ;; we rely on the bug (which RMS won't change for his own reasons)	 ;; that ;; completing-read accepts an input of "" even when the	 ;; require-match argument is true and "" is not a valid possibility	 (if (string= item "")	     (if default		 (setq item default)	         ;; ask again	         (setq item nil))))       (list item))))  (Info-goto-node (Info-extract-menu-item menu-item)))  (defun Info-extract-menu-item (menu-item)  (save-excursion    (goto-char (point-min))    (or (search-forward "\n* menu:" nil t)	(error "No menu in this node"))    (or (search-forward (concat "\n* " menu-item ":") nil t)	(search-forward (concat "\n* " menu-item) nil t)	(error "No such item in menu"))    (beginning-of-line)    (forward-char 2)    (Info-extract-menu-node-name)))(defun Info-extract-menu-counting (count)  (save-excursion    (goto-char (point-min))    (or (search-forward "\n* menu:" nil t)	(error "No menu in this node"))    (or (search-forward "\n* " nil t count)	(error "Too few items in menu"))    (Info-extract-menu-node-name)))(defun Info-first-menu-item ()  "Go to the node of the first menu item."  (interactive)  (Info-goto-node (Info-extract-menu-counting 1)))(defun Info-second-menu-item ()  "Go to the node of the second menu item."  (interactive)  (Info-goto-node (Info-extract-menu-counting 2)))(defun Info-third-menu-item ()  "Go to the node of the third menu item."  (interactive)  (Info-goto-node (Info-extract-menu-counting 3)))(defun Info-fourth-menu-item ()  "Go to the node of the fourth menu item."  (interactive)  (Info-goto-node (Info-extract-menu-counting 4)))(defun Info-fifth-menu-item ()  "Go to the node of the fifth menu item."  (interactive)  (Info-goto-node (Info-extract-menu-counting 5)))(defun Info-exit ()  "Exit Info by selecting some other buffer."  (interactive)  (switch-to-buffer (prog1 (other-buffer (current-buffer))			   (bury-buffer (current-buffer)))))(defun Info-undefined ()  "Make command be undefined in Info."  (interactive)  (ding))(defun Info-help ()  "Enter the Info tutorial."  (interactive)  (Info-find-node "info"		  (if (< (window-height) 23)		      "Help-Small-Screen"		    "Help")))(defun Info-summary ()  "Display a brief summary of all Info commands."  (interactive)  (save-window-excursion    (switch-to-buffer "*Help*")    (erase-buffer)    (insert (documentation 'Info-mode))    (goto-char (point-min))    (let (ch flag)      (while (progn (setq flag (not (pos-visible-in-window-p (point-max))))		    (message (if flag "Type Space to see more"			       "Type Space to return to Info"))		    (if (/= ?\  (setq ch (read-char)))			(progn (setq unread-command-char ch) nil)		      flag))	(scroll-up)))))(defvar Info-mode-map nil  "Keymap containing Info commands.")(if Info-mode-map    nil  (setq Info-mode-map (make-keymap))  (suppress-keymap Info-mode-map)  (define-key Info-mode-map "." 'beginning-of-buffer)  (define-key Info-mode-map " " 'scroll-up)  (define-key Info-mode-map "1" 'Info-first-menu-item)  (define-key Info-mode-map "2" 'Info-second-menu-item)  (define-key Info-mode-map "3" 'Info-third-menu-item)  (define-key Info-mode-map "4" 'Info-fourth-menu-item)  (define-key Info-mode-map "5" 'Info-fifth-menu-item)  (define-key Info-mode-map "6" 'undefined)  (define-key Info-mode-map "7" 'undefined)  (define-key Info-mode-map "8" 'undefined)  (define-key Info-mode-map "9" 'undefined)  (define-key Info-mode-map "0" 'undefined)  (define-key Info-mode-map "?" 'Info-summary)  (define-key Info-mode-map "b" 'beginning-of-buffer)  (define-key Info-mode-map "d" 'Info-directory)  (define-key Info-mode-map "e" 'Info-edit)  (define-key Info-mode-map "f" 'Info-follow-reference)  (define-key Info-mode-map "g" 'Info-goto-node)  (define-key Info-mode-map "h" 'Info-help)  (define-key Info-mode-map "l" 'Info-last)  (define-key Info-mode-map "m" 'Info-menu)  (define-key Info-mode-map "n" 'Info-next)  (define-key Info-mode-map "p" 'Info-prev)  (define-key Info-mode-map "q" 'Info-exit)  (define-key Info-mode-map "s" 'Info-search)  (define-key Info-mode-map "u" 'Info-up)  (define-key Info-mode-map "\177" 'scroll-down))(defun Info-mode ()  "Info mode provides commands for browsing through the Info documentation tree.Documentation in Info is divided into \"nodes\", each of whichdiscusses one topic and contains references to other nodeswhich discuss related topics.  Info has commands to followthe references and show you other nodes.h	Invoke the Info tutorial.Selecting other nodes:n	Move to the \"next\" node of this node.p	Move to the \"previous\" node of this node.u	Move \"up\" from this node.m	Pick menu item specified by name (or abbreviation).	Picking a menu item causes another node to be selected.f	Follow a cross reference.  Reads name of reference.l	Move to the last node you were at.Moving within a node:Space	scroll forward a page.     DEL  scroll backward.b	Go to beginning of node.Advanced commands:q	Quit Info: reselect previously selected buffer.e	Edit contents of selected node.1	Pick first item in node's menu.2, 3, 4, 5   Pick second ... fifth item in node's menu.g	Move to node specified by name.	You may include a filename as well, as (FILENAME)NODENAME.s	Search through this Info file for specified regexp,	and select the node in which the next occurrence is found."  (kill-all-local-variables)  (setq major-mode 'Info-mode)  (setq mode-name "Info")  (use-local-map Info-mode-map)  (set-syntax-table text-mode-syntax-table)  (setq local-abbrev-table text-mode-abbrev-table)  (setq case-fold-search t)  (setq buffer-read-only t)  (make-local-variable 'Info-current-file)  (make-local-variable 'Info-current-subfile)  (make-local-variable 'Info-current-node)  (make-local-variable 'Info-tag-table-marker)  (make-local-variable 'Info-history)  (Info-set-mode-line))(defvar Info-edit-map nil  "Local keymap used within `e' command of Info.")(if Info-edit-map    nil  (setq Info-edit-map (copy-keymap text-mode-map))  (define-key Info-edit-map "\C-c\C-c" 'Info-cease-edit))(defun Info-edit-mode ()  "Major mode for editing the contents of an Info node.Like text mode with the addition of Info-cease-editwhich returns to Info mode for browsing.\\{Info-edit-map}"  )(defun Info-edit ()  "Edit the contents of this Info node.Allowed only if variable Info-enable-edit is non-nil."  (interactive)  (or Info-enable-edit      (error "Editing info nodes is not enabled"))  (use-local-map Info-edit-map)  (setq major-mode 'Info-edit-mode)  (setq mode-name "Info Edit")  (kill-local-variable 'mode-line-buffer-identification)  (setq buffer-read-only nil)  ;; Make mode line update.  (set-buffer-modified-p (buffer-modified-p))  (message (substitute-command-keys	     "Editing: Type \\[Info-cease-edit] to return to info")))(defun Info-cease-edit ()  "Finish editing Info node; switch back to Info proper."  (interactive)  ;; Do this first, so nothing has changed if user C-g's at query.  (and (buffer-modified-p)       (y-or-n-p "Save the file? ")       (save-buffer))  (use-local-map Info-mode-map)  (setq major-mode 'Info-mode)  (setq mode-name "Info")  (Info-set-mode-line)  (setq buffer-read-only t)  ;; Make mode line update.  (set-buffer-modified-p (buffer-modified-p))  (and (marker-position Info-tag-table-marker)       (buffer-modified-p)       (message "Tags may have changed.  Use Info-tagify if necessary")))

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -