mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-13 16:38:14 +00:00
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.
This commit is contained in:
parent
5a4d50dfb1
commit
56e76f0eb0
@ -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
|
||||
|
4
etc/NEWS
4
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
|
||||
|
@ -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'."
|
||||
|
31
src/fns.c
31
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");
|
||||
|
@ -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))))
|
||||
|
Loading…
Reference in New Issue
Block a user