Mercurial > emacs
changeset 10442:d379e2c60766
(message_dolog): Ignore narrowing.
Use low-level functions, to bypass modification and motion hooks.
author | Karl Heuer <kwzh@gnu.org> |
---|---|
date | Tue, 17 Jan 1995 02:29:16 +0000 |
parents | f1fc7b6e5fa4 |
children | 855923ce1e59 |
files | src/xdisp.c |
diffstat | 1 files changed, 11 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/src/xdisp.c Tue Jan 17 01:52:22 1995 +0000 +++ b/src/xdisp.c Tue Jan 17 02:29:16 1995 +0000 @@ -212,7 +212,9 @@ t means infinite. nil means don't log at all. */ Lisp_Object Vmessage_log_max; -/* Add a string to the message log, optionally terminated with a newline. */ +/* Add a string to the message log, optionally terminated with a newline. + This function calls low-level routines in order to bypass text property + hooks, etc. which might not be safe to run. */ void message_dolog (m, len, nlflag) @@ -229,6 +231,8 @@ oldpoint = PT; oldbegv = BEGV; oldzv = ZV; + BEGV = BEG; + ZV = Z; if (oldpoint == Z) oldpoint += len + nlflag; if (oldzv == Z) @@ -240,13 +244,12 @@ insert_1 ("\n", 1, 1, 0); if (NATNUMP (Vmessage_log_max)) { - Lisp_Object n; - XSETINT (n, -XFASTINT (Vmessage_log_max)); - Fforward_line (n); - oldpoint -= min (PT, oldpoint) - BEG; - oldbegv -= min (PT, oldbegv) - BEG; - oldzv -= min (PT, oldzv) - BEG; - del_range (BEG, PT); + int pos = scan_buffer ('\n', PT, 0, + -XFASTINT (Vmessage_log_max) - 1, 0, 1); + oldpoint -= min (pos, oldpoint) - BEG; + oldbegv -= min (pos, oldbegv) - BEG; + oldzv -= min (pos, oldzv) - BEG; + del_range_1 (BEG, pos, 0); } BEGV = oldbegv; ZV = oldzv;