summaryrefslogtreecommitdiff
path: root/sam.c
AgeCommit message (Collapse)Author
2016-04-11sam.c: fix some typos in commentSteven Noonan
Signed-off-by: Steven Noonan <steven@uplinklabs.net>
2016-04-08sam: change default address of < and | commandsMarc André Tanner
If no address is provided these commands no longer apply to the whole line, but instead will insert the output of the external program at the current cursor location.
2016-04-06sam: include limits.h for PATH_MAXMarc André Tanner
Close #220
2016-04-05vis: remove left over from :sam commandMarc André Tanner
2016-04-05vis: fix coverity scan warningsMarc André Tanner
2016-04-05sam: cosmetic changesMarc André Tanner
2016-04-05sam: improve group handling, do not loop infinitelyMarc André Tanner
2016-04-05sam: stop executing once a command failsMarc André Tanner
2016-04-05sam: some commands should only be executed once not for every selectionMarc André Tanner
This should fix a segfault when using :q while multiple selections are active.
2016-04-04sam: fix x command with default patternMarc André Tanner
The end range should still be respected, previously it would continue looping for all lines until the end of file.
2016-04-04sam: y and Y commands require a regexp patternMarc André Tanner
2016-04-04sam: use better default addresses for <, >, | and r commandsMarc André Tanner
2016-04-04sam: fix special handling of single line numbersMarc André Tanner
If only line numbers are given (either in absolute or relative form) we treat it as motion instead of a range specifier. That is :nn moves to line nn, but does not select it. This should however not affect other range specifiers such as :n,m
2016-04-04sam: fixup bf52c0cb95b76b4ae17f138c9d98552c38185f46Marc André Tanner
For commands like :q the view might already have been freed
2016-04-04sam: add missing include for strncasecmp(3)David B. Lamkins
2016-04-03sam: focus first cursor after a x, y, g, v commandMarc André Tanner
2016-04-03sam: implement cd (change directory) commandMarc André Tanner
2016-04-03sam: support % as address denoting the whole fileMarc André Tanner
2016-04-03sam: implement ! commandMarc André Tanner
2016-04-03vis: change vis_pipe API and cleanup related codeMarc André Tanner
2016-04-03sam: unify vi(m) and sam command lineMarc André Tanner
The following vi commands have been dropped: - saveas - xit - ! The following commands are only recognized in their short form: - e (edit) - q (quit) - s (substitute) - w (write) - r (read)
2016-04-03sam: restructure code to avoid useless gotoMarc André Tanner
2016-04-03sam: implement s (subtitute) command in terms of sed(1)Marc André Tanner
Eventually this should be rewritten as an internal command.
2016-04-03sam: cleanup command argv passing/handlingMarc André Tanner
2016-04-03sam: simplify and fix groupingMarc André Tanner
The following should now work: :sam x/^static/ .,+/^\}/ { i/<</ a/>>/ }
2016-04-03sam: attempt to make x/y commands more robustMarc André Tanner
These commands can be followed by an address which changes the range to which the sub command applies. The looping construct should then continue at the position of the last change within the original range. A previously problemeatic example: :sam x/^static/ .,+/^\}/ c/replaced
2016-04-03sam: implement > commandMarc André Tanner
2016-04-03sam: implement r (read) command in terms of < catMarc André Tanner
It replaces current range with the file content. However in the common case the range is actually defaults to the whole file which is probably not what is expected.
2016-04-03sam: implement < command in terms of | with an empty rangeMarc André Tanner
2016-04-03sam: implement | (filter) commandMarc André Tanner
2016-04-03sam: implement w (write) commandMarc André Tanner
2016-04-03sam: add infrastructure to support multi letter commandsMarc André Tanner
2016-04-03sam: fix escape handling in regex parsingMarc André Tanner
2016-04-03sam: more flexible parsingMarc André Tanner
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é Tanner
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é Tanner
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é Tanner
2016-04-03sam: adapt to changes in multiple cursors APIMarc André Tanner
2016-04-03sam: fix negative relative line number placementMarc André Tanner
This should fix -0+,+0-
2016-04-03sam: change print command behavior when given an empty rangeMarc André Tanner
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é Tanner
This fixes x/^.*$/i/FOO
2016-04-03sam: fix regex parsingMarc André Tanner
This fixes y/\n/i/FOO
2016-04-03sam: fix parsing of , compound addressMarc André Tanner
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é Tanner
2016-04-03sam: fix segfault with multiple regular expressions in same commandMarc André Tanner
2016-04-03Support sam's structural regular expression based command languageMarc André Tanner
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.