aboutsummaryrefslogtreecommitdiff
path: root/view.h
AgeCommit message (Collapse)AuthorFilesLines
2017-04-20vis: start cleaning up register related codeMarc André Tanner1-1/+0
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-2/+0
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-03-22view: rename view_dirty to view_invalidateMarc André Tanner1-1/+1
2017-03-14Restructure display codeMarc André Tanner1-17/+12
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-01-31view: add back link from selection to corresponding cursorMarc André Tanner1-1/+1
Can be NULL if no cursor is associated with the given selection (this is currently never the case). Avoids a loop through all cursors when clearing selections.
2017-01-13view: add infrastructure for delayed cursor destructionMarc André Tanner1-0/+7
At least one cursor (referred to as primary or main cursor) has always to exist. In the sam command language implementation we might want to dispose a cursor even if it is the primary one before later commands will create different ones (e.g. `:x/pattern/ { i/>>>/ a/<<</ }`). This commit introduces view_cursors_dispose_force. If called on the last remaining cursor, its selection is cleared and it is marked for destruction as soon as a new cursor is created. view_cursor_disposed returns the cursor marked for deletion (if any) and clears the descruction flag.
2016-10-03vis: improve cursor positioning after scrollingMarc André Tanner1-0/+4
Make cursor placement after scrolling (half) pages up/down less arbitrary. Close #390, fix #391
2016-05-22vis: refactor status line handlingMarc André Tanner1-1/+1
Make window status bar content configurable via Lua.
2016-05-22vis: consider :set horizon setting when syntax highlightingMarc André Tanner1-2/+0
2016-05-22vis: move syntax highlighting to pure Lua codeMarc André Tanner1-12/+10
2016-05-22view: add functions to style a file rangeMarc André Tanner1-0/+3
2016-05-22ui: s/UiStyles/UiStyle/gMarc André Tanner1-1/+1
2016-05-04vis: clean up cursor column displayMarc André Tanner1-7/+2
2016-04-27view: change view_cursors_place to take 1 based column numberMarc André Tanner1-0/+1
This should fix inconsistency in the Lua API.
2016-04-19vis: add :set horizon optionDavid B. Lamkins1-0/+2
Can be used to specify the number of bytes before the visible area to consider for syntax highlighting. Defaults to 32K for now, whereas before it was 16K.
2016-04-15view: add view_cursors_place(cursor, line, col) functionMarc André Tanner1-0/+1
2016-04-15view: add view_cursors_col functionMarc André Tanner1-0/+2
2016-04-15view: add view_cursors_line functionMarc André Tanner1-0/+2
2016-04-13view: add view_cursors_new_force functionMarc André Tanner1-1/+6
To create a cursor even if there already exists one at the same position. Should only be used if all but one of the cursors will later be removed.
2016-04-08vis: indicate primary cursor number in status barMarc André Tanner1-0/+2
If there exist multiple cursors, [n/m] is added to the status bar. Meaning the n-th cursor out of the existing m cursors is currently the primary one.
2016-04-03view: add return value to view_cursors_disposeMarc André Tanner1-1/+1
indicating whether cursor could be removed
2016-03-30view: constify functions to manipulate selectionsMarc André Tanner1-2/+2
2016-03-28view: add infrastructure to iterate through cursor columnsMarc André Tanner1-0/+7
The number of columns i.e. maximal number of cursors located on the same line can be obtained by view_cursors_column_count. Column addressing is zero based, valid indexes are [0, max-1]. Assuming there is a cursor on every letter: a b c d e f g h i max column would be 3, and the following would iterate over the cursors forming the second column [c, e, h]: for (Cursor *c = view_cursors_column(view, 1); c; c = view_cursors_column_next(c, 1)) ...
2016-03-28view: change cursor creation API to take an initial positionMarc André Tanner1-2/+2
2016-03-12ui/view: general code cleanupMarc André Tanner1-2/+2
2016-03-10view: add query function for multiple cursorsMarc André Tanner1-0/+2
2016-03-10ui: make primary cursor blinkMarc André Tanner1-0/+1
2016-03-10view: clean up API functions related to primary cursor handlingMarc André Tanner1-2/+4
The currently visible display port is always adjusted in a way that the primary cursor is visible.
2016-02-18vis-lua: promote vis to a real objectMarc André Tanner1-0/+1
That is from now on use vis:method instead of vis.method
2016-02-17Display NUL bytes correctlyRichard Burke1-4/+4
2016-01-13view: introduce view_selection_getMarc André Tanner1-0/+2
It returns the range covered by the selection of the primary cursor.
2016-01-13Add -pedantic to debug CFLAGS and fix resulting warningsMarc André Tanner1-1/+5
2015-12-26vis: refactor Lua integrationMarc André Tanner1-1/+1
Lua support can now be disabled at compile time using: $ make CONFIG_LUA=0 This commit also adds an initial Lua API and provides a few default hooks. We now also require Lua >= 5.2 due to the uservalue constructs. In principle the same functionality could be implemented using function environments from Lua 5.1.
2015-11-28view: remove ViewEvent infrastructureMarc André Tanner1-6/+1
The only used event handler was used to update the '< and '> marks which is now taken care of by the leave handler of the visual modes.
2015-11-28view: remove special treatment of tabs in cell matrixMarc André Tanner1-1/+0
2015-11-27vis: improve cursor alignment command <C-a>Marc André Tanner1-0/+4
2015-11-23view: fix cell placement of combining charactersMarc André Tanner1-2/+3
They now belong to the cell holding the corresponding regular (i.e. non-combining) character. This also means that at least in theory a cell could hold arbitrary amounts of data, in practice it is limited to 16 bytes.
2015-11-08Remove trailing white space from source filesMarc André Tanner1-1/+1
2015-11-08Delete now obsolete syntax.hMarc André Tanner1-1/+0
2015-11-08vis: implement :set colorcolumnMarc André Tanner1-0/+2
2015-11-08vis: factor out syntax highlighting codeMarc André Tanner1-0/+1
The view_draw function renders the text into the cells array and resyncs the cursor position. The syntax highlighting is applied in view_update, which also instructs the ui to update.
2015-11-08vis: experimental support for lua/lpeg based syntax highlightingMarc André Tanner1-1/+2
The lua based lexers are searched in the following order: $VIS_PATH/lexers $HOME/.vis/lexers /usr/share/vis/lexers followed by the standard lua package.path
2015-11-08vis: remove regex based syntax highlightingMarc André Tanner1-2/+2
2015-10-14view: cleanup whitespace replacement symbol handlingMarc André Tanner1-2/+0
2015-10-14view: cleanup option handlingMarc André Tanner1-0/+3
2015-08-06vis: implement gv to restore last selectionMarc André Tanner1-0/+2
2015-08-01view: hide API to free main cursorMarc André Tanner1-2/+0
2015-07-31vis: cleanup handling of charwise/linewise motionsMarc André Tanner1-0/+2
Also text objects in visual mode should now work better.
2015-07-28vis: use multiple cursor/selection infrastructureMarc André Tanner1-1/+4
This commits introduces the following keybindings, in normal mode: CTRL-N select word the cursor is currently over, switch to visual mode CTRL-P remove least recently added cursor ESC if a selection is active, clear it. Otherwise dispose all but the primary cursor. In visual mode: CTRL-N create new cursor and select next word matching current selection CTRL-X clear (skip) current selection, but select next matching word CTRL-P remove least recently added cursor
2015-07-28vis: ESC in normal mode clears all cursorsMarc André Tanner1-0/+2