]> code.delx.au - gnu-emacs/blobdiff - lisp/whitespace.el
Merge from origin/emacs-24
[gnu-emacs] / lisp / whitespace.el
index 917f0432ef2b11475c9b99affc54d67916392461..b4cd67ff6b91c2abed1b0d01330b551a08e0f535 100644 (file)
@@ -1,6 +1,6 @@
 ;;; whitespace.el --- minor mode to visualize TAB, (HARD) SPACE, NEWLINE
 
-;; Copyright (C) 2000-2014 Free Software Foundation, Inc.
+;; Copyright (C) 2000-2015 Free Software Foundation, Inc.
 
 ;; Author: Vinicius Jose Latorre <viniciusjl@ig.com.br>
 ;; Maintainer: Vinicius Jose Latorre <viniciusjl@ig.com.br>
 ;; `whitespace-indentation'    Face used to visualize 8 or more
 ;;                             SPACEs at beginning of line.
 ;;
+;; `whitespace-big-indent'     Face used to visualize big indentation.
+;;
 ;; `whitespace-empty'          Face used to visualize empty lines at
 ;;                             beginning and/or end of buffer.
 ;;
 ;; `whitespace-indentation-regexp'     Specify regexp for 8 or more
 ;;                                     SPACEs at beginning of line.
 ;;
+;; `whitespace-big-indent-regexp'      Specify big indentation at beginning of line
+;;                                     regexp.
+;;
 ;; `whitespace-empty-at-bob-regexp'    Specify regexp for empty lines
 ;;                                     at beginning of buffer.
 ;;
@@ -452,6 +457,10 @@ It's a list containing some or all of the following values:
                        It has effect only if `face' (see above)
                        is present in `whitespace-style'.
 
+   big-indent          Big indentations are visualized via faces.
+                       It has effect only if `face' (see above)
+                       is present in `whitespace-style'.
+
    space-after-tab::tab                8 or more SPACEs after a TAB are
                                visualized via faces.
                                It has effect only if `face' (see above)
@@ -544,6 +553,8 @@ See also `whitespace-display-mappings' for documentation."
                         (const :tag "(Face) NEWLINEs" newline)
                         (const :tag "(Face) Indentation SPACEs"
                                indentation)
