Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
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
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