summaryrefslogtreecommitdiff
path: root/sam.c
AgeCommit message (Collapse)Author
2016-11-15sam: reformat command definition block to avoid overly long namesMarc André Tanner
No functional changes.
2016-11-15vis: overhaul and unify event generation codeMarc André Tanner
Add another layer of indirection, move actual event generation code to a dedicated function.
2016-11-15vis: generalize special stdin handlingMarc André Tanner
In preparation to move argument parsing code out of vis.c.
2016-11-11vis: add `:set shell` optionMarc André Tanner
2016-11-11sam: fix range for line zeroMarc André Tanner
:0 < echo "Should be inserted at the start of the file" :1 < echo "Should replace the first line"
2016-11-10vis: split `:set show <option>` into separate optionsMarc André Tanner
It was the only command option which needed `=` to assign a value to. This unifies the argument parsing logic and adds the possibility to specify a per-option help text. You might want to adapt your visrc.lua configuration accordingly.
2016-11-10vis: add help texts for :set option valuesMarc André Tanner
2016-11-08sam: fix default value handling of +/- addressesMarc André Tanner
We need to distinguish between an explicit given zero and an omitted value which should default to 1. This should fix the following constructs which rounds up/down an existing selection to whole lines -0,+0 and -0+,+0-
2016-11-08sam: dispose primary cursor at end of groupMarc André Tanner
Something like :{ x/pattern/ } should not leave the original cursor around.
2016-11-04sam: y should also loop over empty trailing matchesMarc André Tanner
The following x/example/ y/e/ i/-/ should produce `-e-xample-` where before it would wrongly result in `-e-xample`.
2016-11-02sam: improve cursor positioning after command executionMarc André Tanner
Previously something like :x/pattern :c/replacement would cause all cursors to disappear because the location they were placed on was deleted beneath them.
2016-11-02sam: fix default command handling at end of a groupMarc André Tanner
Something like :{ x/pattern/ } should select all occurrences of pattern.
2016-11-02sam: ignore white space between commands of a groupMarc André Tanner
2016-11-02sam: fix command name parsingMarc André Tanner
Any white space should terminate the command name. In particular multi-line commands as part of a group were not handled correctly.
2016-11-02sam: improve escape parsing logicMarc André Tanner
\\ should not be treated specially when parsing regular expressions.
2016-10-05sam: show error message on failed writeChristian Hesse
2016-09-30sam: simplify :r command implementaionMarc André Tanner
Avoid intermediate shell.
2016-09-29sam: consistent argument handling for :r, :w, :e commandsMarc André Tanner
:e without any argument can be used to reload the file from disk whereas before a "Filename expected" error would be displayed.
2016-09-27sam: allow non-latin command namesMarc André Tanner
Close #387
2016-09-25sam: change license headerMarc André Tanner
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
2016-09-19vis: also list :set options in :help outputMarc André Tanner
The help formatting could probably be improved, short single line help texts are still missing. Patches welcome. Close #283
2016-09-19vis: add rudimentary builtin help for :-commandsMarc André Tanner
2016-09-19vis: do not invoke file save event for internal filesMarc André Tanner
2016-08-07sam: do not change cursor position after :! commandMarc André Tanner
Fixes #364
2016-08-07sam: improve quoted argument parsingMarc André Tanner
Handling of unbalanced quotes could probably still be improved. Closes #344
2016-05-29sam: use more suitable error message if no command is givenMarc André Tanner
2016-05-26vis: use normalized absolute file names as internal representationMarc André Tanner
Try to display a shorthand version in the status bar, this currently only works for files below the current working directory of the editor process.
2016-05-18vis: add an interactive mode to vis_pipe{,_collect}(...)Marc André Tanner
Previously the interactive mode was implicitly enabled by passing an invalid range. However for some use cases (e.g. completion) we need to be able to pipe a given text range to an external process without also redirecting stderr (which is used to draw the slmenu interface on top of vis).
2016-05-14vis: allow :commands with a hyphen in the nameMarc André Tanner
This fixes the argument parsing for the :{un,}map-window commands.
2016-05-05sam: avoid taking snapshots within the filter command implementationMarc André Tanner
This has the effect that multiple filter commands can be undone together.
2016-04-29vis: do not crash when processing :-commands and no window is activeMarc André Tanner
This is needed to make the vis.event.start Lua callback useful, setting global options should be possible even if no windows exist yet. The :set command options should probably be cleaned up further, some of them apply only to the currently active window while others have a global effect.
2016-04-21vis: add infrastructure to register custom :-commandsMarc André Tanner
2016-04-21vis: do not lazy allocate :-commandsMarc André Tanner
The built in commands should always be available.
2016-04-20vis: handle termination from within win_open event gracefullyMarc André Tanner
2016-04-17sam: except for visual mode, apply :w to whole fileMarc André Tanner
Also in visual mode, warn if :w is not forced by ! because the file will be reduced to the active selection.
2016-04-13sam: improve ^ matching start of lineMarc André Tanner
There are some nasty differences between the meaning of ^ in Plan 9's regexp library and POSIX when using REG_NEWLINE. The former only matches at the beginning of a line wheras the latter matches the zero-length string immediately after a newline character \n. As a result this also matches after the very last newline at the end of the file. This is undesired behavior for a command like :x/^/c/#/ Hence we try to filter out this last match. Close #264
2016-04-13Use view_cursors_new_force where appropriateMarc André Tanner
Close #263
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