+                        (const :tag "(Face) Too much line indentation"
+                               big-indent)
                         (const :tag "(Face) Empty Lines At BOB And/Or EOB"
                                empty)
                         (const :tag "(Face) SPACEs after TAB"
@@ -673,6 +684,12 @@ Used when `whitespace-style' includes the value `indentation'.")
   "Face used to visualize 8 or more SPACEs at beginning of line."
   :group 'whitespace)
 
+(defface whitespace-big-indent
+  '((((class mono)) :inverse-video t :weight bold :underline t)
+    (t :background "red" :foreground "firebrick"))
+  "Face used to visualize big indentation."
+  :group 'whitespace)
+
 
 (defvar whitespace-empty 'whitespace-empty
   "Symbol face used to visualize empty lines at beginning and/or end of buffer.
@@ -838,6 +855,21 @@ Used when `whitespace-style' includes `space-after-tab',
               string)
   :group 'whitespace)
 
+(defcustom whitespace-big-indent-regexp
+  "^\\(\\(?:\t\\{4,\\}\\| \\{32,\\}\\)[\t ]*\\)"
+  "Specify big indentation regexp.
+
+If you're using `mule' package, there may be other characters
+besides \"\\t\" that should be considered TAB.
+
+NOTE: Enclose always by \\\\( and \\\\) the elements to highlight.
+      Use exactly one pair of enclosing \\\\( and \\\\).
+
+Used when `whitespace-style' includes `big-indent'."
+  :version "25.1"
+  :type '(regexp :tag "Detect too much indentation at the beginning of a line")
+  :group 'whitespace)
+
 
 (defcustom whitespace-line-column 80
   "Specify column beyond which the line is highlighted.
@@ -1141,6 +1173,7 @@ See also `whitespace-newline' and `whitespace-display-mappings'."
     indentation
     indentation::tab
     indentation::space
+    big-indent
     space-after-tab
     space-after-tab::tab
     space-after-tab::space
@@ -1167,6 +1200,7 @@ See also `whitespace-newline' and `whitespace-display-mappings'."
     (?\C-i . indentation)
     (?I    . indentation::tab)
     (?i    . indentation::space)
+    (?\C-t . big-indent)
     (?\C-a . space-after-tab)
     (?A    . space-after-tab::tab)
     (?a    . space-after-tab::space)
@@ -1250,6 +1284,7 @@ Interactively, it reads one of the following chars:
    C-i toggle indentation SPACEs visualization (via `indent-tabs-mode')
    I   toggle indentation SPACEs visualization
    i   toggle indentation TABs visualization
+   C-t toggle big indentation visualization
    C-a toggle SPACEs after TAB visualization (via `indent-tabs-mode')
    A   toggle SPACEs after TAB: SPACEs visualization
    a   toggle SPACEs after TAB: TABs visualization
@@ -1279,6 +1314,7 @@ The valid symbols are:
    indentation         toggle indentation SPACEs visualization
    indentation::tab    toggle indentation SPACEs visualization
    indentation::space  toggle indentation TABs visualization
+   big-indent          toggle big indentation visualization
    space-after-tab             toggle SPACEs after TAB visualization
    space-after-tab::tab                toggle SPACEs after TAB: SPACEs visualization
    space-after-tab::space      toggle SPACEs after TAB: TABs visualization
@@ -1329,6 +1365,7 @@ Interactively, it accepts one of the following chars:
    C-i toggle indentation SPACEs visualization (via `indent-tabs-mode')
    I   toggle indentation SPACEs visualization
    i   toggle indentation TABs visualization
+   C-t toggle big indentation visualization
    C-a toggle SPACEs after TAB visualization (via `indent-tabs-mode')
    A   toggle SPACEs after TAB: SPACEs visualization
    a   toggle SPACEs after TAB: TABs visualization
@@ -1358,6 +1395,7 @@ The valid symbols are:
    indentation         toggle indentation SPACEs visualization
    indentation::tab    toggle indentation SPACEs visualization
    indentation::space  toggle indentation TABs visualization
+   big-indent          toggle big indentation visualization
    space-after-tab             toggle SPACEs after TAB visualization
    space-after-tab::tab                toggle SPACEs after TAB: SPACEs visualization
    space-after-tab::space      toggle SPACEs after TAB: TABs visualization
@@ -1856,6 +1894,7 @@ cleaning up these problems."
  []  C-i - toggle indentation SPACEs visualization (via `indent-tabs-mode')
  []  I   - toggle indentation SPACEs visualization
  []  i   - toggle indentation TABs visualization
+ []  C-t - toggle big indentation visualization
  []  C-a - toggle SPACEs after TAB visualization (via `indent-tabs-mode')
  []  A   - toggle SPACEs after TAB: SPACEs visualization
  []  a   - toggle SPACEs after TAB: TABs visualization
@@ -2109,6 +2148,7 @@ resultant list will be returned."
           (memq 'indentation             whitespace-active-style)
           (memq 'indentation::tab        whitespace-active-style)
           (memq 'indentation::space      whitespace-active-style)
+          (memq 'big-indent              whitespace-active-style)
           (memq 'space-after-tab         whitespace-active-style)
           (memq 'space-after-tab::tab    whitespace-active-style)
           (memq 'space-after-tab::space  whitespace-active-style)
@@ -2196,6 +2236,9 @@ resultant list will be returned."
                  ;; Show indentation SPACEs (TABs).
                  (whitespace-indentation-regexp 'space)))
               1 whitespace-indentation t)))
+       ,@(when (memq 'big-indent whitespace-active-style)
+           ;; Show big indentation.
+           `((,whitespace-big-indent-regexp 1 'whitespace-big-indent t)))
        ,@(when (memq 'empty whitespace-active-style)
            ;; Show empty lines at beginning of buffer.
            `((,#'whitespace-empty-at-bob-regexp