📄 line-num.el
字号:
<span class="linecomment">;;;-----------------------------------------------------------------</span>(defvar displaying-line-numbers-p nil)(make-variable-buffer-local 'displaying-line-numbers-p)(defvar display-line-numbers-format-string nil)(make-variable-buffer-local 'display-line-numbers-format-string)(defvar display-line-numbers-first-line nil)(make-variable-buffer-local 'display-line-numbers-first-line)(defvar display-line-numbers-count 0)(make-variable-buffer-local 'display-line-numbers-count)(defvar display-line-numbers-buffer-name nil)(make-variable-buffer-local 'display-line-numbers-buffer-name)(defvar display-line-numbers-modified-p nil)(make-variable-buffer-local 'display-line-numbers-modified-p)<span class="linecomment">;;;###autoload</span>(defun toggle-line-numbers-display (arg) "<span class="quote">Display/clear line numbers in left margin of current buffer.With prefix ARG, just number lines in current window, not all lines inbuffer.</span>" (interactive "<span class="quote">P</span>") (if displaying-line-numbers-p (turn-off-line-numbers-display) (turn-on-line-numbers-display arg)))<span class="linecomment">;;;###autoload</span>(defun turn-on-line-numbers-display (arg) "<span class="quote">Display line numbers in left margin of current buffer.With prefix ARG, just number lines in current window, not all lines inbuffer.</span>" (interactive "<span class="quote">P</span>") (or (eq (current-buffer) (window-buffer (selected-window))) (error "<span class="quote">Current buffer, %s, is not the selected window's buffer</span>" (buffer-name))) (let ((buffer-read-only nil) (point (point-marker)) line-number nlines) (setq display-line-numbers-buffer-name buffer-file-name) (setq display-line-numbers-modified-p (buffer-modified-p)) (save-restriction (widen) (save-excursion (setq display-line-numbers-first-line (if arg (window-start (selected-window)) (point-min))) (goto-char display-line-numbers-first-line) (setq line-number (1+ (count-lines (point-min) (point)))) (if arg (move-to-window-line -1) (goto-char (point-max))) (beginning-of-line) (setq nlines (count-lines display-line-numbers-first-line (point))) (let ((max (+ line-number nlines))) (setq display-line-numbers-format-string (cond ((< max 100) "<span class="quote">%2d </span>") ((< max 1000) "<span class="quote">%3d </span>") ((< max 10000) "<span class="quote">%4d </span>") (t "<span class="quote">%7d </span>")))))) (save-excursion (condition-case nil (progn (goto-char display-line-numbers-first-line) (setq buffer-file-name nil) <span class="linecomment">; To prevent saving with line numbers etc.</span> (setq displaying-line-numbers-p t) (while (<= display-line-numbers-count nlines) (insert-before-markers (format display-line-numbers-format-string line-number)) (setq line-number (1+ line-number)) (setq display-line-numbers-count (1+ display-line-numbers-count)) (forward-line 1)) (when arg (set-window-start (selected-window) display-line-numbers-first-line)) (goto-char point) (set-buffer-modified-p display-line-numbers-modified-p)) (error (progn (goto-char display-line-numbers-first-line) (let ((n (1+ (- (aref display-line-numbers-format-string 1) ?0)))) (while (> display-line-numbers-count 0) (setq display-line-numbers-count (1- display-line-numbers-count)) (delete-char n) (forward-line 1))) (setq buffer-file-name display-line-numbers-buffer-name) (set-buffer-modified-p display-line-numbers-modified-p) (setq displaying-line-numbers-p nil)))))) (let ((curr-line (count-lines (window-start) (point)))) (when (> curr-line 0) (setq curr-line (1+ curr-line))) (recenter curr-line)))<span class="linecomment">;;;###autoload</span>(defun turn-off-line-numbers-display () "<span class="quote">Clear displayed line numbers from left margin of current buffer.</span>" (interactive) (unless (eq (current-buffer) (window-buffer (selected-window))) (error "<span class="quote">Current buffer, `%s', is not the selected window's buffer</span>" (buffer-name))) (unless displaying-line-numbers-p (error "<span class="quote">Not displaying line numbers in buffer `%s'</span>" (buffer-name))) (let ((buffer-read-only nil)) (save-excursion (when (boundp 'display-line-numbers-buffer-name) (setq buffer-file-name display-line-numbers-buffer-name)) (goto-char display-line-numbers-first-line) (let ((n (1+ (- (aref display-line-numbers-format-string 1) ?0)))) (while (> display-line-numbers-count 0) (setq display-line-numbers-count (1- display-line-numbers-count)) (delete-char n) (forward-line 1))) (when (boundp 'display-line-numbers-modified-p) (set-buffer-modified-p display-line-numbers-modified-p)) (setq displaying-line-numbers-p nil))))<span class="linecomment">;;;;;;;;;;;;;;;;;;;;;;;</span>(provide 'line-num)<span class="linecomment">;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</span><span class="linecomment">;;; line-num.el ends here</span></span></pre></div><div class="wrapper close"></div></div><div class="footer"><hr /><span class="gotobar bar"><a class="local" href="http://www.emacswiki.org/emacs-de/%c3%9cbersicht">脺bersicht</a> <a class="local" href="http://www.emacswiki.org/emacs-de/Letzte_%c3%84nderungen">Letzte 脛nderungen</a> <a class="local" href="http://www.emacswiki.org/emacs-de/Neuigkeiten">Neuigkeiten</a> <a class="local" href="http://www.emacswiki.org/emacs-de/Suchen">Suchen</a> <a class="local" href="http://www.emacswiki.org/emacs-de/ElispSektion">ElispSektion</a> <a class="local" href="http://www.emacswiki.org/emacs-de/KurzAnleitung">KurzAnleitung</a> </span><span class="translation bar"><br /> <a class="translation new" rel="nofollow" href="http://www.emacswiki.org/emacs-de?action=translate;id=line-num.el;missing=de_es_fr_it_ja_ko_pt_ru_se_zh">Add Translation</a></span><span class="edit bar"><br /> <a class="edit" accesskey="b" title="Hier klicken um die Seite zu bearbeiten" rel="nofollow" href="http://www.emacswiki.org/emacs-de?action=edit;id=line-num.el">Diese Seite bearbeiten</a> <a class="history" rel="nofollow" href="http://www.emacswiki.org/emacs-de?action=history;id=line-num.el">Andere Versionen dieser Seite</a> <a class="admin" rel="nofollow" href="http://www.emacswiki.org/emacs-de?action=admin;id=line-num.el">Administration</a></span><span class="time"><br /> Zuletzt ge盲ndert 2009-01-02 09:06 UTC von <a class="author" title="von c-24-5-134-5.hsd1.ca.comcast.net" href="http://www.emacswiki.org/emacs-de/DrewAdams">DrewAdams</a> <a class="diff" rel="nofollow" href="http://www.emacswiki.org/emacs-de?action=browse;diff=2;id=line-num.el">(Unterschiede)</a></span><div style="float:right; margin-left:1ex;"><!-- Creative Commons License --><a href="http://creativecommons.org/licenses/GPL/2.0/"><img alt="CC-GNU GPL" style="border:none" src="/pics/cc-GPL-a.png" /></a><!-- /Creative Commons License --></div><!--<rdf:RDF xmlns="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><Work rdf:about=""> <license rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" /> <dc:type rdf:resource="http://purl.org/dc/dcmitype/Software" /></Work><License rdf:about="http://creativecommons.org/licenses/GPL/2.0/"> <permits rdf:resource="http://web.resource.org/cc/Reproduction" /> <permits rdf:resource="http://web.resource.org/cc/Distribution" /> <requires rdf:resource="http://web.resource.org/cc/Notice" /> <permits rdf:resource="http://web.resource.org/cc/DerivativeWorks" /> <requires rdf:resource="http://web.resource.org/cc/ShareAlike" /> <requires rdf:resource="http://web.resource.org/cc/SourceCode" /></License></rdf:RDF>--><p class="legal">This work is licensed to you under version 2 of the<a href="http://www.gnu.org/">GNU</a> <a href="/GPL">General Public License</a>.Alternatively, you may choose to receive this work under any otherlicense that grants the right to use, copy, modify, and/or distributethe work, as long as that license imposes the restriction thatderivative works have to grant the same rights and impose the samerestriction. For example, you may choose to receive this work underthe<a href="http://www.gnu.org/">GNU</a><a href="/FDL">Free Documentation License</a>, the<a href="http://creativecommons.org/">CreativeCommons</a><a href="http://creativecommons.org/licenses/sa/1.0/">ShareAlike</a>License, the XEmacs manual license, or<a href="/OLD">similar licenses</a>.</p></div></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -