aboutsummaryrefslogtreecommitdiff
path: root/sam.c
AgeCommit message (Collapse)AuthorFilesLines
2016-04-03sam: implement < command in terms of | with an empty rangeMarc André Tanner1-1/+13
2016-04-03sam: implement | (filter) commandMarc André Tanner1-4/+81
2016-04-03sam: implement w (write) commandMarc André Tanner1-4/+47
2016-04-03sam: add infrastructure to support multi letter commandsMarc André Tanner1-48/+52
2016-04-03sam: fix escape handling in regex parsingMarc André Tanner1-0/+4
2016-04-03sam: more flexible parsingMarc André Tanner1-22/+124
Add infrastructure to handle commands which take file names, shell commands or general white space delimited parameters as arguments.
2016-04-03sam: treat single line numbers as motions not rangesMarc André Tanner1-2/+9
That is something like :sam +5 or :sam 10 will move to the start of the selected line instead of selecting the whole line. TODO: due to the current implementation it will also affect :sam x/pattern/-10+10
2016-04-03sam: remove old cursor/selection before executing commandMarc André Tanner1-1/+12
Because duplicated cursors are no longer allowed we have to remove the old cursors before, not after executing the sam command. Otherwise commands like g/foo/ which re-create the same selection fail.
2016-04-03sam: fix default regexp handling i.e. ':sam x'Marc André Tanner1-1/+1
2016-04-03sam: adapt to changes in multiple cursors APIMarc André Tanner1-10/+7
2016-04-03sam: fix negative relative line number placementMarc André Tanner1-7/+11
This should fix -0+,+0-
2016-04-03sam: change print command behavior when given an empty rangeMarc André Tanner1-6/+23
Only create a selection (and switch to visual mode) if at least one print command was given a non-empty range. Also reject invalid ranges. This allows cursor movements with thinks like #10
2016-04-03sam: fix empty regexp matchesMarc André Tanner1-6/+13
This fixes x/^.*$/i/FOO
2016-04-03sam: fix regex parsingMarc André Tanner1-32/+5
This fixes y/\n/i/FOO
2016-04-03sam: fix parsing of , compound addressMarc André Tanner1-5/+2
In a command like ,x/pattern the comma should default to the whole file.
2016-04-03sam: do not segfault when given a NULL pointer to parseMarc André Tanner1-0/+2
2016-04-03sam: fix segfault with multiple regular expressions in same commandMarc André Tanner1-29/+17
2016-04-03Support sam's structural regular expression based command languageMarc André Tanner1-0/+800
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.