emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] /srv/bzr/emacs/trunk r106546: Update doc for behavior of T


From: Chong Yidong
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r106546: Update doc for behavior of TAB in Text based modes.
Date: Tue, 29 Nov 2011 23:55:54 +0800
User-agent: Bazaar (2.3.1)

------------------------------------------------------------
revno: 106546
committer: Chong Yidong <address@hidden>
branch nick: trunk
timestamp: Tue 2011-11-29 23:55:54 +0800
message:
  Update doc for behavior of TAB in Text based modes.
  
  * lisp/indent.el (indent-for-tab-command, indent-according-to-mode): Doc fix.
  (indent-region): Doc fix.  Switch nested ifs to equivalent cond.
modified:
  etc/NEWS
  lisp/ChangeLog
  lisp/indent.el
=== modified file 'etc/NEWS'
--- a/etc/NEWS  2011-11-28 15:28:04 +0000
+++ b/etc/NEWS  2011-11-29 15:55:54 +0000
@@ -551,6 +551,13 @@
 in the middle (when this variable is nil) forces more expensive
 updates later on, and Emacs appears to be unable to keep up.
 
++++
+** The behavior of <TAB> for active regions in Text mode has changed.
+In Text and related modes, typing <TAB> (`indent-for-tab-command')
+when the region is active causes Emacs to indent all the lines in the
+region, aligning them with the line previous to the first line in the
+region (or with the left margin if there is no previous line).
+
 
 * Changes in Specialized Modes and Packages in Emacs 24.1
 

=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog    2011-11-29 14:59:24 +0000
+++ b/lisp/ChangeLog    2011-11-29 15:55:54 +0000
@@ -1,3 +1,9 @@
+2011-11-29  Chong Yidong  <address@hidden>
+
+       * indent.el (indent-for-tab-command, indent-according-to-mode):
+       Doc fix.
+       (indent-region): Doc fix.  Switch nested ifs to equivalent cond.
+
 2011-11-29  Michael Albinus  <address@hidden>
 
        * vc/diff-mode.el (diff-find-file-name): Make `read-file-name'

=== modified file 'lisp/indent.el'
--- a/lisp/indent.el    2011-04-19 13:44:55 +0000
+++ b/lisp/indent.el    2011-11-29 15:55:54 +0000
@@ -63,9 +63,11 @@
 
 (defun indent-according-to-mode ()
   "Indent line in proper way for current major mode.
-The buffer-local variable `indent-line-function' determines how to do this,
-but the functions `indent-relative' and `indent-relative-maybe' are
-special; we don't actually use them here."
+Normally, this is done by calling the function specified by the
+variable `indent-line-function'.  However, if the value of that
+variable is `indent-relative' or `indent-relative-maybe', handle
+it specially (since those functions are used for tabbing); in
+that case, indent by aligning to the previous non-blank line."
   (interactive)
   (syntax-propertize (line-end-position))
   (if (memq indent-line-function
@@ -84,22 +86,25 @@
     (funcall indent-line-function)))
 
 (defun indent-for-tab-command (&optional arg)
-  "Indent line or region in proper way for current major mode or insert a tab.
-Depending on `tab-always-indent', either insert a tab or indent.
-
-In most major modes, if point was in the current line's indentation,
-it is moved to the first non-whitespace character after indenting;
-otherwise it stays at the same position in the text.
-
-If a prefix argument is given, also rigidly indent the entire
+  "Indent the current line or region, or insert a tab, as appropriate.
+This function either inserts a tab, or indents the current line,
+or performs symbol completion, depending on `tab-always-indent'.
+The function called to actually indent the line or insert a tab
+is given by the variable `indent-line-function'.
+
+If a prefix argument is given, after this function indents the
+current line or inserts a tab, it also rigidly indents the entire
 balanced expression which starts at the beginning of the current
-line to reflect the current line's change in indentation.
+line, to reflect the current line's indentation.
+
+In most major modes, if point was in the current line's
+indentation, it is moved to the first non-whitespace character
+after indenting; otherwise it stays at the same position relative
+to the text.
 
 If `transient-mark-mode' is turned on and the region is active,
-indent the region (in this case, any prefix argument is ignored).
-
-The function actually called to indent the line is determined by the value of
-`indent-line-function'."
+this function instead calls `indent-region'.  In this case, any
+prefix argument is ignored."
   (interactive "P")
   (cond
    ;; The region is active, indent it.
@@ -393,34 +398,14 @@
      with it.
   2) If `indent-region-function' is non-nil, call that function
      to indent the region.
-  3) Indent each line as specified by the variable `indent-line-function'.
+  3) Indent each line via `indent-according-to-mode'.
 
 Called from a program, START and END specify the region to indent.
 If the third argument COLUMN is an integer, it specifies the
 column to indent to; if it is nil, use one of the three methods above."
   (interactive "r\nP")
-  (if (null column)
-      (if fill-prefix
-         (save-excursion
-           (goto-char end)
-           (setq end (point-marker))
-           (goto-char start)
-           (let ((regexp (regexp-quote fill-prefix)))
-             (while (< (point) end)
-               (or (looking-at regexp)
-                   (and (bolp) (eolp))
-                   (insert fill-prefix))
-               (forward-line 1))))
-       (if indent-region-function
-           (funcall indent-region-function start end)
-         (save-excursion
-           (setq end (copy-marker end))
-           (goto-char start)
-           (while (< (point) end)
-             (or (and (bolp) (eolp))
-                 (indent-according-to-mode))
-             (forward-line 1))
-           (move-marker end nil))))
+  (cond
+   (column
     (setq column (prefix-numeric-value column))
     (save-excursion
       (goto-char end)
@@ -433,6 +418,28 @@
            (indent-to column 0))
        (forward-line 1))
       (move-marker end nil)))
+   (fill-prefix
+    (save-excursion
+      (goto-char end)
+      (setq end (point-marker))
+      (goto-char start)
+      (let ((regexp (regexp-quote fill-prefix)))
+       (while (< (point) end)
+         (or (looking-at regexp)
+             (and (bolp) (eolp))
+             (insert fill-prefix))
+         (forward-line 1)))))
+   (indent-region-function
+    (funcall indent-region-function start end))
+   (t
+    (save-excursion
+      (setq end (copy-marker end))
+      (goto-char start)
+      (while (< (point) end)
+       (or (and (bolp) (eolp))
+           (indent-according-to-mode))
+       (forward-line 1))
+      (move-marker end nil))))
   ;; In most cases, reindenting modifies the buffer, but it may also
   ;; leave it unmodified, in which case we have to deactivate the mark
   ;; by hand.


reply via email to

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