| Age | Commit message (Collapse) | Author | Files | Lines |
|
this is taken from one of my other projects. there was no reason
for there to be 2x the code
tests checking for surrogate characters and non characters were
removed. I see no reason why the user shouldn't be allowed to
insert those characters in text (they exist in the standard).
Also, in the case of non-characters only the first two were being
checked and not the other 64.
|
|
|
|
|
|
|
|
We use an adapted variant of sam's structural regular expression
based command language. The initial implementation was partially
based upon the following functions from sam / acme:
* parse.h / edit.h (struct definitions)
* cmd.c / edit.c (functions parsecmd, simpleaddr, compoundaddr)
* xec.c / ecmd.c (cmdexec)
* address.c / addr.c (address)
It turns out the relevant code can be traced back to the initial
X11 port of sam which is distributed under an ISC-like license
instead of the Lucent Public License Version 1.02 used for Plan 9,
plan9port and 9base.
http://www.netlib.org/research/
http://www.netlib.org/research/sam.shar
Hence we switch to the simpler license variant.
Close #238
|
|
For those not familiar with sam(1) more information can be found at
http://sam.cat-v.org/
For now sam commands can be entered from the vis prompt via :sam <cmd>
A command behaves differently depending on the mode in which it is issued:
- in visual mode it behaves as if an implicit extract x command
matching the current selection(s) would be preceding it. That is
the command is executed once for each selection.
- in normal mode:
* if an address for the command was provided it is evaluated starting
from the current cursor position(s) i.e. dot is set to the current
cursor position.
* if no address was supplied to the command then:
+ if multiple cursors exist, the command is executed once for every
cursor with dot set to the current line of the cursor
+ otherwise if there is only 1 cursor then the command is executed
with dot set to the whole file
The command syntax was slightly tweaked to accpet more terse commands.
- When specifiying text or regular expressions the trailing delimiter can
be elided if the meaning is unambigious.
- If only an address is provided the print command will be executed.
- The print command creates a selection matching its range.
- In text entry \t inserts a literal tab character (sam only recognizes \n).
Hence the sam command ,x/pattern/ can be abbreviated to x/pattern
If a command is successful vis switches to normal mode (and hence removes
any selections), otherwise the editor is kept in visual mode. The print
command "fails" by definition.
|
|
|
|
|
|
|
|
|
|
|