Permalink
Browse files

Import Elvis 2.1_3 (written by Steve Kirkendall)

  • Loading branch information...
mbert committed Dec 10, 2011
1 parent 8d1ac0c commit 3a9bb556847cf2f6907d8ccc45224727a917ad36
Showing with 4,121 additions and 2,083 deletions.
  1. +155 −4 BUGS
  2. +15 −8 Makefile.in
  3. +243 −15 README.html
  4. +32 −29 buffer.c
  5. +108 −15 calc.c
  6. +34 −4 configure
  7. +2 −2 ctags.c
  8. +6 −2 display.c
  9. +6 −2 display2.h
  10. +559 −236 dmmarkup.c
  11. +3 −3 dmnormal.c
  12. +8 −0 elvis.h
  13. +6 −5 elvis.lsm
  14. +12 −3 event.c
  15. +135 −10 ex.c
  16. +4 −2 ex.h
  17. +8 −4 exaction.c
  18. +7 −7 exconfig.c
  19. +18 −2 exedit.c
  20. +12 −2 exmake.c
  21. +2 −2 exsubst.c
  22. +88 −19 ftp.c
  23. +2 −2 guicurs.c
  24. +2 −2 guiopen.c
  25. +33 −5 guitcap.c
  26. BIN guiwin32/elvisold.ico
  27. +42 −1 guiwin32/guiwin.c
  28. +2 −2 guiwin32/gwcmd.c
  29. +2 −1 guiwin32/gwdlgs.c
  30. +2 −2 guiwin32/gwmsg.c
  31. +1 −1 guiwin32/gwopts.c
  32. +1 −2 guiwin32/gwprint.c
  33. +1 −1 guiwin32/gwstatb.c
  34. +1 −1 guiwin32/gwtoolb.c
  35. +2 −2 guiwin32/gwutil.c
  36. +1 −1 guiwin32/winelvis.c
  37. +1 −1 guiwin32/wintags.c
  38. +1 −1 guiwin32/wintools.c
  39. +12 −0 guix11/Elvis.kdelnk
  40. +17 −11 guix11/guix11.c
  41. +1 −0 guix11/guix11.h
  42. +57 −0 guix11/kde.xpm
  43. +4 −2 guix11/xdialog.c
  44. +2 −2 guix11/xevent.c
  45. +4 −1 input.c
  46. +8 −6 lib/ctags.man
  47. +96 −7 lib/elvis.ali
  48. +6 −2 lib/elvis.arf
  49. +1 −1 lib/elvis.html
  50. +35 −3 lib/elvis.syn
  51. +3 −1 lib/elvis.x11
  52. +2 −2 lib/elvisdm.html
  53. +61 −18 lib/elvisex.html
  54. +23 −3 lib/elvisexp.html
  55. +60 −12 lib/elvisgui.html
  56. +1 −1 lib/elvisinp.html
  57. +12 −2 lib/elvisnet.html
  58. +9 −32 lib/elvisopt.html
  59. +75 −23 lib/elvisos.html
  60. +1 −1 lib/elvisre.html
  61. +7 −1 lib/elvisses.html
  62. +7 −6 lib/elvistag.html
  63. +149 −41 lib/elvistip.html
  64. +8 −3 lib/fmt.man
  65. +82 −9 lib/howto.html
  66. +112 −86 lib/ref.man
  67. +3 −3 main.c
  68. +7 −1 makwin32.bat
  69. +81 −6 message.c
  70. +1 −1 message.h
  71. +5 −0 message2.h
  72. +5 −1 more.c
  73. +1 −0 more.h
  74. +2 −4 optglob.c
  75. +62 −63 optglob.h
  76. +4 −1 osmsdos/osconfig.h
  77. +44 −29 osos2/Makefile.os2
  78. +0 −58 osos2/README.os2
  79. +6 −3 osos2/config-no-tcp.h
  80. +6 −3 osos2/config-with-tcp.h
  81. +2 −0 osos2/manual/ctags.man.ed
  82. +2 −0 osos2/manual/elvis.ali.ed
  83. +6 −0 osos2/manual/elvis.html.ed
  84. +2 −0 osos2/manual/elvis.ini.ed
  85. +16 −0 osos2/manual/elvis.ipf.ed
  86. +2 −0 osos2/manual/elvis.man.ed
  87. +2 −0 osos2/manual/elvis.syn.ed
  88. +5 −0 osos2/manual/elvismsg.html.ed
  89. +2 −0 osos2/manual/elvistrs.msg.ed
  90. +12 −0 osos2/manual/fixhtml.cmd
  91. +2 −0 osos2/manual/fmt.man.ed
  92. +46 −0 osos2/manual/h2i-guide.cmd
  93. +6 −0 osos2/manual/others.html.ed
  94. +2 −0 osos2/manual/ref.man.ed
  95. +5 −4 osos2/osconfig.h
  96. +3 −1 osos2/osnet.c
  97. +2 −2 osunix/osblock.c
  98. +5 −3 osunix/osnet.c
  99. +2 −2 oswin32/elvis.mak
  100. +4 −1 oswin32/osconfig.h
  101. +3 −1 oswin32/osnet.c
  102. +126 −1,166 oswin32/osprg.c
  103. +1 −1 ref.c
  104. +3 −2 regexp.c
  105. +2 −2 state.c
  106. +7 −2 tag.c
  107. +16 −20 tagelvis.c
  108. +1,149 −0 tcaphelp.c
  109. +1 −1 url.c
  110. +2 −2 version.h
  111. +14 −3 vi.c
  112. +20 −17 vicmd.c
  113. +10 −3 window.c
