Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
emacs
emacs
Commits
85cc3d4f
Commit
85cc3d4f
authored
Aug 24, 2010
by
Vinicius Jose Latorre
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix some bugs. New version 13.1.
parent
cb8759ca
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
148 additions
and
53 deletions
+148
-53
lisp/ChangeLog
lisp/ChangeLog
+20
-1
lisp/whitespace.el
lisp/whitespace.el
+128
-52
No files found.
lisp/ChangeLog
View file @
85cc3d4f
2010-08-24 Vinicius Jose Latorre <viniciusjl@ig.com.br>
* whitespace.el: Allow cleaning up blanks without blank
visualization (Bug#6651). Adjust help window for
whitespace-toggle-options (Bug#6479). Allow to use fill-column
instead of whitespace-line-column (from EmacsWiki). New version
13.1.
(whitespace-style): Added new value 'face. Adjust docstring.
(whitespace-space, whitespace-hspace, whitespace-tab): Adjust
foreground property face.
(whitespace-line-column): Adjust docstring and type declaration.
(whitespace-style-value-list, whitespace-toggle-option-alist)
(whitespace-help-text): Adjust const initialization.
(whitespace-toggle-options, global-whitespace-toggle-options):
Adjust docstring.
(whitespace-display-window, whitespace-interactive-char)
(whitespace-style-face-p, whitespace-color-on): Adjust code.
(whitespace-help-scroll): New fun.
2010-08-24 Chong Yidong <cyd@stupidchicken.com>
* emacs-lisp/package.el (list-packages): Alias for
...
...
@@ -164,7 +183,7 @@
(whitespace-post-command-hook, whitespace-display-char-on):
Adjust code.
(whitespace-looking-back, whitespace-buffer-changed): New funs.
(whitespace-space-regexp, whitespace-tab-regexp):
E
liminate
funs
.
(whitespace-space-regexp, whitespace-tab-regexp):
Fun e
liminate
d
.
2010-08-19 Stefan Monnier <monnier@iro.umontreal.ca>
...
...
lisp/whitespace.el
View file @
85cc3d4f
...
...
@@ -6,7 +6,7 @@
;; Author: Vinicius Jose Latorre <viniciusjl@ig.com.br>
;; Maintainer: Vinicius Jose Latorre <viniciusjl@ig.com.br>
;; Keywords: data, wp
;; Version: 13.
0
;; Version: 13.
1
;; X-URL: http://www.emacswiki.org/cgi-bin/wiki/ViniciusJoseLatorre
;; This file is part of GNU Emacs.
...
...
@@ -382,19 +382,28 @@
(
defcustom
whitespace-style
'
(
tabs
spaces
trailing
lines
space-before-tab
newline
indentation
empty
space-after-tab
space-mark
tab-mark
newline-mark
)
'
(
face
tabs
spaces
trailing
lines
space-before-tab
newline
indentation
empty
space-after-tab
space-mark
tab-mark
newline-mark
)
"Specify which kind of blank is visualized.
It's a list containing some or all of the following values:
face enable all visualization via faces (see below).
trailing trailing blanks are visualized via faces.
It has effect only if `face' (see above)
is present in `whitespace-style'.
tabs TABs are visualized via faces.
It has effect only if `face' (see above)
is present in `whitespace-style'.
spaces SPACEs and HARD SPACEs are visualized via
faces.
It has effect only if `face' (see above)
is present in `whitespace-style'.
lines lines which have columns beyond
`whitespace-line-column' are highlighted via
...
...
@@ -402,6 +411,8 @@ It's a list containing some or all of the following values:
Whole line is highlighted.
It has precedence over `lines-tail' (see
below).
It has effect only if `face' (see above)
is present in `whitespace-style'.
lines-tail lines which have columns beyond
`whitespace-line-column' are highlighted via
...
...
@@ -409,45 +420,69 @@ It's a list containing some or all of the following values:
But only the part of line which goes
beyond `whitespace-line-column' column.
It has effect only if `lines' (see above)
is not present in `whitespace-style'.
is not present in `whitespace-style'
and if `face' (see above) is present in
`whitespace-style'.
newline NEWLINEs are visualized via faces.
It has effect only if `face' (see above)
is present in `whitespace-style'.
empty empty lines at beginning and/or end of buffer
are visualized via faces.
It has effect only if `face' (see above)
is present in `whitespace-style'.
indentation::tab 8 or more SPACEs at beginning of line are
visualized via faces.
It has effect only if `face' (see above)
is present in `whitespace-style'.
indentation::space TABs at beginning of line are visualized via
faces.
It has effect only if `face' (see above)
is present in `whitespace-style'.
indentation 8 or more SPACEs at beginning of line are
visualized, if `indent-tabs-mode' (which see)
is non-nil; otherwise, TABs at beginning of
line 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)
is present in `whitespace-style'.
space-after-tab::space TABs are visualized when 8 or more
SPACEs occur after a TAB, via faces.
It has effect only if `face' (see above)
is present in `whitespace-style'.
space-after-tab 8 or more SPACEs after a TAB are
visualized, if `indent-tabs-mode'
(which see) is non-nil; otherwise,
the TABs are visualized via faces.
It has effect only if `face' (see above)
is present in `whitespace-style'.
space-before-tab::tab SPACEs before TAB are visualized via
faces.
It has effect only if `face' (see above)
is present in `whitespace-style'.
space-before-tab::space TABs are visualized when SPACEs occur
before TAB, via faces.
It has effect only if `face' (see above)
is present in `whitespace-style'.
space-before-tab SPACEs before TAB are visualized, if
`indent-tabs-mode' (which see) is
non-nil; otherwise, the TABs are
visualized via faces.
It has effect only if `face' (see above)
is present in `whitespace-style'.
space-mark SPACEs and HARD SPACEs are visualized via
display table.
...
...
@@ -486,6 +521,11 @@ So, for example, if indentation and indentation::space are
included in `whitespace-style' list, the indentation value is
evaluated instead of indentation::space value.
One reason for not visualize spaces via faces (if `face' is not
included in `whitespace-style') is to use exclusively for
cleanning up a buffer. See `whitespace-cleanup' and
`whitespace-cleanup-region' for documentation.
See also `whitespace-display-mappings' for documentation."
:type
'
(
repeat
:tag
"Kind of Blank"
(
choice
:tag
"Kind of Blank Face"
...
...
@@ -521,9 +561,9 @@ Used when `whitespace-style' includes the value `spaces'."
(
defface
whitespace-space
'
((((
class
color
)
(
background
dark
))
(
:background
"grey20"
:foreground
"
aquamarine3
"
))
(
:background
"grey20"
:foreground
"
darkgray
"
))
(((
class
color
)
(
background
light
))
(
:background
"LightYellow"
:foreground
"
aquamarine3
"
))
(
:background
"LightYellow"
:foreground
"
lightgray
"
))
(
t
(
:inverse-video
t
)))
"Face used to visualize SPACE."
:group
'whitespace
)
...
...
@@ -539,9 +579,9 @@ Used when `whitespace-style' includes the value `spaces'."
(
defface
whitespace-hspace
; 'nobreak-space
'
((((
class
color
)
(
background
dark
))
(
:background
"grey24"
:foreground
"
aquamarine3
"
))
(
:background
"grey24"
:foreground
"
darkgray
"
))
(((
class
color
)
(
background
light
))
(
:background
"LemonChiffon3"
:foreground
"
aquamarine3
"
))
(
:background
"LemonChiffon3"
:foreground
"
lightgray
"
))
(
t
(
:inverse-video
t
)))
"Face used to visualize HARD SPACE."
:group
'whitespace
)
...
...
@@ -557,9 +597,9 @@ Used when `whitespace-style' includes the value `tabs'."
(
defface
whitespace-tab
'
((((
class
color
)
(
background
dark
))
(
:background
"grey22"
:foreground
"
aquamarine3
"
))
(
:background
"grey22"
:foreground
"
darkgray
"
))
(((
class
color
)
(
background
light
))
(
:background
"beige"
:foreground
"
aquamarine3
"
))
(
:background
"beige"
:foreground
"
lightgray
"
))
(
t
(
:inverse-video
t
)))
"Face used to visualize TAB."
:group
'whitespace
)
...
...
@@ -866,8 +906,13 @@ Used when `whitespace-style' includes `space-after-tab',
(defcustom whitespace-line-column 80
"Specify column beyond which the line is highlighted.
It must be an integer or nil. If nil, the `fill-column' variable value is
used.
Used when `whitespace-style' includes `lines' or `lines-tail'."
:type '(integer :tag "Line Length")
:type '(choice :tag "Line Length Limit"
(integer :tag "Line Length")
(const :tag "Use fill-column" nil))
:group 'whitespace)
...
...
@@ -1151,7 +1196,8 @@ See also `whitespace-newline' and `whitespace-display-mappings'."
(defconst whitespace-style-value-list
'(tabs
'(face
tabs
spaces
trailing
lines
...
...
@@ -1176,7 +1222,8 @@ See also `whitespace-newline' and `whitespace-display-mappings'."
(defconst whitespace-toggle-option-alist
'((?t . tabs)
'((?f . face)
(?t . tabs)
(?s . spaces)
(?r . trailing)
(?l . lines)
...
...
@@ -1256,6 +1303,7 @@ Interactively, it reads one of the following chars:
CHAR MEANING
(VIA FACES)
f toggle face visualization
t toggle TAB visualization
s toggle SPACE and HARD SPACE visualization
r toggle trailing blanks visualization
...
...
@@ -1284,6 +1332,7 @@ Interactively, it reads one of the following chars:
Non-interactively, ARG should be a symbol or a list of symbols.
The valid symbols are:
face toggle face visualization
tabs toggle TAB visualization
spaces toggle SPACE and HARD SPACE visualization
trailing toggle trailing blanks visualization
...
...
@@ -1333,6 +1382,7 @@ Interactively, it accepts one of the following chars:
CHAR MEANING
(VIA FACES)
f toggle face visualization
t toggle TAB visualization
s toggle SPACE and HARD SPACE visualization
r toggle trailing blanks visualization
...
...
@@ -1361,6 +1411,7 @@ Interactively, it accepts one of the following chars:
Non-interactively, ARG should be a symbol or a list of symbols.
The valid symbols are:
face toggle face visualization
tabs toggle TAB visualization
spaces toggle SPACE and HARD SPACE visualization
trailing toggle trailing blanks visualization
...
...
@@ -1890,9 +1941,10 @@ cleaning up these problems."
(defconst whitespace-help-text
"\
Whitespace Toggle Options
FACES
Whitespace Toggle Options |
scroll
up
:
SPC
or
>
|
|
scroll
down:
M-SPC
or
<
|
FACES \\__________________________/
[] f - toggle face visualization
[] t - toggle TAB visualization
[] s - toggle SPACE and HARD SPACE visualization
[] r - toggle trailing blanks visualization
...
...
@@ -1966,15 +2018,13 @@ cleaning up these problems."
"Display BUFFER in a new window."
(goto-char (point-min))
(set-buffer-modified-p nil)
(let ((size (- (window-height)
(max window-min-height
(1+ (count-lines (point-min)
(point-max)))))))
(when (<= size 0)
(kill-buffer buffer)
(error "Frame height is too small; \
(when (< (window-height) (* 2 window-min-height))
(kill-buffer buffer)
(error "Window height is too small; \
can't split window to display whitespace toggle options"))
(set-window-buffer (split-window nil size) buffer)))
(let ((win (split-window)))
(set-window-buffer win buffer)
(shrink-window-if-larger-than-buffer win)))
(defun whitespace-kill-buffer (buffer-name)
...
...
@@ -1990,6 +2040,24 @@ can't split window to display whitespace toggle options"))
(whitespace-kill-buffer whitespace-help-buffer-name))
(defun whitespace-help-scroll (&optional up)
"Scroll help window, if it exists.
If UP is non-nil, scroll up; otherwise, scroll down."
(condition-case data-help
(let ((buffer (get-buffer whitespace-help-buffer-name)))
(if buffer
(with-selected-window (get-buffer-window buffer)
(if up
(scroll-up 3)
(scroll-down 3)))
(ding)))
;; handler
((error)
;; just ignore error
)))
(defun whitespace-interactive-char (local-p)
"Interactive function to read a char and return a symbol.
...
...
@@ -2000,6 +2068,7 @@ It accepts one of the following chars:
CHAR MEANING
(VIA FACES)
f toggle face visualization
t toggle TAB visualization
s toggle SPACE and HARD SPACE visualization
r toggle trailing blanks visualization
...
...
@@ -2049,9 +2118,13 @@ See also `whitespace-toggle-option-alist'."
(cdr
(assq ch whitespace-toggle-option-alist)))))
;; while body
(if (eq ch ?\?)
(whitespace-help-on style)
(ding)))
(cond
((eq ch ?\?) (whitespace-help-on style))
((eq ch ?\ ) (whitespace-help-scroll t))
((eq ch ?\M- ) (whitespace-help-scroll))
((eq ch ?>) (whitespace-help-scroll t))
((eq ch ?<) (whitespace-help-scroll))
(t (ding))))
(whitespace-help-off)
(message " ")) ; clean echo area
;; handler
...
...
@@ -2130,22 +2203,23 @@ resultant list will be returned."
(defun whitespace-style-face-p ()
"Return t if there is some visualization via face."
(or (memq 'tabs whitespace-active-style)
(memq 'spaces whitespace-active-style)
(memq 'trailing whitespace-active-style)
(memq 'lines whitespace-active-style)
(memq 'lines-tail whitespace-active-style)
(memq 'newline whitespace-active-style)
(memq 'empty whitespace-active-style)
(memq 'indentation whitespace-active-style)
(memq 'indentation::tab whitespace-active-style)
(memq 'indentation::space 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)
(memq 'space-before-tab whitespace-active-style)
(memq 'space-before-tab::tab whitespace-active-style)
(memq 'space-before-tab::space whitespace-active-style)))
(and (memq 'face whitespace-active-style)
(or (memq 'tabs whitespace-active-style)
(memq 'spaces whitespace-active-style)
(memq 'trailing whitespace-active-style)
(memq 'lines whitespace-active-style)
(memq 'lines-tail whitespace-active-style)
(memq 'newline whitespace-active-style)
(memq 'empty whitespace-active-style)
(memq 'indentation whitespace-active-style)
(memq 'indentation::tab whitespace-active-style)
(memq 'indentation::space 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)
(memq 'space-before-tab whitespace-active-style)
(memq 'space-before-tab::tab whitespace-active-style)
(memq 'space-before-tab::space whitespace-active-style))))
(defun whitespace-color-on ()
...
...
@@ -2203,14 +2277,16 @@ resultant list will be returned."
(list
;; Show "long" lines
(list
(format
"^\\([^\t\n]\\{%s\\}\\|[^\t\n]\\{0,%s\\}\t\\
)
\\{%d\\}%s\\
(
.
+\\
)
$
"
whitespace-tab-width (1- whitespace-tab-width)
(/ whitespace-line-column whitespace-tab-width)
(let ((rem (% whitespace-line-column whitespace-tab-width)))
(if (zerop rem)
""
(format "
.
\\{%d\\}
" rem))))
(let ((line-column (or whitespace-line-column fill-column)))
(format
"^\\([^\t\n]\\{%s\\}\\|[^\t\n]\\{0,%s\\}\t\\
)
\\{%d\\}%s\\
(
.
+\\
)
$
"
whitespace-tab-width
(1- whitespace-tab-width)
(/ line-column whitespace-tab-width)
(let ((rem (% line-column whitespace-tab-width)))
(if (zerop rem)
""
(format "
.
\\{%d\\}
" rem)))))
(if (memq 'lines whitespace-active-style)
0 ; whole line
2) ; line tail
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment