[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master 56e76f0: Move line-number-at-pos to C
From: |
Lars Ingebrigtsen |
Subject: |
master 56e76f0: Move line-number-at-pos to C |
Date: |
Sun, 7 Feb 2021 10:28:41 -0500 (EST) |
branch: master
commit 56e76f0eb00d92b49ddd5757d0a68d09dc522d39
Author: Lars Ingebrigtsen <larsi@gnus.org>
Commit: Lars Ingebrigtsen <larsi@gnus.org>
Move line-number-at-pos to C
* doc/lispref/positions.texi (Text Lines): Revert previous change.
* lisp/simple.el (line-number-at-pos): Remove definition.
* lisp/simple.el (count-lines): Revert back to using
`forward-line', because there seems to be a disagreement on how
lines should be counted in a region...
* src/fns.c (Fline_number_at_pos): Rename from
Fline_number_at_position and adjust parameter list.
---
doc/lispref/positions.texi | 18 ++++++++----------
etc/NEWS | 4 ----
lisp/simple.el | 17 +----------------
src/fns.c | 31 ++++++++++++++++++++++---------
test/src/fns-tests.el | 8 ++++----
5 files changed, 35 insertions(+), 43 deletions(-)
diff --git a/doc/lispref/positions.texi b/doc/lispref/positions.texi
index 9adce21..dc0c744 100644
--- a/doc/lispref/positions.texi
+++ b/doc/lispref/positions.texi
@@ -437,18 +437,16 @@ prints a message reporting the number of lines, words,
and characters
in the buffer, or in the region if the region is active.
@end deffn
-@defun line-number-at-position pos
-This function returns the line number in the current buffer
-corresponding to the buffer position @var{pos}. If narrowing is in
-effect, this is the line number in the visible part of the buffer.
-@end defun
-
@defun line-number-at-pos &optional pos absolute
@cindex line number
-This function is like @code{line-number-at-position}, but if @var{pos}
-is @code{nil} or omitted, the current buffer position is used. In
-addition, if @var{absolute} is non-@code{nil}, ignore any narrowing
-and return the absolute line number.
+This function returns the line number in the current buffer
+corresponding to the buffer position @var{pos}. If @var{pos} is
+@code{nil} or omitted, the current buffer position is used. If
+@var{absolute} is @code{nil}, the default, counting starts at
+@code{(point-min)}, so the value refers to the contents of the
+accessible portion of the (potentially narrowed) buffer. If
+@var{absolute} is non-@code{nil}, ignore any narrowing and return
+the absolute line number.
@end defun
@ignore
diff --git a/etc/NEWS b/etc/NEWS
index 93a60bf..0faed3e 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -2192,10 +2192,6 @@ back in Emacs 23.1. The affected functions are:
'make-obsolete',
* Lisp Changes in Emacs 28.1
-+++
-** New function 'line-number-at-position'.
-This returns the line number in the visible portion of the buffer.
-
---
** New variable 'indent-line-ignored-functions'.
This allows modes to cycle through a set of indentation functions
diff --git a/lisp/simple.el b/lisp/simple.el
index eab2ac2..73e3fb9 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -1472,22 +1472,7 @@ included in the count."
(assq prop buffer-invisibility-spec)))
(setq invisible-count (1+ invisible-count))))
invisible-count))))
- (t (1- (line-number-at-position (point-max))))))))
-
-(defun line-number-at-pos (&optional pos absolute)
- "Return buffer line number at position POS.
-If POS is nil, use current buffer location.
-
-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."
- (if absolute
- (save-restriction
- (widen)
- (line-number-at-position (or pos (point))))
- (line-number-at-position (or pos (point)))))
+ (t (- (buffer-size) (forward-line (buffer-size))))))))
(defcustom what-cursor-show-names nil
"Whether to show character names in `what-cursor-position'."
diff --git a/src/fns.c b/src/fns.c
index 479a597..d27f632 100644
--- a/src/fns.c
+++ b/src/fns.c
@@ -5759,21 +5759,34 @@ in OBJECT. */)
return CDR (collector);
}
-DEFUN ("line-number-at-position", Fline_number_at_position,
- Sline_number_at_position, 1, 1, 0,
+DEFUN ("line-number-at-pos", Fline_number_at_pos,
+ Sline_number_at_pos, 0, 2, 0,
doc: /* Return the line number at POSITION.
+If POSITION is nil, use the current buffer location.
+
If the buffer is narrowed, the position returned is the position in the
-visible part of the buffer. */)
- (register Lisp_Object position)
+visible part of the buffer. If ABSOLUTE is non-nil, count the lines
+from the absolute start of the buffer. */)
+ (register Lisp_Object position, Lisp_Object absolute)
{
- CHECK_FIXNUM (position);
- ptrdiff_t pos = XFIXNUM (position);
+ ptrdiff_t pos, start = BEGV;
+
+ if (NILP (position))
+ pos = PT;
+ else
+ {
+ CHECK_FIXNUM (position);
+ pos = XFIXNUM (position);
+ }
+
+ if (!NILP (absolute))
+ start = BEG_BYTE;
/* Check that POSITION is n the visible range of the buffer. */
if (pos < BEGV || pos > ZV)
- args_out_of_range (make_int (BEGV), make_int (ZV));
+ args_out_of_range (make_int (start), make_int (ZV));
- return make_int (count_lines (BEGV_BYTE, CHAR_TO_BYTE (pos)) + 1);
+ return make_int (count_lines (start, CHAR_TO_BYTE (pos)) + 1);
}
@@ -5817,7 +5830,7 @@ syms_of_fns (void)
defsubr (&Sdefine_hash_table_test);
defsubr (&Sstring_search);
defsubr (&Sobject_intervals);
- defsubr (&Sline_number_at_position);
+ defsubr (&Sline_number_at_pos);
/* Crypto and hashing stuff. */
DEFSYM (Qiv_auto, "iv-auto");
diff --git a/test/src/fns-tests.el b/test/src/fns-tests.el
index 3a43142..928fb15 100644
--- a/test/src/fns-tests.el
+++ b/test/src/fns-tests.el
@@ -1102,7 +1102,7 @@
(ert-deftest test-line-number-at-position ()
(with-temp-buffer
(insert (make-string 10 ?\n))
- (should (= (line-number-at-position (point)) 11))
- (should-error (line-number-at-position nil))
- (should-error (line-number-at-position -1))
- (should-error (line-number-at-position 100))))
+ (should (= (line-number-at-pos (point)) 11))
+ (should (= (line-number-at-pos nil) 11))
+ (should-error (line-number-at-pos -1))
+ (should-error (line-number-at-pos 100))))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- master 56e76f0: Move line-number-at-pos to C,
Lars Ingebrigtsen <=