emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

feature/fix-the-long-lines-display-bug 60e51595c8: Revert commit 38b3780


From: Gregory Heytings
Subject: feature/fix-the-long-lines-display-bug 60e51595c8: Revert commit 38b3780f6e.
Date: Fri, 8 Jul 2022 17:36:40 -0400 (EDT)

branch: feature/fix-the-long-lines-display-bug
commit 60e51595c8a89ffc34dbe0d36c75d1c119a7d5c5
Author: Gregory Heytings <gregory@heytings.org>
Commit: Gregory Heytings <gregory@heytings.org>

    Revert commit 38b3780f6e.
---
 doc/emacs/display.texi           |  25 --------
 doc/emacs/emacs.texi             |   1 +
 doc/emacs/trouble.texi           |  59 +++++++++++++++++++
 etc/NEWS                         |  15 +----
 lisp/bindings.el                 |  12 ++--
 lisp/files.el                    |  97 -------------------------------
 lisp/isearch.el                  |  32 ++++------
 lisp/{obsolete => }/longlines.el |   1 -
 src/buffer.c                     |   9 +--
 src/buffer.h                     |  14 -----
 src/fileio.c                     |  21 -------
 src/keyboard.c                   |  28 ---------
 src/xdisp.c                      | 122 ++++++++++-----------------------------
 13 files changed, 108 insertions(+), 328 deletions(-)

diff --git a/doc/emacs/display.texi b/doc/emacs/display.texi
index 9fe9533e88..cadac7e453 100644
--- a/doc/emacs/display.texi
+++ b/doc/emacs/display.texi
@@ -19,8 +19,6 @@ the text is displayed.
 * Horizontal Scrolling::   Moving text left and right in a window.
 * Narrowing::              Restricting display and editing to a portion
                              of the buffer.
-* Auto-Narrowing::         Automatically restrict display to a portion of
-                             the buffer.
 * View Mode::              Viewing read-only buffers.
 * Follow Mode::            Follow mode lets two windows scroll as one.
 * Faces::                  How to change the display style using faces.
@@ -469,29 +467,6 @@ this command asks for confirmation and gives you the 
option of enabling it;
 if you enable the command, confirmation will no longer be required for
 it.  @xref{Disabling}.
 
-@node Auto-Narrowing
-@findex auto-narrow-mode
-@vindex auto-narrow-long-line-threshold
-@vindex auto-narrow-display-length
-@vindex auto-narrow-widen-automatically
-
-  When a file with extremely long lines is opened or inserted in a
-buffer, Emacs automatically enters auto-narrow mode, and the word
-@samp{Auto-Narrow} appears in the mode line.  This means that Emacs
-restricts display, but not editing, to a portion of the buffer above
-and below point.  All editing commands, including narrowing commands,
-remain available, and they act on the whole buffer.  For example,
-@kbd{M->} moves point to the end of the buffer, and not, as would
-happen with ordinary narrowing, to the end of the portion of the
-buffer to which display is currently restricted.
-
-  The behavior of auto-narrow mode is controlled by three variables:
-@code{auto-narrow-long-line-threshold} is the line length above which
-auto-narrow move is entered, @code{auto-narrow-display-length} is the
-number of characters to which display is restricted, and
-@code{auto-narrow-widen-automatically} is a list of commands for which
-display is widened before they are executed.
-
 @node View Mode
 @section View Mode
 @cindex View mode
diff --git a/doc/emacs/emacs.texi b/doc/emacs/emacs.texi
index b43c966f87..5e72699bbe 100644
--- a/doc/emacs/emacs.texi
+++ b/doc/emacs/emacs.texi
@@ -1190,6 +1190,7 @@ Dealing with Emacs Trouble
 * Crashing::            What Emacs does when it crashes.
 * After a Crash::       Recovering editing in an Emacs session that crashed.
 * Emergency Escape::    What to do if Emacs stops responding.
+* Long Lines::          Mitigating slowness due to extremely long lines.
 * DEL Does Not Delete:: What to do if @key{DEL} doesn't delete.
 
 Reporting Bugs
diff --git a/doc/emacs/trouble.texi b/doc/emacs/trouble.texi
index 887e5c6170..f06b93759d 100644
--- a/doc/emacs/trouble.texi
+++ b/doc/emacs/trouble.texi
@@ -158,6 +158,7 @@ Emacs.
 * Crashing::              What Emacs does when it crashes.
 * After a Crash::         Recovering editing in an Emacs session that crashed.
 * Emergency Escape::      What to do if Emacs stops responding.