View
159 BUGS
@@ -11,15 +11,166 @@ NOTE: Not all of these are truly bugs. This file also serves as my "to do"
list, so some items are just unimplemented features that sounded like a good
idea at one time or another.
-* The [[ and ]] commands shouldn't be line-mode moves. I.e., from the middle
+* There appears to be a bug in scanning -- a scanned block is not necessarily
+ being locked for the whole time that it should be, which means that it may
+ be removed from the block cache, in which case NULL may be returned by some
+ of the blkXXXX() functions. Also, on at least one occasion elvis appeared
+ to be trying to free a block which wasn't allocated.
+
+ This may have something to do with the FEATURE_LITRE feature, or my
+ recent attempts to make searches run faster by keeping at least one
+ scan context for the current location at all times.
+
+/ One user reported crashes in WinElvis when the "Options->syntax" menu item
+ is activated while in "syntax" display mode.
+
+* One user reported that elvis was sensitive to keystrokes during quitting.
+ I suspect that gui->poll was being called while the file was being written
+ (possibly just when written via FTP). That write should not be quittable.
+
+* Under MS-DOS with TERM=nansi (and NANSI.SYS installed, of course) the screen
+ is shifted up one line. TERM=ansi works, but doesn't use nansi efficiently.
+
+/ Can't identify tags whose whose contains a new-style comment. Apparently
+ the tag-selector can't parse \/\/ in an regular expression.
+
+/ Make elvis assume "-Gopen" if termcap can't be used.
+
+? The :make command is still slightly weird. "elvis +make" waits until after
+ a keystroke to display the first error message.
+
+/ Document the ftp://host/~user/resource URL notation.
+
+/ The :mark command should save the column number as well as the line number.
+ (I.e., if no explicit address was given, then use the cursor position instead
+ of the start of the cursor's line.)
+
+/ Add a :cbshow alias which displays cut buffers. To do this right, elvis
+ will need a text() function for fetching text lines...
+ text() return the current line of the current buffer
+ text(n) return line #n of the current buffer
+ text(b,n) return line #n of buffer (b)
+
+/ ":map ^H visual X" doesn't work when the cursor is at the end of the line.
+ It deletes the last character, but then moves the cursor back two characters
+ instead of just one.
+
+/ Assertion fails at buffer.c:1206 when attempting to write an empty buffer.
+
+? dmmarkup.c:1066: htmlinit: Assertion `first == True && col == 0' failed.
+
+/ "Dead keys" don't work in "x11" gui.
+
+/ If the .elvisrc file contains "set wrapmargin=0" then that option is
+ displayed by a later ":set" command. It shouldn't be.
+
+ This is a complication arising from the fact that wrapmargin is
+ actually implemented via the textwidth option. Wrapmargin doesn't
+ exist until a buffer is shown in a window, but defaults are normally
+ recorded before that.
+
+/ If there is no tags file in the current directory and inputtab=tagname
+ then there is a long delay each time <Tab> is hit.
+
+/ Is this a good time to fix the bug where :make outputs the first error
+ message *before* prompting the user to hit <Enter>, when it should be after?
+
+/ Add a "howto" describing Perl's error messages.
+
+/ The "noanyerror" option shouldn't prevent the cursor from moving into locked
+ files in the current directory -- only unwritables in some other directory.
+
+/ It's back: Sometimes in "man" mode the cursor can't move up. This appears
+ to happen only for .IP or .TP commands with long labels. I should probably
+ change that code anyway, so the labels are considered to be separate lines
+ in that situation.
+
+/ It would be nice if FTP URLs supported user names as in ftp:host/~user/...
+ in addition to just ftp:host/~/... When a user name is specified, the
+ ~/.netrc file is searched for an account at that host which has that login
+ name; the password is then taken from that entry.
+
+? More importantly, it has been reported that the Windows versions don't
+ read "elvis.ftp" correctly. (It works under Unix; I've tested it.)
+
+ This appears to work under Win32, as far as I can tell. Perhaps
+ the user who reported it didn't have "elvis.ftp" in a directory
+ where elvis could find it? Or maybe the other changes I made to
+ that file (to support ~user) had the side-effect of fixing this?
+
+/ Add support for backticks in filenames -- the text between backticks is
+ interpreted as a shell command, and the command's first line of output
+ is substituted into the line.
+
+ The main reason for supporting backticks is to do things like
+ ":n `grep -l sometext *.c`". The backtick expression would return
+ multiple file names. Because of this, it must be done at a fairly
+ high level in the ex command-line parser.
+
+ It would also be handy to have a "shell" function which runs a
+ command string and returns its output. That function would be
+ handy when implementing backtick support, and could also be used
+ for things like...
+
+ :let d=shell("date")
+
+/ Under Win32, can't always redirect an external program's stdin. For example,
+ ":%!\windows\command\sort" fails, but ":%!\usr\bin\sort" works.
+
+ This is ridiculously difficult. I/O redirection depends on whether
+ the program being run is 16-bit or 32-bit, whether you're running
+ it from WinElvis or elvis, whether you're running Win95/98 or
+ WinNT, and... something else that I haven't figured out yet.
+ I give up. Instead of trying to do it the efficient way (with
+ pipes when possible, and always using Win32 stdio redirection
+ facilities), I decided to rewrite it from scratch to do it the
+ brain-dead way: By constructing a shell script, and invoking
+ COMMAND.COM to run that script. This sucks, but it appears to
+ work reliably.
+
+? On some systems, elvis sometimes reports "# is illegal during initialization"
+ and then it skips some initialization steps for the first file. Later files
+ will be initialized correctly; it only affects the first file. This has been
+ reported under SCO and (I think) Irix. Unfortunately, it seems to interfere
+ with the "-VVV" vebose feedback.
+
+ I've improved error messages -- they now include the filename and
+ line number where the problem was detected. Hopefully that'll allow
+ me to get a little more feedback.
+
+ I just tried the newest code under SCO, and this didn't happen.
+ It worked fine. This is definitely a change in its behavior, and
+ that's good... but I wish I knew why it started, and why it may
+ have stopped.
+
+/ Add a "digraph" topic to the howto file, and improve the documentation of
+ digraphs in the main manual.
+
+/ Lose the "tagprgonce" option; the :local command offers a cleaner solution.
+ You can just say "local tagprg=..." in the alias, and be done with it.
+
+/ The [[ and ]] commands shouldn't be line-mode moves. I.e., from the middle
of a line, d]] should not delete the entire current line.
-* It would be handy if, in a :tag command line, the % character was expanded
- to the current file name.
+/ When a character-mode deletion ends at a newline, that newline should not
+ be deleted. The same goes for yanking.
-* The tagprg option (or something similar) should be used when reading tags
+? The tagprg option (or something similar) should be used when reading tags
for tag name completion. Apparently it isn't.
+ Actually I think it is, but maybe not quite correctly. The code
+ assumes the typed part of the tag name is always going to match the
+ initial part of each match. If the tagprg program doesn't do that,
+ then name completion gets confused. Changing this behavior will be
+ hard.
+
+/ In a shell command, file name completion should match binary files.
+
+/ After a repeated insert such as 25i*<Esc>, typing <.> will only repeat 24
+ insertions, not 25.
+------------------------------------------------------------------------------
+ELvis 2.1, official released version
+
/ Some HTTP sites require a "Host:" line in the GET request. The argument
to "Host:" is the site name and port of the URL elvis is trying to download.
View
@@ -1,5 +1,5 @@
# Makefile.in
-# $Id: Makefile.in,v 2.58 1998/12/10 01:02:47 steve Exp $
+# $Id: Makefile.in,v 2.62 1999/06/19 01:06:23 steve Exp $
#
# Makefile.in should not be modified! The "configure" script reads Makefile.in
# and writes a customized Makefile by editing the values of the following
@@ -67,10 +67,11 @@ FLAGI=-I
################################################################################
# This is a list of programs to be created by "make all". The possible list
-# includes elvis$(EXE), ref$(EXE), ctags$(EXE), and fmt$(EXE). The $(EXE) on
+# includes elvis$(EXE), ref$(EXE), ctags$(EXE), elvtags$(EXE), and fmt$(EXE).
+# ctags and elvtags are the same program under different names. The $(EXE) on
# the end is just in case this Makefile is reconfigured for an operating
# system which requires the EXE macro to be something like ".exe".
-ALL=elvis$(EXE) ref$(EXE)
+ALL=elvis$(EXE) ref$(EXE) elvtags$(EXE)
################################################################################
# This is the directory where "make install" will place the executable programs
@@ -121,10 +122,10 @@ LPSRCS= lpescape.c lpovrtyp.c lpps.c
LPOBJS= lpescape$(OBJ) lpovrtyp$(OBJ) lpps$(OBJ)
HDRS= $(OSHDRS) buffer.h buffer2.h calc.h cut.h digraph.h display.h\
display2.h draw.h draw2.h elvis.h elvisio.h event.h ex.h gui.h gui2.h\
- input.h lowbuf.h lp.h map.h mark.h message.h misc.h more.h move.h\
- need.h operator.h opsys.h optglob.h options.h regexp.h safe.h scan.h\
- session.h state.h state2.h tag.h tagsrch.h tagelvis.h version.h vi.h\
- vicmd.h window.h config.h
+ input.h lowbuf.h lp.h map.h mark.h message.h message2.h misc.h more.h\
+ move.h need.h operator.h opsys.h optglob.h options.h regexp.h safe.h\
+ scan.h session.h state.h state2.h tag.h tagsrch.h tagelvis.h version.h\
+ vi.h vicmd.h window.h config.h
SRCS= $(OSSRCS) $(GUISRCS) $(LPSRCS) buffer.c calc.c cut.c digraph.c\
display.c dmhex.c dmmarkup.c dmnormal.c dmsyntax.c draw.c\
event.c ex.c exaction.c exconfig.c exedit.c exmake.c exsubst.c ftp.c\
@@ -149,7 +150,7 @@ CFLAGS= $(FLAGI)os$(OS)
EVERY= $(ALL) verify$(EXE) elvdump$(EXE) calc$(EXE)
SHELL= /bin/sh
-DISTRIB=elvis-2.1
+DISTRIB=elvis-2.1_3
DOSEXE=exedos
WIN32EXE=exewin32
OS2EXE=exeos2
@@ -164,6 +165,10 @@ elvis$(EXE): $(HDRS) main$(OBJ) $(OBJS) $(GUIOBJS) $(LPOBJS)
ctags$(EXE): $(CTOBJS)
$(CC) $(CFLAGS) $(CTOBJS) -o ctags$(EXE)
+elvtags$(EXE): ctags$(EXE)
+ $(CP) ctags$(EXE) elvtags$(EXE)
+ sed 's/\<CTAGS\>/ELVTAGS/g; s/\<ctags\>/elvtags/g' lib/ctags.man >lib/elvtags.man
+
ref$(EXE): $(REFOBJS)
$(CC) $(CFLAGS) $(REFOBJS) -o ref$(EXE)
@@ -243,6 +248,7 @@ clean.unix:
$(RM) errlist
$(RM) verify.elv
$(RM) $(DISTRIB).tar.gz
+ $(RM) lib/elvtags.man
clean.msdos:
$(RM) *$(OBJ)
@@ -291,6 +297,7 @@ $(DISTRIB).tar.gz:
rm -f $(DISTRIB)/osunix/osconfig.h
rm -f $(DISTRIB)/config.h
rm -f $(DISTRIB)/Makefile
+ rm -f $(DISTRIB)/lib/elvtags.man
tar czf $(DISTRIB).tar.gz $(DISTRIB)
rm -rf $(DISTRIB)
Oops, something went wrong.

0 comments on commit 3a9bb55

Please sign in to comment.