]> code.delx.au - gnu-emacs/blobdiff - lisp/indent.el
(quail-help): The output message is improved.
[gnu-emacs] / lisp / indent.el
index 6c2f1462de9b9d9f852c8bf0802c07a2f0b78f95..1a7193893c4af5dbbc13a87cc162ad2093f3cc49 100644 (file)
 
 ;;; Code:
 
 
 ;;; Code:
 
-(defvar standard-indent 4 "\
-Default number of columns for margin-changing functions to indent.")
+(defgroup indent nil
+  "Indentation commands"
+  :group 'editing)
 
 
-(defvar indent-line-function 'indent-to-left-margin "\
-Function to indent current line.")
+(defcustom standard-indent 4
+  "*Default number of columns for margin-changing functions to indent."
+  :group 'indent
+  :type 'integer)
+
+(defvar indent-line-function 'indent-to-left-margin
+  "Function to indent current line.")
 
 (defun indent-according-to-mode ()
   "Indent line in proper way for current major mode."
 
 (defun indent-according-to-mode ()
   "Indent line in proper way for current major mode."
@@ -40,7 +46,11 @@ Function to indent current line.")
   (funcall indent-line-function))
 
 (defun indent-for-tab-command (&optional prefix-arg)
   (funcall indent-line-function))
 
 (defun indent-for-tab-command (&optional prefix-arg)
-  "Indent line in proper way for current major mode."
+  "Indent line in proper way for current major mode.
+If initial point was within line's indentation, position after
+the indentation.  Else stay at same point in text.
+The function actually called is determined by the value of
+`indent-line-function'."
   (interactive "P")
   (if (eq indent-line-function 'indent-to-left-margin)
       (insert-tab prefix-arg)
   (interactive "P")
   (if (eq indent-line-function 'indent-to-left-margin)
       (insert-tab prefix-arg)
@@ -50,10 +60,11 @@ Function to indent current line.")
 
 (defun insert-tab (&optional prefix-arg)
   (let ((count (prefix-numeric-value prefix-arg)))
 
 (defun insert-tab (&optional prefix-arg)
   (let ((count (prefix-numeric-value prefix-arg)))
-    (if abbrev-mode
+    (if (and abbrev-mode
+            (eq (char-syntax (preceding-char)) ?w))
        (expand-abbrev))
     (if indent-tabs-mode
        (expand-abbrev))
     (if indent-tabs-mode
-       (insert ?\t count)
+       (insert-char ?\t count)
       (indent-to (* tab-width (+ count (/ (current-column) tab-width)))))))
 
 (defun indent-rigidly (start end arg)
       (indent-to (* tab-width (+ count (/ (current-column) tab-width)))))))
 
 (defun indent-rigidly (start end arg)
@@ -84,7 +95,7 @@ only if necessary.  It leaves point at end of indentation."
   (back-to-indentation)
   (let ((cur-col (current-column)))
     (cond ((< cur-col column)
   (back-to-indentation)
   (let ((cur-col (current-column)))
     (cond ((< cur-col column)
-          (if (> (- column (* (/ cur-col tab-width) tab-width)) tab-width)
+          (if (>= (- column (* (/ cur-col tab-width) tab-width)) tab-width)
               (delete-region (point)
                              (progn (skip-chars-backward " ") (point))))
           (indent-to column))
               (delete-region (point)
                              (progn (skip-chars-backward " ") (point))))
           (indent-to column))
@@ -278,11 +289,14 @@ A value of nil means really run `indent-according-to-mode' on each line.")
 
 (defun indent-region (start end column)
   "Indent each nonblank line in the region.
 
 (defun indent-region (start end column)
   "Indent each nonblank line in the region.
-With no argument, indent each line using `indent-according-to-mode',
+With prefix no argument, indent each line using `indent-according-to-mode',
 or use `indent-region-function' to do the whole region if that's non-nil.
 If there is a fill prefix, make each line start with the fill prefix.
 With argument COLUMN, indent each line to that column.
 or use `indent-region-function' to do the whole region if that's non-nil.
 If there is a fill prefix, make each line start with the fill prefix.
 With argument COLUMN, indent each line to that column.
-Called from a program, takes three args: START, END and COLUMN."
+
+When you call this from a program, START and END specify
+the region to indent, and COLUMN specifies the indentation column.
+If COLUMN is nil, then indent each line according to the mode."
   (interactive "r\nP")
   (if (null column)
       (if fill-prefix
   (interactive "r\nP")
   (if (null column)
       (if fill-prefix
@@ -329,10 +343,14 @@ Called from a program, takes three args: START, END and COLUMN."
 (defun indent-relative (&optional unindented-ok)
   "Space out to under next indent point in previous nonblank line.
 An indent point is a non-whitespace character following whitespace.
 (defun indent-relative (&optional unindented-ok)
   "Space out to under next indent point in previous nonblank line.
 An indent point is a non-whitespace character following whitespace.
+The following line shows the indentation points in this line.
+    ^         ^    ^     ^   ^           ^      ^  ^    ^
 If the previous nonblank line has no indent points beyond the
 column point starts at, `tab-to-tab-stop' is done instead."
   (interactive "P")
 If the previous nonblank line has no indent points beyond the
 column point starts at, `tab-to-tab-stop' is done instead."
   (interactive "P")
-  (if abbrev-mode (expand-abbrev))
+  (if (and abbrev-mode
+          (eq (char-syntax (preceding-char)) ?w))
+      (expand-abbrev))
   (let ((start-column (current-column))
        indent)
     (save-excursion
   (let ((start-column (current-column))
        indent)
     (save-excursion
@@ -357,10 +375,12 @@ column point starts at, `tab-to-tab-stop' is done instead."
          (move-marker opoint nil))
       (tab-to-tab-stop))))
 
          (move-marker opoint nil))
       (tab-to-tab-stop))))
 
-(defvar tab-stop-list
+(defcustom tab-stop-list
   '(8 16 24 32 40 48 56 64 72 80 88 96 104 112 120)
   '(8 16 24 32 40 48 56 64 72 80 88 96 104 112 120)
-  "*List of tab stop positions used by `tab-to-tab-stops'.
-This should be a list of integers, ordered from smallest to largest.")
+  "*List of tab stop positions used by `tab-to-tab-stop'.
+This should be a list of integers, ordered from smallest to largest."
+  :group 'indent
+  :type '(repeat integer))
 
 (defvar edit-tab-stops-map nil "Keymap used in `edit-tab-stops'.")
 (if edit-tab-stops-map
 
 (defvar edit-tab-stops-map nil "Keymap used in `edit-tab-stops'.")
 (if edit-tab-stops-map