summaryrefslogtreecommitdiff
path: root/lisp/align.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/align.el')
-rw-r--r--lisp/align.el74
1 files changed, 42 insertions, 32 deletions
diff --git a/lisp/align.el b/lisp/align.el
index 5e02520aae0..be70f8f9d4f 100644
--- a/lisp/align.el
+++ b/lisp/align.el
@@ -86,10 +86,9 @@
;; '((my-rule
;; (regexp . "Sample")))
;; :type align-rules-list-type
+;; :risky t
;; :group 'my-package)
;;
-;; (put 'my-align-rules-list 'risky-local-variable t)
-;;
;; (add-to-list 'align-dq-string-modes 'my-package-mode)
;; (add-to-list 'align-open-comment-modes 'my-package-mode)
;;
@@ -160,7 +159,8 @@ string), this heuristic is used to determine how far before and after
point we should search in looking for a region separator. Larger
values can mean slower performance in large files, although smaller
values may cause unexpected behavior at times."
- :type 'integer
+ :type '(choice (const :tag "Don't use heuristic when aligning a region" nil)
+ integer)
:group 'align)
(defcustom align-highlight-change-face 'highlight
@@ -176,7 +176,7 @@ values may cause unexpected behavior at times."
(defcustom align-large-region 10000
"If an integer, defines what constitutes a \"large\" region.
If nil, then no messages will ever be printed to the minibuffer."
- :type 'integer
+ :type '(choice (const :tag "Align a large region silently" nil) integer)
:group 'align)
(defcustom align-c++-modes '(c++-mode c-mode java-mode)
@@ -318,10 +318,9 @@ The possible settings for `align-region-separate' are:
; (const largest)
(regexp :tag "Regexp defines section boundaries")
(function :tag "Function defines section boundaries"))
+ :risky t
:group 'align)
-(put 'align-region-separate 'risky-local-variable t)
-
(defvar align-rules-list-type
'(repeat
(cons
@@ -356,11 +355,11 @@ The possible settings for `align-region-separate' are:
(cons :tag "Valid"
(const :tag "(Return non-nil if rule is valid)"
valid)
- (function :value t))
+ (function :value always))
(cons :tag "Run If"
(const :tag "(Return non-nil if rule should run)"
run-if)
- (function :value t))
+ (function :value always))
(cons :tag "Column"
(const :tag "(Column to fix alignment at)" column)
(choice :value comment-column
@@ -545,16 +544,16 @@ The possible settings for `align-region-separate' are:
(regexp . "\\(\\s-*\\)\\\\\\\\")
(modes . align-tex-modes))
- ;; With a numeric prefix argument, or C-u, space delimited text
- ;; tables will be aligned.
+ ;; Align space delimited text as columns.
(text-column
(regexp . "\\(^\\|\\S-\\)\\([ \t]+\\)\\(\\S-\\|$\\)")
(group . 2)
(modes . align-text-modes)
(repeat . t)
(run-if . ,(lambda ()
- (and current-prefix-arg
- (not (eq '- current-prefix-arg))))))
+ (and (not (eq '- current-prefix-arg))
+ (not (apply #'provided-mode-derived-p
+ major-mode align-tex-modes))))))
;; With a negative prefix argument, lists of dollar figures will
;; be aligned.
@@ -698,10 +697,9 @@ The following attributes are meaningful:
(see the documentation of that variable for possible
values), and any separation argument passed to `align'."
:type align-rules-list-type
+ :risky t
:group 'align)
-(put 'align-rules-list 'risky-local-variable t)
-
(defvar align-exclude-rules-list-type
'(repeat
(cons
@@ -769,10 +767,9 @@ The following attributes are meaningful:
"A list describing text that should be excluded from alignment.
See the documentation for `align-rules-list' for more info."
:type align-exclude-rules-list-type
+ :risky t
:group 'align)
-(put 'align-exclude-rules-list 'risky-local-variable t)
-
;;; Internal Variables:
(defvar-local align-mode-rules-list nil
@@ -822,8 +819,8 @@ See the variable `align-exclude-rules-list' for more details.")
(regexp . "\\(\\s-+\\)use\\s-+entity")))
"Alignment rules for `vhdl-mode'. See `align-rules-list' for more info."
:type align-rules-list-type
+ :risky t
:group 'align)
-(put 'align-vhdl-rules-list 'risky-local-variable t)
(make-obsolete-variable 'align-vhdl-rules-list "no longer used." "27.1")
(defun align-set-vhdl-rules ()
@@ -836,11 +833,22 @@ See the variable `align-exclude-rules-list' for more details.")
;;;###autoload
(defun align (beg end &optional separate rules exclude-rules)
"Attempt to align a region based on a set of alignment rules.
-BEG and END mark the region. If BEG and END are specifically set to
-nil (this can only be done programmatically), the beginning and end of
-the current alignment section will be calculated based on the location
-of point, and the value of `align-region-separate' (or possibly each
-rule's `separate' attribute).
+Interactively, BEG and END are the mark/point of the current region.
+
+Many modes define specific alignment rules, and some of these
+rules in some modes react to the current prefix argument. For
+instance, in `text-mode', \\`M-x align' will align into columns
+based on space delimiters, while \\`C-u -' \\`M-x align' will align
+into columns based on the \"$\" character. See the
+`align-rules-list' variable definition for the specific rules.
+
+Also see `align-regexp', which will guide you through various
+parameters for aligning text.
+
+Non-interactively, if BEG and END are nil, the beginning and end
+of the current alignment section will be calculated based on the
+location of point, and the value of `align-region-separate' (or
+possibly each rule's `separate' attribute).
If SEPARATE is non-nil, it overrides the value of
`align-region-separate' for all rules, except those that have their
@@ -889,6 +897,15 @@ on the format of these lists."
BEG and END mark the limits of the region. Interactively, this function
prompts for the regular expression REGEXP to align with.
+Interactively, if you specify a prefix argument, the function
+will guide you through entering the full regular expression, and
+then prompts for which subexpression parenthesis GROUP (default
+1) within REGEXP to modify, the amount of SPACING (default
+`align-default-spacing') to use, and whether or not to REPEAT the
+rule throughout the line.
+
+See `align-rules-list' for more information about these options.
+
For example, let's say you had a list of phone numbers, and wanted to
align them so that the opening parentheses would line up:
@@ -908,15 +925,8 @@ regular expression after you enter it. Interactively, you only
need to supply the characters to be lined up, and any preceding
whitespace is replaced.
-Non-interactively (or if you specify a prefix argument), you must
-enter the full regular expression, including the subexpression.
-Interactively, the function also then prompts for which
-subexpression parenthesis GROUP (default 1) within REGEXP to
-modify, the amount of SPACING (default `align-default-spacing')
-to use, and whether or not to REPEAT the rule throughout the
-line.
-
-See `align-rules-list' for more information about these options.
+Non-interactively, you must enter the full regular expression,
+including the subexpression.
The non-interactive form of the previous example would look something like:
(align-regexp (point-min) (point-max) \"\\\\(\\\\s-*\\\\)(\")
@@ -928,7 +938,7 @@ construct a rule to pass to `align-region', which does the real work."
(list (region-beginning) (region-end))
(if current-prefix-arg
(list (read-string "Complex align using regexp: "
- "\\(\\s-*\\)" 'align-regexp-history)
+ "\\(\\s-*\\) " 'align-regexp-history)
(string-to-number
(read-string
"Parenthesis group to modify (justify if negative): " "1"))