Skip to content

Commit 2fe6e17

Browse files
committed
Import Elvis 2.2_1 (written by Steve Kirkendall)
1 parent 9f1c6f0 commit 2fe6e17

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

120 files changed

+12161
-1371
lines changed

Announce-2.2_0

-39
This file was deleted.

Announce-2.2_1

+321
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,321 @@
1+
I almost have version 2.1.1 ready. I'm probably about 4 weekends away.
2+
You can download a copy of the source code from...
3+
4+
ftp://ftp.cs.pdx.edu/pub/elvis/unreleased/almost-2.2_1.tar.gz
5+
6+
7+
The following bugs have been fixed:
8+
9+
:andale was using Luxi Mono fonts
10+
The :andale alias (used in the "x11" user interface) was
11+
actually using Luxi Mono fonts instead of Andale fonts.
12+
13+
filenamerules broke newline handling
14+
When I implemented the filenamerules option in 2.2.0, I
15+
accidentally broke the way it parses newlines. This is important
16+
if you remove the spaces keyword from filenamerules, and then do
17+
something like ":n `grep foo *.txt`" to sets the args list to
18+
all files containing "foo".
19+
20+
HTTP User-agent: header line
21+
When sending HTTP requests, Elvis should send a User-agent:
22+
header line. Some web sites demand this.
23+
24+
Default button names
25+
In the "html" display mode, the <input type=submit> and <input
26+
type=reset> tags should have the default values "Submit" and
27+
"Reset" respectively. In 2.2.0, they have no default.
28+
29+
<hr/> shows ------------>
30+
The "html" display mode had trouble with tags that end with
31+
"/>". Elvis would display the > on the screen instead of hiding
32+
it.
33+
34+
<Esc>
35+
The <Esc> key should beep when pressed in visual command mode.
36+
37+
Delayed screen updates in "x11" user interface
38+
When a map times out, Elvis wasn't updating the screens
39+
immediately in the "x11" user interface, which made it hard to
40+
detect that the map had indeed timed out.
41+
42+
"d)" could crash
43+
In a file full of blank lines, "d)" caused 2.2.0 to dump core.
44+
45+
:put from a cut buffer
46+
The :put command wasn't accepting a cut buffer name argument.
47+
48+
:dict didn't handle single words
49+
The :dict alias (after ":load dict") didn't handle single-word
50+
queries correctly.
51+
52+
The directory editor's links were relative to the wrong directory.
53+
If you used ":e dirname" to edit the directory "dirname", then
54+
the links in the generated HTML weren't interpreted as being
55+
relative to "dirname". They were treated as being relative to
56+
the current directory.
57+
58+
"x11" converts <b> to ^K0062.
59+
The "x11" user interface is too aggressive when trying to
60+
convert key names from angle-bracket notation to raw characters.
61+
If a map contains an HTML tag such as <b>, and the tag name
62+
happens to match the name of a key such as the "b" key, then
63+
Elvis was trying to convert that keystroke into a raw control
64+
sequence.
65+
66+
":normal cwFOO^[" didn't work
67+
The c operator was implemented in a way that didn't work in the
68+
:normal command.
69+
70+
".IP \(bu 4" had too large of an indent.
71+
This is apparently due to the fact that "4" has no explicit
72+
scaling suffix, and .IP was using the wrong default scaling
73+
factor.
74+
75+
Hard to enter ^ in WinElvis on a Norwegian keyboard
76+
WinElvis has always had a hard time with "dead keys", but now
77+
I'm hopeful that it should work. The ^ key works in Norway now,
78+
at least.
79+
80+
":e +cmd file" didn't work
81+
For the :e command and a few others, the "+" flag could only
82+
handle a line number parameter, not a full ex command line.
83+
84+
Typos in manual.
85+
Many found and fixed. Still many more to be found, I'm sure.
86+
87+
:chregion always changes the comment
88+
The :chregion shouldn't change the comment of an existing region
89+
unless you give a new comment explicitly, or the old comment was
90+
merely the old font name.
91+
92+
":set show=spell" doesn't work very well.
93+
You need to load the whole dictionary to get good suggestions
94+
from the spell checker. In 2.2.0 you had to turn on the
95+
"spellautoload" option, but in 2.2.1 that option is on by
96+
default.
97+
98+
:map doesn't list all user-defined maps.
99+
2.2.0 assumed that any map tied to a symbolic key was defined by
100+
the system, so it wouldn't list it unless you said ":map all".
101+
This means you couldn't see actions mapped to function keys.
102+
2.2.1 is smarter about this -- it adds a flag to indicate
103+
whether the map was added by the user or created automatically
104+
by the GUI.
105+
106+
Command names were truncated in error messages.
107+
When displaying a "bad command name" error message, 2.2.0 would
108+
truncate the name at the first character that prevented it from
109+
being recognized as a command. 2.2.1 displays the full name of
110+
the bad command, exactly as you typed it.
111+
112+
:man doesn't display backslashes correctly
113+
The :man alias didn't handle backslashes very well, so pages
114+
which use a lot of backslashes such as ":man groff_man" looked
115+
bad.
116+
117+
:%unr doesn't always remove all regions.
118+
This mostly occured when running autocmds. It also affected the
119+
:chregion command.
120+
121+
:%j only joined two lines
122+
The command ":1,%j" joins all lines but ":%j" only joined two.
123+
124+
elvis.ini maps too much
125+
The default "elvis.ini" file contained maps without the nosave
126+
flag, so if you ran :mkexrc in an xterm, your ~/.elvisrc file
127+
would contain maps that are present in all user interfaces and
128+
for all termcap terminal types.
129+
130+
:mkexrc can lose GUI-specific options
131+
The :mkexrc command only saved GUI-specific options for the
132+
current GUI. This means that running :mkexrc in the "termcap"
133+
interface could clobber your default font for the "x11"
134+
interface. 2.2.1 gets around this by storing all GUI-specific
135+
options, even those for other GUIs or unknown GUIs, just so it
136+
can save them in the ~/.elvisrc file.
137+
138+
<li><p> looks ugly
139+
Many HTML documents use this sequence of tags to generate lists
140+
that have a bit of vertical whitespace between items. But 2.2.0
141+
was drawing the list item marker (bullet or number) on the blank
142+
line, instead of the line where the paragraph's text starts.
143+
2.2.1 treats this as a special case -- it ignores the <p> in
144+
this context.
145+
146+
security=safer is too strict
147+
The "security=safer" setting didn't allow some command that it
148+
should have allowed. This prevented some harmless and useful
149+
commands such as "elvis -client foo" from working. To get this
150+
working right, I had to overhaul the behavior of
151+
"security=safer". It is no longer a more lenient superset of
152+
"security=restricted". See ":help set security" for details.
153+
154+
One consequence of this is that the "-S" flag now sets
155+
security=restricted.
156+
157+
:wq didn't work when security=safer or security=restricted.
158+
The manual said it should. The new version of security=safer
159+
doesn't allow any writing, but you can now :wq when
160+
security=restricted.
161+
162+
The "ax" text object didn't support tag names with hyphens
163+
I've extended it to allow single hyphens but not double hyphens
164+
(since double hyphens mark comments). It also allows colons, for
165+
namespace control.
166+
167+
dirperm(".") returns readonly
168+
The dirperm() function didn't recognize directories correctly.
169+
This was a bug in the way the "dir:" pseudo-protocol was
170+
implemented.
171+
172+
hlobject didn't allow commas
173+
An increasing number of options in elvis store multiple values
174+
in comma-delimited lists. The "hlobject" option can store
175+
multiple values, but required them to be either crammed together
176+
or delimited by spaces. Now it supports commas.
177+
178+
rcssince didn't work
179+
The rcssince alias (part of ":load since") is supposed to be
180+
executed when a buffer is loaded, but it used some commands
181+
which are illegal during initialization. Most of the commands
182+
that are illegal during initialization are only illegal because
183+
they're useless until the first file is loaded into a buffer.
184+
The rcssince alias was actually running after the file was
185+
loaded, so it should be allowed, but Elvis had a rather weak
186+
idea of when "initialization" ends.
187+
188+
:suspend didn't work
189+
It wasn't in Elvis' internal command list correctly. The :stop
190+
equivalent has always worked though.
191+
192+
Backslashes aren't handled right in "simpler syntax"
193+
If a "simpler syntax" expression started with \( or \$ then
194+
Elvis should convert that to a literal ( or $ character.
195+
Instead, 2.2.0 was leaving it as a literal \ followed by an
196+
parenthesized subexpression, or $ variable substitution. (This
197+
arose from trying to make an initial \\ remain unchanged so
198+
Windows users could five UNC names such as \\machine\dir\file.)
199+
200+
AliasLeave events
201+
At the end of an alias, 2.2.0 generated an AliasEnter event when
202+
it should have generated an AliasLeave event.
203+
204+
:eval does not compute
205+
The :eval command could get confused if the command that it runs
206+
needs to evaluate an expression. This was because a static
207+
buffer is used to return the results of evaluations, and :eval
208+
didn't copy the result into a local buffer before trying to
209+
execute it.
210+
211+
Trouble with gzipped files
212+
The ":load gzip" command (formerly ":load augz") sets up elvis
213+
to automatically handle gzipped files. It has some problems, but
214+
the two biggest problems are now fixed.
215+
216+
One problem was that filtering commands always wrote out the
217+
final newline to gunzip, even though that newline wasn't part of
218+
the gzipped data. This caused gunzip to output an error message.
219+
2.2.1 doesn't write out the final newline when the
220+
"partiallastline" option is set.
221+
222+
The other main problem was that the file was initially displayed
223+
in hex mode, even after the file had been gunzipped into text.
224+
To get around this, elvis will now temporarily remove ".gz" from
225+
the end of the file name, then rerun the "elvis.arf" script, and
226+
then slap the ".gz" back on the file name again so the file can
227+
be saved correctly.
228+
229+
"x11" could generate a BadMatch error while exiting
230+
This would occur if you start Elvis from an xterm, and then
231+
exited the xterm before Elvis. Elvis will now ignore that
232+
particular error.
233+
234+
235+
236+
The following new features have been added:
237+
238+
:nofold
239+
Wipes out folds. This differs from :unfold in that :unfold
240+
leaves some information behind to allow the region to be easily
241+
refolded. :nofold leaves nothing behind.
242+
243+
Persistent information
244+
Elvis can store cursor positions and some other things between
245+
invocations. See the "persistfile" and "persist" options.
246+
247+
%< and #< in filenames
248+
When giving file name arguments, you can use %< and #< to get
249+
the name of the current or alternate file, with its extension
250+
removed. For example, if you're editing "database_interface.c",
251+
then you can get to "database_interface.h" by typing ":e %<.h".
252+
253+
:phelp command
254+
Like :help except that :phelp doesn't split the screen. Instead,
255+
it saves your old cursor position on the tag stack and then
256+
shows the help page in your current screen.
257+
258+
X11 buttons can simulate keystrokes
259+
The :gui command accepts a new notation for defining toolbar
260+
buttons that simulate keystrokes instead of invoking an ex
261+
command. This is useful when you want to do something with a
262+
character selection; ex commands treat all selections as line
263+
selections.
264+
265+
The notation uses square brackets around the name. You can put
266+
the characters to simulate after the closing square bracket. If
267+
you omit those characters, then Elvis will simulate keystrokes
268+
that spell out the button name, with the brackets included. You
269+
can then set up a :map to convert that to something else. That
270+
can be nice because elvis allows maps to be somewhat context
271+
sensitive.
272+
273+
Computed line addresses
274+
In ex command lines, you can now use =option to pull a line
275+
address from an option, or =(expression) for more complex
276+
expressions. This is often handy in aliases.
277+
278+
GDB interface
279+
The core of a simple GDB interface is provided, to allow Elvis
280+
and GDB to work together. This depends on Elvis' "x11" user
281+
interface; you can't use it with the termcap interface. It is
282+
implemented partly as a C program that acts as a "wrapper"
283+
around GDB and parses its output for things that Elvis needs to
284+
know, and partly as a set of aliases which receive that
285+
information and act on it (e.g., by moving the cursor, or
286+
changing the highlight of breakpoint lines).
287+
288+
Generic "state" display
289+
A new "state" option has been created. If the "show" option
290+
contains the keyword "state", then the value of the "state"
291+
option will be displayed at the bottom of the window. This can
292+
be handy in complex alias packages. The GDB interface uses it to
293+
indicate the debugged program's status.
294+
295+
More function keys
296+
The <F11> and <F12> function keys are now supported on most
297+
platforms. I also tried to support shift and control function
298+
keys, with some success on Linux.
299+
300+
:map noselect ...
301+
The :map command now supports a noselect flag. This is short for
302+
"every context except select".
303+
304+
:load scripts described
305+
I've added a section to the "Tips" chapter describing the
306+
scripts in Elvis' library. (These may be loaded via the :load
307+
alias.)
308+
309+
:source can read from a program
310+
The :source command has been extended to allow it to read the
311+
output of a program, and interpret that output as a series of ex
312+
commands. For example, you could create a program that scans an
313+
HTML document and outputs a series of :fold commands to allow
314+
you to selective hide sections of it.
315+
316+
incsearch partially supports history
317+
When using incremental search, the final search expression is
318+
stored in the search history. You can use arrow keys or ^Ok and
319+
^Oj to retrieve a previous search. Full editing is still only
320+
supported for non-incremental searches, though.
321+

0 commit comments

Comments
 (0)