From 427c362766155c95371a89d5bf48540ad3469f77 Mon Sep 17 00:00:00 2001 From: Michal Nazarewicz Date: Fri, 17 Oct 2014 20:23:03 -0400 Subject: [PATCH] Add a 'big-indent style to `whitespace-mode'. * lisp/whitespace.el (whitespace-style, whitespace-big-indent) (whitespace-big-indent-regexp, whitespace-style-value-list) (whitespace-toggle-option-alist, whitespace-interactive-char) (whitespace-toggle-options) (global-whitespace-toggle-options, whitespace-help-text) (whitespace-style-face-p, whitespace-color-on): Add a 'big-indent style to `whitespace-mode' to indicate that the line indentation is too deep. By default, 32 SPACEs or four TABs are considered too many but `whitespace-big-indent-regexp' can be configured. --- lisp/ChangeLog | 12 ++++++++++++ lisp/whitespace.el | 42 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 1a36c009d6a..e12b0090936 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,15 @@ +2014-10-18 Michal Nazarewicz + + * whitespace.el (whitespace-style, whitespace-big-indent) + (whitespace-big-indent-regexp, whitespace-style-value-list) + (whitespace-toggle-option-alist, whitespace-interactive-char) + (whitespace-toggle-options) + (global-whitespace-toggle-options, whitespace-help-text) + (whitespace-style-face-p, whitespace-color-on): Add a 'big-indent + style to `whitespace-mode' to indicate that the line indentation + is too deep. By default, 32 SPACEs or four TABs are considered + too many but `whitespace-big-indent-regexp' can be configured. + 2014-10-17 Michal Nazarewicz * textmodes/tildify.el (tildify--pick-alist-entry): rename from diff --git a/lisp/whitespace.el b/lisp/whitespace.el index 917f0432ef2..4edeff99ce5 100644 --- a/lisp/whitespace.el +++ b/lisp/whitespace.el @@ -266,6 +266,8 @@ ;; `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. ;; @@ -286,6 +288,9 @@ ;; `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,20 @@ 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'." + :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 +1172,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 +1199,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 +1283,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 +1313,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 +1364,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 +1394,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 +1893,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 +2147,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 +2235,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 -- 2.11.4.GIT