JS <[EMAIL PROTECTED]> writes: > Is it possible to get line numbers in the left margin of emacs??
ISTR that a mode passed on gnu.emacs.sources to do that. Otherwise, there's the line-number-mode and column-number-mode that display the line and column number in the mode line. The point is that it's rather costly to maintain line numbers while editing a buffer: you have to renumber all lines every time something's cut, pasted or C-o or RETURN is typed, etc. You could use this M-x insert-line-numbers command to insert line numbers, M-x delete-line-numbers to remove them, M-x renumber-lines to update them. And M-x local-set-key RET RET lse-newline RET to get new line numbers inserted automatically when you type return (actually, not _line_ numbers, but a statement number like in LSE or BASIC where you may number lines 5 b 5 or 10 by 10. I don't know if there's a way to maintain an area on the screen distinct from the buffer contents, but scroll-synchronized with the buffer, like the "fringe", were we could put the line numbers; it doesn't seems so... (defun insert-line-numbers () (interactive) (save-excursion (save-restriction (widen) (let ((fmt (format "%%0%dd " (1+ (truncate (log (count-lines (point-min) (point-max)) 10))))) (i 0)) (goto-char (point-min)) (while (< (point) (point-max)) (setq i (1+ i)) (insert (format fmt i)) (forward-line)))))) (defun delete-line-numbers () (interactive) (save-excursion (save-restriction (widen) (goto-char (point-min)) (while (< (point) (point-max)) (if (looking-at "[0-9][0-9]* ") (delete-region (match-beginning 0) (match-end 0))) (forward-line))))) (defun renumber-lines () (interactive) (delete-line-numbers) (insert-line-numbers)) (defun lse-newline () "Insert newline and line number incremented with the same step as previously." (interactive) (newline) (let ((nlpt (point)) (line (progn (forward-line -1) (beginning-of-line) (if (looking-at "[0-9]+") (let ((curr (string-to-number (match-string 0)))) (forward-line -1) (beginning-of-line) (if (looking-at "[0-9]+") (let ((prev (string-to-number (match-string 0)))) (+ curr (abs (- curr prev)))) (+ 10 curr))) 10)))) (goto-char nlpt) (beginning-of-line) (insert (format "%d " line)) (when (looking-at " +") (delete-region (match-beginning 0) (match-end 0)))));;lse-newline -- __Pascal Bourguignon__ http://www.informatimago.com/ Nobody can fix the economy. Nobody can be trusted with their finger on the button. Nobody's perfect. VOTE FOR NOBODY. _______________________________________________ Help-gnu-emacs mailing list Help-gnu-emacs@gnu.org http://lists.gnu.org/mailman/listinfo/help-gnu-emacs