aboutsummaryrefslogtreecommitdiff
path: root/vis-core.h
AgeCommit message (Collapse)AuthorFilesLines
2020-01-27vis: pass absolute path to pre/post save eventsMarc André Tanner1-0/+2
2018-05-30vis: add loadmethod optionMarc André Tanner1-0/+1
Valid values are `read`, `mmap` or `auto`.
2017-07-14vis: use distinct mark to save last selectionsMarc André Tanner1-0/+2
This partially reverts f9e2b884c15919757651db8b10c033a344a19e75 further jumps after leaving visual mode should not break `gv`.
2017-07-10vis: remove change listMarc André Tanner1-7/+0
This was completely broken since 71eab6d5d72145f17ab3d4c87945ac12176ae8e9 and even before never really worked as one would expect. If anything it should be implemented like the jump list using marks.
2017-07-10vis: let '^ mark point to top of jump listMarc André Tanner1-2/+0
2017-07-10vis: implement jump list in terms of marksMarc André Tanner1-3/+11
2017-07-07vis: use marks instead of registers to store selectionsMarc André Tanner1-4/+6
The key binding remain the same, but the selections are now stored on a per-buffer basis.
2017-07-04vis: implement `gv` by means of new "^ registerMarc André Tanner1-0/+1
This window local register holds the last active selections.
2017-06-15vis: add basic infrastructure to store selections in registersMarc André Tanner1-0/+1
2017-06-15vis: rename uses of Cursor to SelectionMarc André Tanner1-1/+1
2017-05-27vis-lua: expose currently active key bindings through APIMarc André Tanner1-0/+1
Close #563
2017-04-23vis: fix # register countMarc André Tanner1-1/+1
Previously the # register was always reported as containing only one entry. This wrongly caused the first value to be put at all locations. Fix #544
2017-04-20vis: add # register to insert cursor numberMarc André Tanner1-0/+1
2017-04-20vis: start cleaning up register related codeMarc André Tanner1-1/+29
Now that register.h is no longer used by view.h we can move the struct and function declarations to vis-core.h.
2017-04-19vis: restructure register handlingMarc André Tanner1-0/+3
Decouple register content from cursors. Previously each cursor had exactly one corresponding register. Now each register can save a list of values whose lifetime is not tied to the cursor. If multiple cursors exist and a put with a register holding only a single value is performed, then this value is inserted at every cursor location. If there are fewer values available than cursors, then only the matching ones will be used. If a register holding multiple values is inserted in a single cursor context, only the first value will be used. Another option would be to join all existing values. The details of this behavior might be changed in the future. <C-r> in insert mode has not yet been adapted and register handling in general needs to be cleaned up further. Fix #527
2017-04-14vis: make certain operations interruptible with <C-c>Marc André Tanner1-1/+1
As currently implemented this will only work for operations which are individually fast, but repeated many times (e.g. `1000000itext<Escape>`).
2017-04-04vis: remove unused struct memberMarc André Tanner1-1/+0
2017-03-31vis: add non-default actions for vi compatible n/N motionsMarc André Tanner1-0/+1
The following key mappings should result in the vi behavior: :map! normal n <vis-motion-search-repeat> :map! normal N <vis-motion-search-repeat-reverse> The default remains unchanged, that is `n` (`N`) always searches towards the end (start) of the file. Fix #470
2017-03-19vis: add infrastructure for user specified operatorsMarc André Tanner1-3/+6
2017-03-19Move :set horizon option implementaiton to luaMarc André Tanner1-1/+0
2017-03-19Move :set syntax option implementation to luaMarc André Tanner1-1/+0
It is no longer possible to change the used syntax by assigning to the `win.syntax = name` field, instead the function win:set_syntax(name)` should be called. The distinction between filetype and syntax lexer to use should probably be clarified/cleaned up at some point.
2017-03-14Restructure display codeMarc André Tanner1-1/+1
Use pull instead of push based model for display code. Previously view.c was calling into the ui frontend code, with the new scheme this switches around: the necessary data is fetched by the ui as necessary. The UI independent display code is moved out of view.c/ui-curses.c into vis.c. The cell styles are now directly embedded into the Cell struct. New UI styles are introduced for: - status bar (focused / non-focused) - info message - window separator - EOF symbol You will have to update your color themes. The terminal output code is further abstracted into a generic ui-terminal.c part which keeps track of the whole in-memory cell matrix and #includes ui-terminal-curses.c for the actual terminal output. This architecture currently assumes that there are no overlapping windows. It will also allow non-curses based terminal user interfaces.
2017-02-24vis: remove unused struct memberMarc André Tanner1-1/+0
The macro replay code has since been refactored, making this obsolete. There is only ever one input queue from which keys are interpreted.
2017-02-24vis: make help texts optional to produce a smaller binaryMarc André Tanner1-1/+1
$ ./configure --disable-help shrinks the binary by about 20K on a x86_64 system.
2017-02-22vis: add exact count motion flagMarc André Tanner1-0/+1
Some motions should fail (i.e. keep the initial position) when the specified count can not be satisfied exactly. Examples include t, f, T, and F. Fix #497
2017-02-07vis: improve text object handlingMarc André Tanner1-0/+2
Fix `gN` and delimited inner variants when given a count.
2017-02-07vis: reformat text object definitionsMarc André Tanner1-3/+3
2017-02-01vis: refactor autoindent handlingMarc André Tanner1-0/+1
Rather than inserting a newline and then looking for leading white space of the previous line we now gather the white space before newline insertion. Also we no longer indent empty lines. Close #472
2017-01-31sam: optmize transcript insertion for common caseMarc André Tanner1-0/+1
This esentially performs an insertion sort. Rather than iterating the list from the start every time keep track of the latest change and optmize for monotonically increasing file positions.
2017-01-31vis: add workaround for broken color handling in Terminal.appMarc André Tanner1-0/+1
Terminal.app sets $TERM=xterm-256color and ships a corresponding terminfo description advocating that it is capable of color changes to the 256 color palette when in fact it can not. We introduce a new boolean option "change-256colors" which is true by default but can be used to disable color changes. It is automatically set if Terminal.app is detected using $TERM_PROGRAM. This should fix display artifacts as described in #456.
2017-01-28vis: keep track of most recently processed keys of input queueMarc André Tanner1-1/+3
Currently the key handling functions do not know through which mapping they were invoked. As an example the `count` handler exploits the implementation detail that the input queue is stored in contiguous memory, meaning `keys[-1]` gives access to the digit being pressed. This adds infrastructure to keep track of the two most recently processed keys of the input queue. The information is guaranteed to be accurate for the initial invocation of the key handler but will be overwritten in case new keys are pushed to the input queue (e.g. through vis_keys_feed).
2017-01-19vis: simplify count handling for insertionMarc André Tanner1-1/+0
2017-01-18vis: support count for insertion and replacementMarc André Tanner1-0/+1
Fix #372
2017-01-18vis: do not take undo snaphots while replaying a macroMarc André Tanner1-0/+1
The vis_keys_feed function is currently unaffected by this change. It still creates individual undo points. While this is probably undesirable from an API point of view, it keeps the lua based tests that use undo points working.
2017-01-16vis: cleanup regex header inclusionMarc André Tanner1-1/+0
2017-01-12sam: implement parallel grouping behaviorMarc André Tanner1-0/+8
2017-01-10vis: add register description to :help outputMarc André Tanner1-0/+3
2017-01-10vis: add valid marks to :help outputMarc André Tanner1-0/+6
2017-01-07buffer: remove redundant functionMarc André Tanner1-1/+1
For some reason we ended up with two identical functions: buffer_{clear,terminate}.
2016-12-29vis: cleanup key action lifetime managementMarc André Tanner1-0/+1
2016-12-27vis: properly free dynamic key bindingsMarc André Tanner1-0/+1
The handling of :unmap needs to be revisited at some point.
2016-12-14vis: add new :set savemethod auto|atomic|inplace optionMarc André Tanner1-0/+1
Specifies how the current file should be saved, `atomic` which uses rename(2) to atomically replace the file, `inplace` which truncates the file and then rewrites it or `auto` which tries the former before falling back to the latter. The rename method fails for symlinks, hardlinks, in case of insufficient directory permissions or when either the file owner, group, POSIX ACL or SELinux labels can not be restored. The option defaults to `auto`.
2016-11-27sam: stricter command parsingMarc André Tanner1-0/+1
Properly detect unbalanced curly braces and spurious output at the end of a group.
2016-11-27vis: cleanup signal handling codeMarc André Tanner1-0/+2
Move all signal handling code out of "library" code into user application.
2016-11-22vis-lua: introduce pre-save hookMarc André Tanner1-0/+1
The first argument is the file object while the second argument denotes the full path to which it will be written. Path might be `nil` if the file is going to be written to stdout. The Lua function is expected to return a boolean value indicating whether the write operation should proceed or be aborted.
2016-11-21vis-lua: rename file_save event to file_save_postMarc André Tanner1-1/+1
Indicating that the event is triggered *after* a successfull write.
2016-11-16vis: treat vis_keys_feed input like a macro replayMarc André Tanner1-0/+1
We need to push keys individually to the input queue such that the state machine can advance and record keys into the operator macro if necessary. Previously feeding the following input: isome text<Escape>. would not work as expected because the complete key stream was pushed to the input queue at the same time during which the operator macro was not yet active. Thus the dot command at the end would have nothing to repeat.
2016-11-15vis: defer UI initialization and overhaul argument parsingMarc André Tanner1-0/+1
Do not initalize curses UI before it is actually needed. Move vis command line argument parsing logic into main.c. This fixes `vis -v` output and exit status. Fix #351
2016-11-15vis: overhaul and unify event generation codeMarc André Tanner1-0/+16
Add another layer of indirection, move actual event generation code to a dedicated function.
2016-11-15vis: generalize special stdin handlingMarc André Tanner1-1/+1
In preparation to move argument parsing code out of vis.c.