diff options
author | Damien Cassou <damien@cassou.me> | 2017-04-09 12:46:57 +0200 |
---|---|---|
committer | Nicolas Petton <nicolas@petton.fr> | 2017-07-03 14:43:02 +0200 |
commit | a7754a250b74c17e1f63194e601f20fdb911dd7c (patch) | |
tree | 965a6cdeff62984195ff7f41fe55d749e200ba3d /lisp | |
parent | 2d846eece7641cbf4ca840f26a835af266d6887e (diff) | |
download | emacs-a7754a250b74c17e1f63194e601f20fdb911dd7c.tar.gz emacs-a7754a250b74c17e1f63194e601f20fdb911dd7c.tar.bz2 emacs-a7754a250b74c17e1f63194e601f20fdb911dd7c.zip |
Add absolute optional parameter to line-number-at-pos (Bug#26417)
* lisp/simple.el (line-number-at-pos): Add a second optional
argument 'absolute'.
* test/list/simple-tests.el: Add tests for 'line-number-at-pos'.
Diffstat (limited to 'lisp')
-rw-r--r-- | lisp/simple.el | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/lisp/simple.el b/lisp/simple.el index a5565ab6e73..1db14a859d6 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -1270,18 +1270,25 @@ and the greater of them is not at the start of a line." done))) (- (buffer-size) (forward-line (buffer-size))))))) -(defun line-number-at-pos (&optional pos) - "Return (narrowed) buffer line number at position POS. +(defun line-number-at-pos (&optional pos absolute) + "Return buffer line number at position POS. If POS is nil, use current buffer location. -Counting starts at (point-min), so the value refers -to the contents of the accessible portion of the buffer." - (let ((opoint (or pos (point))) start) - (save-excursion - (goto-char (point-min)) - (setq start (point)) - (goto-char opoint) - (forward-line 0) - (1+ (count-lines start (point)))))) + +If ABSOLUTE is nil, the default, counting starts +at (point-min), so the value refers to the contents of the +accessible portion of the (potentially narrowed) buffer. If +ABSOLUTE is non-nil, ignore any narrowing and return the +absolute line number." + (save-restriction + (when absolute + (widen)) + (let ((opoint (or pos (point))) start) + (save-excursion + (goto-char (point-min)) + (setq start (point)) + (goto-char opoint) + (forward-line 0) + (1+ (count-lines start (point))))))) (defun what-cursor-position (&optional detail) "Print info on cursor position (on screen and within buffer). |