+* Long Lines::            Mitigating slowness due to extremely long lines.
 * DEL Does Not Delete::   What to do if @key{DEL} doesn't delete.
 @end menu
 
@@ -432,6 +433,64 @@ program.
 emergency escape---but there are cases where it won't work, when a
 system call hangs or when Emacs is stuck in a tight loop in C code.
 
+@node Long Lines
+@subsection Long Lines
+@cindex long lines
+
+  For a variety of reasons (some of which are fundamental to the Emacs
+redisplay code and the complex range of possibilities it handles;
+others of which are due to modes and features which do not scale well
+in unusual circumstances), Emacs can perform poorly when extremely
+long lines are present (where ``extremely long'' usually means at
+least many thousands of characters).
+
+@cindex @code{so-long} mode
+@findex global-so-long-mode
+@vindex so-long-action
+  A particular problem is that Emacs may ``hang'' for a long time at
+the point of visiting a file with extremely long lines.  This can be
+mitigated by enabling the @file{so-long} library, which detects when a
+visited file contains abnormally long lines, and takes steps to
+disable features which are liable to cause slowness in that situation.
+To enable this library, type @kbd{M-x global-so-long-mode @key{RET}},
+or turn on the @code{global-so-long-mode} in your init file
+(@pxref{Init File}), or customize the @code{global-so-long-mode}
+option.  You can tailor this mode's operation by customizing the
+variable @code{so-long-action}.
+
+  The @file{so-long} library can also significantly improve
+performance when moving and editing in a buffer with long lines.
+Performance is still likely to degrade as you get deeper into the long
+lines, but the improvements from using this library can nevertheless
+be substantial.
+
+@findex so-long-commentary
+  Use @kbd{M-x so-long-commentary} to view the documentation for this
+library and learn more about how to enable and configure it.
+
+@vindex max-redisplay-ticks
+  If even @code{so-long-mode} doesn't help making Emacs responsive
+enough, or if you'd rather not disable the display-related features
+that @code{so-long-mode} turns off, you can instead customize the
+variable @code{max-redisplay-ticks} to a non-zero value.  Then Emacs
+will abort redisplay of a window and commands, like @kbd{C-n} and
+@kbd{M-v}, which use the display code to do their job, if processing a
+window needs more low-level display operations than the value of this
+variable.  The display of the offending window will then remain
+outdated, and possibly incomplete, on the screen, but Emacs should
+otherwise be responsive, and you could then switch to another buffer,
+or kill the problematic buffer, or turn on @code{so-long-mode} or
+@code{so-long-minor-mode} in that buffer.  When the display of a
+window is aborted due to this reason, the buffer shown in that window
+will not have any of its windows redisplayed until the buffer is
+modified or until you type @kbd{C-l} (@pxref{Recentering}) in one of
+that buffer's windows.
+
+  If you decide to customize this variable to a non-zero value, we
+recommend to use a value between 100,000 and 1,000,000, depending on
+your patience and the speed of your system.  The default value is
+zero, which disables this feature.
+
 @node DEL Does Not Delete
 @subsection If @key{DEL} Fails to Delete
 @cindex @key{DEL} vs @key{BACKSPACE}
diff --git a/etc/NEWS b/etc/NEWS
index 51d31bcf17..7a1b7a856a 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -324,6 +324,9 @@ startup.  Previously, these functions ignored
 
 * Changes in Emacs 29.1
 
+---
+** 'longlines-mode' is no longer obsolete.
+
 +++
 ** New command to change the font size globally.
 To increase the font size, type 'C-x C-M-+' or 'C-x C-M-='; to
@@ -898,18 +901,6 @@ Formerly it invoked 'just-one-space'.  The actions 
performed by
 'cycle-spacing' and their order can now be customized via the user
 option 'cycle-spacing-actions'.
 
-+++
-** Emacs is now capable of editing files with arbitarily long lines.
-When a file with long lines is opened or inserted in a buffer, Emacs
-automatically enters auto-narrow mode.  This means that Emacs
-restricts display, but not editing, to a portion of the buffer above
-and below point.  All editing commands, including narrowing commands,
-remain available, and they act on the whole buffer.  The behavior of
-that mode is controlled by three variables:
-auto-narrow-long-line-threshold, auto-narrow-display-length and
-auto-narrow-widen-automatically.  To disable that feature, set
-auto-narrow-long-line-threshold to nil in your init file.
-
 ---
 ** 'zap-to-char' and 'zap-up-to-char' are case-sensitive for upper-case chars.
 These commands now behave as case-sensitive for interactive calls when
