summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2016-04-03Update README to reflect sam(1) integrationMarc André Tanner
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-03vis: reimplement file open dialogMarc 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-03build: explicitly list sources filesMarc André Tanner
2016-04-03buffer: add buffer_content0 utility functionMarc André Tanner
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-03Add section about new command language to READMEMarc 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.
2016-04-03vis: in visual mode let \ trim selectionsMarc André Tanner
2016-04-03view: make syntax coloring more robustMarc André Tanner
Do not crash if for some reason view->{start,end} have outdated values.
2016-04-03buffer: add buffer_content utility functionMarc André Tanner
2016-04-03buffer: add buffer_length utility functionMarc André Tanner
2016-04-03view: add return value to view_cursors_disposeMarc André Tanner
indicating whether cursor could be removed
2016-04-03text-regex: introduce function to match arbitrary textMarc André Tanner
2016-04-01vis: cleanup vis_pipe APIMarc André Tanner
2016-03-30vis: implement selection rotationMarc André Tanner
In visual mode + and - will rotate the selection count times to the right or left respectively. If there exists a line containing multiple selections then the rotation happens within each line. Otherwise if each line contains at most one selection the rotation is performed among all existing selections.
2016-03-30view: constify functions to manipulate selectionsMarc André Tanner
2016-03-30text-util: constify text_range_* functionsMarc André Tanner
2016-03-30view: change internal representation of selectionsMarc André Tanner
We place the end mark inside the selection as opposted to on the character immediately following it. This is better when selections are touching each other. Previously for two seletions [a][b] the end mark for selection a would be at the same location as the start mark of selection b. Thus when for example the content of selection b is deleted it would also destroy selection a, because the end mark would no longer be valid.
2016-03-30array: allow arbitrarily sized array elementsMarc André Tanner
There exist two typical ways to use an array: 1) to hold pointers to externally allocated memory regions Use array_init(...) for initialization, an element has the size of a pointer. Use the functions suffixed with `_ptr' to manage your pointers. The cleanup function array_release_full must only be used with this type of array. 2) to hold arbitrary sized objects Use array_init_sized(...) to specify the size of a single element. Use the regular (i.e. without the `_ptr' suffix) functions to manage your objects. array_get will return a pointer to the object stored within the array.
2016-03-29ignore README.htmlChristian Hesse
2016-03-29README: add a paragraph about distribution packagesChristian Hesse
We have binary packages for Arch Linux, at least!