X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/f590a2a442d19f3a74d7bbd02bbcb4e3239f2327..1cc3c18fd41142d2d7f9c2252c526ed45792a2ab:/lisp/align.el diff --git a/lisp/align.el b/lisp/align.el index 5e739c8f7c..911200f58a 100644 --- a/lisp/align.el +++ b/lisp/align.el @@ -1,16 +1,18 @@ ;;; align.el --- align text to a specific column, by regexp -;; Copyright (C) 1999, 2000, 2002 Free Sofware Foundation +;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, +;; 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. ;; Author: John Wiegley +;; Maintainer: FSF ;; Keywords: convenience languages lisp ;; This file is part of GNU Emacs. -;; GNU Emacs is free software; you can redistribute it and/or modify +;; GNU Emacs is free software: you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) -;; any later version. +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. ;; GNU Emacs is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -18,9 +20,7 @@ ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; along with GNU Emacs. If not, see . ;;; Commentary: @@ -127,17 +127,17 @@ ;;; User Variables: (defcustom align-load-hook nil - "*Hook that gets run after the aligner has been loaded." + "Hook that gets run after the aligner has been loaded." :type 'hook :group 'align) (defcustom align-indent-before-aligning nil - "*If non-nil, indent the marked region before aligning it." + "If non-nil, indent the marked region before aligning it." :type 'boolean :group 'align) (defcustom align-default-spacing 1 - "*An integer that represents the default amount of padding to use. + "An integer that represents the default amount of padding to use. If `align-to-tab-stop' is non-nil, this will represent the number of tab stops to use for alignment, rather than the number of spaces. Each alignment rule can optionally override both this variable. See @@ -146,13 +146,13 @@ Each alignment rule can optionally override both this variable. See :group 'align) (defcustom align-to-tab-stop 'indent-tabs-mode - "*If non-nil, alignments will always fall on a tab boundary. + "If non-nil, alignments will always fall on a tab boundary. It may also be a symbol, whose value will be taken." :type '(choice (const nil) symbol) :group 'align) (defcustom align-region-heuristic 500 - "*If non-nil, used as a heuristic by `align-current'. + "If non-nil, used as a heuristic by `align-current'. Since each alignment rule can possibly have its own set of alignment sections (whenever `align-region-separate' is non-nil, and not a string), this heuristic is used to determine how far before and after @@ -163,72 +163,72 @@ may cause unexpected behavior at times." :group 'align) (defcustom align-highlight-change-face 'highlight - "*The face to highlight with if changes are necessary." + "The face to highlight with if changes are necessary." :type 'face :group 'align) (defcustom align-highlight-nochange-face 'secondary-selection - "*The face to highlight with if no changes are necessary." + "The face to highlight with if no changes are necessary." :type 'face :group 'align) (defcustom align-large-region 10000 - "*If an integer, defines what constitutes a \"large\" region. + "If an integer, defines what constitutes a \"large\" region. If nil,then no messages will ever be printed to the minibuffer." :type 'integer :group 'align) (defcustom align-c++-modes '(c++-mode c-mode java-mode) - "*A list of modes whose syntax resembles C/C++." + "A list of modes whose syntax resembles C/C++." :type '(repeat symbol) :group 'align) (defcustom align-perl-modes '(perl-mode cperl-mode) - "*A list of modes where perl syntax is to be seen." + "A list of modes where perl syntax is to be seen." :type '(repeat symbol) :group 'align) (defcustom align-lisp-modes '(emacs-lisp-mode lisp-interaction-mode lisp-mode scheme-mode) - "*A list of modes whose syntax resembles Lisp." + "A list of modes whose syntax resembles Lisp." :type '(repeat symbol) :group 'align) (defcustom align-tex-modes '(tex-mode plain-tex-mode latex-mode slitex-mode) - "*A list of modes whose syntax resembles TeX (and family)." + "A list of modes whose syntax resembles TeX (and family)." :type '(repeat symbol) :group 'align) (defcustom align-text-modes '(text-mode outline-mode) - "*A list of modes whose content is plain text." + "A list of modes whose content is plain text." :type '(repeat symbol) :group 'align) (defcustom align-dq-string-modes (append align-lisp-modes align-c++-modes align-perl-modes '(python-mode)) - "*A list of modes where double quoted strings should be excluded." + "A list of modes where double quoted strings should be excluded." :type '(repeat symbol) :group 'align) (defcustom align-sq-string-modes (append align-perl-modes '(python-mode)) - "*A list of modes where single quoted strings should be excluded." + "A list of modes where single quoted strings should be excluded." :type '(repeat symbol) :group 'align) (defcustom align-open-comment-modes (append align-lisp-modes align-c++-modes align-perl-modes '(python-mode makefile-mode)) - "*A list of modes with a single-line comment syntax. + "A list of modes with a single-line comment syntax. These are comments as in Lisp, which have a beginning but, end with the line (i.e., `comment-end' is an empty string)." :type '(repeat symbol) :group 'align) (defcustom align-region-separate "^\\s-*[{}]?\\s-*$" - "*Select the method by which alignment sections will be separated. + "Select the method by which alignment sections will be separated. If this is a symbol, that symbol's value will be used. For the sake of clarification, consider the following example, which @@ -383,9 +383,6 @@ The possible settings for `align-region-separate' are: regexp function))))))) "The `type' form for any `align-rules-list' variable.") -(unless (functionp 'c-guess-basic-syntax) - (autoload 'c-guess-basic-syntax "cc-engine")) - (defcustom align-rules-list `((lisp-second-arg (regexp . "\\(^\\s-+[^( \t\n]\\|(\\(\\S-+\\)\\s-+\\)\\S-+\\(\\s-+\\)") @@ -466,13 +463,13 @@ The possible settings for `align-region-separate' are: (repeat . t) (modes . align-c++-modes) (run-if . ,(function (lambda () current-prefix-arg)))) -; (valid -; . ,(function -; (lambda () -; (memq (caar (c-guess-basic-syntax)) -; '(brace-list-intro -; brace-list-entry -; brace-entry-open)))))) + ; (valid + ; . ,(function + ; (lambda () + ; (memq (caar (c-guess-basic-syntax)) + ; '(brace-list-intro + ; brace-list-entry + ; brace-entry-open)))))) ;; With a prefix argument, comma delimiter will be aligned. Since ;; perl-mode doesn't give us enough syntactic information (and we @@ -525,11 +522,11 @@ The possible settings for `align-region-separate' are: (regexp . "\\(\\s-*\\)\\\\$") (modes . align-c++-modes) (column . c-backslash-column)) -; (valid -; . ,(function -; (lambda () -; (memq (caar (c-guess-basic-syntax)) -; '(cpp-macro cpp-macro-cont)))))) + ; (valid + ; . ,(function + ; (lambda () + ; (memq (caar (c-guess-basic-syntax)) + ; '(cpp-macro cpp-macro-cont)))))) (basic-line-continuation (regexp . "\\(\\s-*\\)\\\\$") @@ -561,7 +558,7 @@ The possible settings for `align-region-separate' are: ;; With a numeric prefix argument, or C-u, space delimited text ;; tables will be aligned. (text-column - (regexp . "\\(^\\|\\S-\\)\\(\\s-+\\)\\(\\S-\\|$\\)") + (regexp . "\\(^\\|\\S-\\)\\([ \t]+\\)\\(\\S-\\|$\\)") (group . 2) (modes . align-text-modes) (repeat . t) @@ -578,8 +575,13 @@ The possible settings for `align-region-separate' are: (justify . t) (run-if . ,(function (lambda () - (eq '- current-prefix-arg)))))) - "*A list describing all of the available alignment rules. + (eq '- current-prefix-arg))))) + + (css-declaration + (regexp . "^\\s-*\\w+:\\(\\s-*\\).*;") + (group . (1)) + (modes . '(css-mode html-mode)))) + "A list describing all of the available alignment rules. The format is: ((TITLE @@ -777,7 +779,7 @@ The following attributes are meaningful: (regexp . "^\\s-*#\\s-*\\(if\\w*\\|endif\\)\\(.*\\)$") (group . 2) (modes . align-c++-modes))) - "*A list describing text that should be excluded from alignment. + "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 :group 'align) @@ -835,7 +837,7 @@ See the variable `align-exclude-rules-list' for more details.") (use-entity (regexp . "\\(\\s-+\\)use\\s-+entity"))) - "*Alignment rules for `vhdl-mode'. See `align-rules-list' for more info." + "Alignment rules for `vhdl-mode'. See `align-rules-list' for more info." :type align-rules-list-type :group 'align) @@ -928,15 +930,14 @@ using a REGEXP like \"(\". All you would have to do is to mark the region, call `align-regexp' and type in that regular expression." (interactive (append - (list (min (point) (mark)) - (max (point) (mark))) + (list (region-beginning) (region-end)) (if current-prefix-arg (list (read-string "Complex align using regexp: " "\\(\\s-*\\)") - (string-to-int + (string-to-number (read-string "Parenthesis group to modify (justify if negative): " "1")) - (string-to-int + (string-to-number (read-string "Amount of spacing (or column if negative): " (number-to-string align-default-spacing))) (y-or-n-p "Repeat throughout line? ")) @@ -985,8 +986,7 @@ list of rules (see `align-rules-list'), it can be used to override the default alignment rules that would have been used to identify the text to be colored." (interactive - (list (min (mark) (point)) - (max (mark) (point)) + (list (region-beginning) (region-end) (completing-read "Title of rule to highlight: " (mapcar @@ -1073,7 +1073,7 @@ current position." (eq (char-before pos) ?\\)) (setq count (1+ count) pos (1- pos))) (eq (mod count 2) 1)) - (goto-char (match-beginning 2)))) + (goto-char (match-beginning (if reverse 1 2))))) result)) (defun align-new-section-p (beg end separator) @@ -1596,5 +1596,5 @@ aligner would have dealt with are." (run-hooks 'align-load-hook) -;;; arch-tag: ef79cccf-1db8-4888-a8a1-d7ce2d1532f7 +;; arch-tag: ef79cccf-1db8-4888-a8a1-d7ce2d1532f7 ;;; align.el ends here