diff --git a/lisp/bindings.el b/lisp/bindings.el
index 3f7abcdbaa..0cf1834a4f 100644
--- a/lisp/bindings.el
+++ b/lisp/bindings.el
@@ -400,14 +400,10 @@ mouse-1: Display minor mode menu\n\
 mouse-2: Show help for minor mode\n\
 mouse-3: Toggle minor modes"
                        local-map ,mode-line-minor-mode-keymap)
-          '(:eval
-            (if (not (eq auto-narrow--narrowing-state 'auto))
-                (propertize "%n"
-                            'help-echo "mouse-2: Remove narrowing from buffer"
-                            'mouse-face 'mode-line-highlight
-                            'local-map (make-mode-line-mouse-map
-                                        'mouse-2 #'mode-line-widen))
-              "%n"))
+         (propertize "%n" 'help-echo "mouse-2: Remove narrowing from buffer"
+                     'mouse-face 'mode-line-highlight
+                     'local-map (make-mode-line-mouse-map
+                                 'mouse-2 #'mode-line-widen))
          ")"
          (propertize "%]" 'help-echo recursive-edit-help-echo)
          " "))
diff --git a/lisp/files.el b/lisp/files.el
index 0e6f1a935d..31e450355f 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -2688,103 +2688,6 @@ the file contents into it using 
`insert-file-contents-literally'."
          (confirm-nonexistent-file-or-buffer))))
   (switch-to-buffer (find-file-noselect filename nil t)))
 
-(defcustom auto-narrow-display-length 30000
-  "Number of characters to which display is restricted in `auto-narrow-mode'.
-
-When `auto-narrow-mode' is in effect, the number of characters
-displayed above and below point is one third of
-`auto-narrow-display-line-length', except at the beginning and
-end of the buffer."
-  :group 'files
-  :group 'find-file
-  :version "29.1"
-  :type 'integer)
-
-(defcustom auto-narrow-widen-automatically
-  '( move-beginning-of-line move-end-of-line backward-sentence forward-sentence
-     backward-sexp forward-sexp beginning-of-defun end-of-defun
-     beginning-of-buffer end-of-buffer goto-char goto-line
-     mark-sexp mark-defun mark-paragraph mark-whole-buffer mark-page
-     exchange-point-and-mark pop-global-mark set-mark-command jump-to-register
-     bookmark-jump)
-  "Commands for which display is automatically widened in `auto-narrow-mode'."
-  :group 'files
-  :group 'find-file
-  :version "29.1"
-  :type '(repeat function))
-
-(defvar-local auto-narrow--widen-automatically nil
-  "Internal variable used by `auto-narrow-mode'.")
-
-(defvar-local auto-narrow--isearch-widen-automatically nil
-  "Internal variable used by `auto-narrow-mode'.")
-
-(defvar-local auto-narrow--initialized nil
-  "Internal variable used by `auto-narrow-mode'.")
-
-(defun auto-narrow-pre-command-function ()
-  "Conditionally widen display when `auto-narrow-mode' is in effect."
-  (when auto-narrow-mode
-    (unless auto-narrow--initialized
-      (setq auto-narrow--widen-automatically widen-automatically
-            auto-narrow--isearch-widen-automatically 
isearch-widen-automatically
-            auto-narrow--narrowing-state 'auto
-            auto-narrow--initialized t))
-    (setq-local widen-automatically t
-                isearch-widen-automatically t)
-    (if (memq this-command '(narrow-to-region narrow-to-defun narrow-to-page))
-        (setq auto-narrow--narrowing-state 'explicit
-              widen-automatically auto-narrow--widen-automatically
-              isearch-widen-automatically 
auto-narrow--isearch-widen-automatically))
-    (if (eq this-command 'widen)
-        (setq auto-narrow--narrowing-state 'auto))
-    (when (and (not (eq auto-narrow--narrowing-state 'explicit))
-               (memq this-command auto-narrow-widen-automatically))
-      (widen))))
-
-(defun auto-narrow-post-command-function ()
-  "Update display narrowing when `auto-narrow-mode' is in effect."
-  (when (and auto-narrow-mode
-             (not (eq auto-narrow--narrowing-state 'explicit)))
-    (unless auto-narrow--initialized
-      (setq auto-narrow--narrowing-state 'auto))
-    (let (point cur-point-min buf-point-min buf-point-max size)
-      (setq point (point) cur-point-min (point-min)
-            size (/ auto-narrow-display-length 3))
-      (save-restriction
-        (widen)
-        (setq buf-point-min (point-min) buf-point-max (point-max)))
-      (let* ((pos (* (min (max (/ point size) 1)
-                          (1- (/ buf-point-max size)))
-                     size))
-             (begin (max (- pos size) buf-point-min))
-             (end (min (+ begin (* 3 size)) buf-point-max)))
-        (when (or (not (buffer-narrowed-p))
-                 (not (= begin cur-point-min)))
-         (narrow-to-region begin end))))))
-
-(setq auto-narrow-long-line-threshold 30000
-      auto-narrow-pre-command-function #'auto-narrow-pre-command-function
-      auto-narrow-post-command-function #'auto-narrow-post-command-function)
-
-(define-minor-mode auto-narrow-mode
-  "Automatically narrow the display of a buffer above and below point.
-
-This mode is automatically entered when a file with one or more lines
-longer than `auto-narrow-long-line-threshold' is opened or inserted
-in a buffer.  It restricts display, but not editing, to
-`auto-narrow-display-length' characters.  Display is widened before
-executing any of the commands listed in `auto-narrow-widen-automatically'."
-  :group 'files
-  :version "29.1"
-  :after-hook (progn (put 'auto-narrow-mode 'permanent-local t))
-  (if auto-narrow-mode
-      (auto-narrow-post-command-function)
-    (when (not (eq auto-narrow--narrowing-state 'explicit))
-      (widen))
-    (setq auto-narrow--narrowing-state nil
-          auto-narrow--initialized nil)))
-
 (defun after-find-file (&optional error warn noauto
                                  _after-find-file-from-revert-buffer
                                  nomodes)
diff --git a/lisp/isearch.el b/lisp/isearch.el
index a6e034df6b..db7b53c014 100644
--- a/lisp/isearch.el
+++ b/lisp/isearch.el
@@ -3037,13 +3037,6 @@ search.  This option is ignored \(presumed t) when
   :type 'boolean
   :group 'isearch)
 
-(defcustom isearch-widen-automatically nil
-  "Whether a narrowed buffer can be widened when isearch fails.
-This option has no effect when `widen-automatically' is nil."
-  :version "29.1"
-  :type 'boolean
-  :group 'isearch)
-
 (defun isearch-string-out-of-window (isearch-point)
   "Test whether the search string is currently outside of the window.
 Return nil if it's completely visible, or if point is visible,
@@ -3656,20 +3649,17 @@ Optional third argument, if t, means if fail just 
return nil (no error).
        (while retry
          (setq isearch-success
                (isearch-search-string isearch-string nil t))
-          (if (and (not isearch-success) (buffer-narrowed-p)
-                   isearch-widen-automatically widen-automatically)
-              (widen)
-           ;; Clear RETRY unless the search predicate says
-           ;; to skip this search hit.
-           (if (or (not isearch-success)
-                   (funcall isearch-filter-predicate
-                            (match-beginning 0) (match-end 0)))
-               (setq retry nil)
-             ;; Advance point on empty matches before retrying
-             (when (= (match-beginning 0) (match-end 0))
-               (if (if isearch-forward (eobp) (bobp))
-                   (setq retry nil isearch-success nil)
-                 (forward-char (if isearch-forward 1 -1)))))))
+         ;; Clear RETRY unless the search predicate says
+         ;; to skip this search hit.
+         (if (or (not isearch-success)
+                 (funcall isearch-filter-predicate
+                          (match-beginning 0) (match-end 0)))
+             (setq retry nil)
+           ;; Advance point on empty matches before retrying
+           (when (= (match-beginning 0) (match-end 0))
+             (if (if isearch-forward (eobp) (bobp))
+                 (setq retry nil isearch-success nil)
+               (forward-char (if isearch-forward 1 -1))))))
        (setq isearch-just-started nil)
        (when isearch-success
          (setq isearch-other-end
diff --git a/lisp/obsolete/longlines.el b/lisp/longlines.el
similarity index 99%
rename from lisp/obsolete/longlines.el
rename to lisp/longlines.el
index d44a634e2e..a6cf93a039 100644
--- a/lisp/obsolete/longlines.el
+++ b/lisp/longlines.el
@@ -6,7 +6,6 @@
 ;;             Alex Schroeder <alex@gnu.org>
 ;;             Chong Yidong <cyd@stupidchicken.com>
 ;; Maintainer: emacs-devel@gnu.org
-;; Obsolete-since: 24.4
 ;; Keywords: convenience, wp
 
 ;; This file is part of GNU Emacs.
diff --git a/src/buffer.c b/src/buffer.c
index d5b4292a21..509ce51b55 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -5276,9 +5276,6 @@ init_buffer_once (void)
   XSETFASTINT (BVAR (&buffer_local_flags, tab_line_format), idx); ++idx;
   XSETFASTINT (BVAR (&buffer_local_flags, cursor_type), idx); ++idx;
   XSETFASTINT (BVAR (&buffer_local_flags, extra_line_spacing), idx); ++idx;
-  XSETFASTINT (BVAR (&buffer_local_flags, auto_narrow__narrowing_state), idx);
-  /* Make this one a permanent local.  */
-  buffer_permanent_local_flags[idx++] = 1;
   XSETFASTINT (BVAR (&buffer_local_flags, cursor_in_non_selected_windows), 
idx); ++idx;
 
   /* buffer_local_flags contains no pointers, so it's safe to treat it
@@ -5665,7 +5662,7 @@ A string is printed verbatim in the mode line except for 
%-constructs:
   %p -- print percent of buffer above top of window, or Top, Bot or All.
   %P -- print percent of buffer above bottom of window, perhaps plus Top,
         or print Bottom or All.
-  %n -- print Narrow or Auto-Narrow if appropriate.
+  %n -- print Narrow if appropriate.
   %t -- visited file is text or binary (if OS supports this distinction).
   %z -- print mnemonics of keyboard, terminal, and buffer coding systems.
   %Z -- like %z, but including the end-of-line format.
@@ -6366,10 +6363,6 @@ see `display-graphic-p'.
 If value is a floating point number, it specifies the spacing relative
 to the default frame line height.  A value of nil means add no extra space.  
*/);
 
-  DEFVAR_PER_BUFFER ("auto-narrow--narrowing-state",
-                    &BVAR (current_buffer, auto_narrow__narrowing_state), Qnil,
-                    doc: /* Internal variable used by `auto-narrow-mode'.  */);
-
   DEFVAR_PER_BUFFER ("cursor-in-non-selected-windows",
                     &BVAR (current_buffer, cursor_in_non_selected_windows), 
Qnil,
                     doc: /* Non-nil means show a cursor in non-selected 
windows.
diff --git a/src/buffer.h b/src/buffer.h
index 19faa844e0..135eaf72d3 100644
--- a/src/buffer.h
+++ b/src/buffer.h
@@ -561,9 +561,6 @@ struct buffer
      in the display of this buffer.  */
   Lisp_Object extra_line_spacing_;
 
-  /* Narrowing state when auto-narrow mode is in effect.  */
-  Lisp_Object auto_narrow__narrowing_state_;
-
   /* Cursor type to display in non-selected windows.
      t means to use hollow box cursor.
      See `cursor-type' for other values.  */
@@ -835,11 +832,6 @@ bset_width_table (struct buffer *b, Lisp_Object val)
 {
   b->width_table_ = val;
 }
-INLINE void
-bset_auto_narrow__narrowing_state (struct buffer *b, Lisp_Object val)
-{
-  b->auto_narrow__narrowing_state_ = val;
-}
 
 /* BUFFER_CEILING_OF (resp. BUFFER_FLOOR_OF), when applied to n, return
    the max (resp. min) p such that
@@ -1120,12 +1112,6 @@ BUFFER_CHECK_INDIRECTION (struct buffer *b)
     }
 }
 
-INLINE bool
-BUFFER_AUTO_NARROWED_P (struct buffer *b)
-{
-  return EQ (BVAR (b, auto_narrow__narrowing_state), Qauto);
-}
-
 /* This structure holds the default values of the buffer-local variables
    that have special slots in each buffer.
    The default value occupies the same slot in this structure
diff --git a/src/fileio.c b/src/fileio.c
index bb6f73fe39..10d4b8bc15 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -4997,16 +4997,6 @@ by calling `format-decode', which see.  */)
           Otherwise start with an empty undo_list.  */
        bset_undo_list (current_buffer, EQ (old_undo, Qt) ? Qt : Qnil);
 
-      if (!noninteractive
-         && !NILP (Vauto_narrow_long_line_threshold)
-         && !NILP (CALLN
-                   (Fgtr,
-                    Fcar (Fcdr (Fbuffer_line_statistics (Fcurrent_buffer ()))),
-                    Vauto_narrow_long_line_threshold)))
-       {
-         bset_auto_narrow__narrowing_state (current_buffer, Qneeded);
-       }
-
       unbind_to (count1, Qnil);
     }
 
@@ -6648,17 +6638,6 @@ This includes interactive calls to `delete-file' and
   /* Lisp function for recursively deleting directories.  */
   DEFSYM (Qdelete_directory, "delete-directory");
 
-  DEFVAR_LISP ("auto-narrow-long-line-threshold",
-              Vauto_narrow_long_line_threshold,
-              doc: /* Line length above which `auto-narrow-mode' is entered.
-When non-nil, and when a file with one or more lines longer than
-`auto-narrow-long-line-threshold' is opened or inserted in a buffer,
-`auto-narrow-mode' is automatically enabled.
-When nil, `auto-narrow-mode' is disabled.  */);
-  Vauto_narrow_long_line_threshold = Qnil;
-
-  DEFSYM (Qauto_narrow_mode, "auto-narrow-mode");
-
   DEFSYM (Qsubstitute_env_in_file_name, "substitute-env-in-file-name");
   DEFSYM (Qget_buffer_window_list, "get-buffer-window-list");
 
diff --git a/src/keyboard.c b/src/keyboard.c
index 38aa64774d..bed8307b6f 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -1290,9 +1290,6 @@ command_loop_1 (void)
 
   if (NILP (Vmemory_full))
     {
-      if (!NILP (Vauto_narrow_post_command_function) && !NILP (Vrun_hooks))
-       safe_run_hooks (Qauto_narrow_post_command_function);
-
       /* Make sure this hook runs after commands that get errors and
         throw to top level.  */
       /* Note that the value cell will never directly contain nil
@@ -1475,8 +1472,6 @@ command_loop_1 (void)
       Vreal_this_command = cmd;
       safe_run_hooks (Qpre_command_hook);
 
-      safe_run_hooks (Qauto_narrow_pre_command_function);
-
       already_adjusted = 0;
 
       if (NILP (Vthis_command))
@@ -1527,8 +1522,6 @@ command_loop_1 (void)
           }
       kset_last_prefix_arg (current_kboard, Vcurrent_prefix_arg);
 
-      safe_run_hooks (Qauto_narrow_post_command_function);
-
       safe_run_hooks (Qpost_command_hook);
 
       /* If displaying a message, resize the echo area window to fit
@@ -12047,11 +12040,6 @@ syms_of_keyboard (void)
   DEFSYM (Qpre_command_hook, "pre-command-hook");
   DEFSYM (Qpost_command_hook, "post-command-hook");
 
-  DEFSYM (Qauto_narrow_pre_command_function,
-         "auto-narrow-pre-command-function");
-  DEFSYM (Qauto_narrow_post_command_function,
-         "auto-narrow-post-command-function");
-
   DEFSYM (Qundo_auto__add_boundary, "undo-auto--add-boundary");
   DEFSYM (Qundo_auto__undoably_changed_buffers,
           "undo-auto--undoably-changed-buffers");
@@ -12616,22 +12604,6 @@ avoid making Emacs unresponsive while the user types.
 See also `pre-command-hook'.  */);
   Vpost_command_hook = Qnil;
 
-  DEFVAR_LISP ("auto-narrow-pre-command-function",
-              Vauto_narrow_pre_command_function,
-              doc: /* Function executed before each command is executed in 
`auto-narrow-mode'.
-If non-nil, and `auto-narrow-mode' is enabled, the function is
-called before each command is executed, after `pre-command-hook'.
-It is called without arguments.  */);
-  Vauto_narrow_pre_command_function = Qnil;
-
-  DEFVAR_LISP ("auto-narrow-post-command-function",
-              Vauto_narrow_post_command_function,
-              doc: /* Function executed after each command is executed in 
`auto-narrow-mode'.
-If non-nil, and `auto-narrow-mode' is enabled, the function is
-called after each command is executed, before `post-command-hook'.
-It is called without arguments.  */);
-  Vauto_narrow_post_command_function = Qnil;
-
 #if 0
   DEFVAR_LISP ("echo-area-clear-hook", ...,
               doc: /* Normal hook run when clearing the echo area.  */);
diff --git a/src/xdisp.c b/src/xdisp.c
index be51a0eb13..4089525e10 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -18872,20 +18872,11 @@ set_vertical_scroll_bar (struct window *w)
          && NILP (echo_area_buffer[0])))
     {
       struct buffer *buf = XBUFFER (w->contents);
-      if (! BUFFER_AUTO_NARROWED_P (current_buffer))
-       {
-         whole = BUF_ZV (buf) - BUF_BEGV (buf);
-         start = marker_position (w->start) - BUF_BEGV (buf);
-         /* I don't think this is guaranteed to be right.  For the
-            moment, we'll pretend it is.  */
-         end = BUF_Z (buf) - w->window_end_pos - BUF_BEGV (buf);
-       }
-      else
-       {
-         whole = BUF_Z (buf) - BUF_BEG (buf);
-         start = marker_position (w->start) - BUF_BEG (buf);
-         end = BUF_Z (buf) - w->window_end_pos - BUF_BEG (buf);
-       }
+      whole = BUF_ZV (buf) - BUF_BEGV (buf);
+      start = marker_position (w->start) - BUF_BEGV (buf);
+      /* I don't think this is guaranteed to be right.  For the
+        moment, we'll pretend it is.  */
+      end = BUF_Z (buf) - w->window_end_pos - BUF_BEGV (buf);
 
       if (end < start)
        end = start;
@@ -19142,14 +19133,6 @@ redisplay_window (Lisp_Object window, bool 
just_this_one_p)
      variables.  */
   set_buffer_internal_1 (XBUFFER (w->contents));
 
-  if (EQ (BVAR (current_buffer, auto_narrow__narrowing_state), Qneeded))
-    {
-      safe_call (1, Qauto_narrow_mode);
-      /* Normally set by auto-narrow-mode, set it here anyway as a safety 
measure.  */
-      bset_auto_narrow__narrowing_state (current_buffer, Qauto);
-      message1 ("Auto-Narrow mode enabled in current buffer");
-    }
-
   current_matrix_up_to_date_p
     = (w->window_end_valid
        && !current_buffer->clip_changed
@@ -27684,12 +27667,7 @@ decode_mode_spec (struct window *w, register int c, 
int field_width,
 
     case 'n':
       if (BUF_BEGV (b) > BUF_BEG (b) || BUF_ZV (b) < BUF_Z (b))
-       {
-         if (! BUFFER_AUTO_NARROWED_P (b))
-           return " Narrow";
-         else
-           return " Auto-Narrow";
-       }
+       return " Narrow";
       break;
 
       /* Display the "degree of travel" of the window through the buffer.  */
@@ -27697,27 +27675,17 @@ decode_mode_spec (struct window *w, register int c, 
int field_width,
       {
         ptrdiff_t toppos = marker_position (w->start);
         ptrdiff_t botpos = BUF_Z (b) - w->window_end_pos;
-       ptrdiff_t beg, z;
+        ptrdiff_t begv = BUF_BEGV (b);
+        ptrdiff_t zv = BUF_ZV (b);
 
-       if (! BUFFER_AUTO_NARROWED_P (b))
-         {
-           beg = BUF_BEGV (b);
-           z = BUF_ZV (b);
-         }
-       else
-         {
-           beg = BUF_BEG (b);
-           z = BUF_Z (b);
-         }
-
-        if (z <= botpos)
-          return toppos <= beg ? "All" : "Bottom";
-        else if (toppos <= beg)
+        if (zv <= botpos)
+          return toppos <= begv ? "All" : "Bottom";
+        else if (toppos <= begv)
           return "Top";
         else
           {
           sprintf (decode_mode_spec_buf, "%2d%%",
-                   percent99 (toppos - beg, (toppos - beg) + (z - botpos)));
+                   percent99 (toppos - begv, (toppos - begv) + (zv - botpos)));
           return decode_mode_spec_buf;
           }
       }
@@ -27726,27 +27694,17 @@ decode_mode_spec (struct window *w, register int c, 
int field_width,
     case 'p':
       {
        ptrdiff_t pos = marker_position (w->start);
-       ptrdiff_t beg, z;
+       ptrdiff_t begv = BUF_BEGV (b);
+       ptrdiff_t zv = BUF_ZV (b);
 
-       if (! BUFFER_AUTO_NARROWED_P (b))
-         {
-           beg = BUF_BEGV (b);
-           z = BUF_ZV (b);
-         }
-       else
-         {
-           beg = BUF_BEG (b);
-           z = BUF_Z (b);
-         }
-
-       if (w->window_end_pos <= BUF_Z (b) - z)
-         return pos <= beg ? "All" : "Bottom";
-       else if (pos <= beg)
+       if (w->window_end_pos <= BUF_Z (b) - zv)
+         return pos <= begv ? "All" : "Bottom";
+       else if (pos <= begv)
          return "Top";
        else
          {
            sprintf (decode_mode_spec_buf, "%2d%%",
-                    percent99 (pos - beg, z - beg));
+                    percent99 (pos - begv, zv - begv));
            return decode_mode_spec_buf;
          }
       }
@@ -27756,26 +27714,16 @@ decode_mode_spec (struct window *w, register int c, 
int field_width,
       {
        ptrdiff_t toppos = marker_position (w->start);
        ptrdiff_t botpos = BUF_Z (b) - w->window_end_pos;
-       ptrdiff_t beg, z;
+       ptrdiff_t begv = BUF_BEGV (b);
+       ptrdiff_t zv = BUF_ZV (b);
 
-       if (! BUFFER_AUTO_NARROWED_P (b))
-         {
-           beg = BUF_BEGV (b);
-           z = BUF_ZV (b);
-         }
-       else
-         {
-           beg = BUF_BEG (b);
-           z = BUF_Z (b);
-         }
-
-       if (z <= botpos)
-         return toppos <= beg ? "All" : "Bottom";
+       if (zv <= botpos)
+         return toppos <= begv ? "All" : "Bottom";
        else
          {
            sprintf (decode_mode_spec_buf,
-                    &"Top%2d%%"[beg < toppos ? sizeof "Top" - 1 : 0],
-                    percent99 (botpos - beg, z - beg));
+                    &"Top%2d%%"[begv < toppos ? sizeof "Top" - 1 : 0],
+                    percent99 (botpos - begv, zv - begv));
            return decode_mode_spec_buf;
          }
       }
@@ -27786,25 +27734,15 @@ decode_mode_spec (struct window *w, register int c, 
int field_width,
       {
         ptrdiff_t toppos = marker_position (w->start);
         ptrdiff_t botpos = BUF_Z (b) - w->window_end_pos;
-        ptrdiff_t beg, z;
+        ptrdiff_t begv = BUF_BEGV (b);
+        ptrdiff_t zv = BUF_ZV (b);
         int top_perc, bot_perc;
 
-       if (! BUFFER_AUTO_NARROWED_P (b))
-         {
-           beg = BUF_BEGV (b);
-           z = BUF_ZV (b);
-         }
-       else
-         {
-           beg = BUF_BEG (b);
-           z = BUF_Z (b);
-         }
-
-        if ((toppos <= beg) && (z <= botpos))
+        if ((toppos <= begv) && (zv <= botpos))
           return "All   ";
 
-        top_perc = toppos <= beg ? 0 : percent99 (toppos - beg, z - beg);
-        bot_perc = z <= botpos ? 100 : percent99 (botpos - beg, z - beg);
+        top_perc = toppos <= begv ? 0 : percent99 (toppos - begv, zv - begv);
+        bot_perc = zv <= botpos ? 100 : percent99 (botpos - begv, zv - begv);
 
         if (top_perc == bot_perc)
           sprintf (decode_mode_spec_buf, "%d%%", top_perc);
@@ -35892,8 +35830,6 @@ be let-bound around code that needs to disable messages 
temporarily. */);
   DEFSYM (Qinhibit_point_motion_hooks, "inhibit-point-motion-hooks");
   DEFSYM (Qeval, "eval");
   DEFSYM (QCdata, ":data");
-  DEFSYM (Qneeded, "needed");
-  DEFSYM (Qauto, "auto");
 
   /* Names of text properties relevant for redisplay.  */
   DEFSYM (Qdisplay, "display");



reply via email to

[Prev in Thread] Current Thread [Next in Thread]