summaryrefslogtreecommitdiff
path: root/src/cmds.c
diff options
context:
space:
mode:
authorDmitry Antipov <dmantipov@yandex.ru>2013-08-29 11:03:18 +0400
committerDmitry Antipov <dmantipov@yandex.ru>2013-08-29 11:03:18 +0400
commitd2b368135803170fc2d1f65237b7ef22676f9ecb (patch)
tree366956b20df8e76e561878824bd5e96fa5936d85 /src/cmds.c
parente8dfd19797fa7224ae726a8be78726fefd260c0e (diff)
downloademacs-d2b368135803170fc2d1f65237b7ef22676f9ecb.tar.gz
Hook scanning and indentation functions to find_newline. This helps
to avoid duplicated code and renders more respect to newline cache. * lisp.h (scan_newline): Prefer ptrdiff_t to EMACS_INT. * cmds.c (Fforward_line): * indent.c (scan_for_column, Fcurrent_indentation, indented_beyond_p): Use find_newline and avoid unnecessary point movements. * search.c (scan_newline): Implement on top of find_newline.
Diffstat (limited to 'src/cmds.c')
-rw-r--r--src/cmds.c18
1 files changed, 6 insertions, 12 deletions
diff --git a/src/cmds.c b/src/cmds.c
index ce91877f85e..ee3be79a0ab 100644
--- a/src/cmds.c
+++ b/src/cmds.c
@@ -121,9 +121,7 @@ With positive N, a non-empty line at the end counts as one line
successfully moved (for the return value). */)
(Lisp_Object n)
{
- ptrdiff_t opoint = PT, opoint_byte = PT_BYTE;
- ptrdiff_t pos, pos_byte;
- EMACS_INT count, shortage;
+ ptrdiff_t opoint = PT, pos, pos_byte, shortage, count;
if (NILP (n))
count = 1;
@@ -134,16 +132,12 @@ successfully moved (for the return value). */)
}
if (count <= 0)
- shortage = scan_newline (PT, PT_BYTE, BEGV, BEGV_BYTE, count - 1, 1);
+ pos = find_newline (PT, PT_BYTE, BEGV, BEGV_BYTE, count - 1,
+ &shortage, &pos_byte, 1);
else
- shortage = scan_newline (PT, PT_BYTE, ZV, ZV_BYTE, count, 1);
-
- /* Since scan_newline does TEMP_SET_PT_BOTH,
- and we want to set PT "for real",
- go back to the old point and then come back here. */
- pos = PT;
- pos_byte = PT_BYTE;
- TEMP_SET_PT_BOTH (opoint, opoint_byte);
+ pos = find_newline (PT, PT_BYTE, ZV, ZV_BYTE, count,
+ &shortage, &pos_byte, 1);
+
SET_PT_BOTH (pos, pos_byte);
if (shortage > 0