aboutsummaryrefslogtreecommitdiff
path: root/view.c
AgeCommit message (Collapse)AuthorFilesLines
2016-02-18vis-lua: promote vis to a real objectMarc André Tanner1-0/+4
That is from now on use vis:method instead of vis.method
2016-02-17Display NUL bytes correctlyRichard Burke1-1/+1
2016-02-16Display ASCII-127 (DEL) character as ^?Richard Burke1-4/+5
2016-02-12Mark some tables as constMarc André Tanner1-1/+1
This allows them to be placed into the read only ELF section.
2016-02-12Improve large file supportMarc André Tanner1-1/+9
Disable absolute line numbers for large files (currently anything bigger than 32MiB). This speeds up moving around with for example nn% since no new lines need to be calculated. Of course movements like :nn will be unaffected. The optimizations can be disabled by explicitly enabling absolute line numbers as in :set number
2016-01-27text-motion: change text_bracket_match APIMarc André Tanner1-1/+1
2016-01-16view: remove special cursor handling at end of visible areaMarc André Tanner1-2/+0
Close #148
2016-01-13view: introduce view_selection_getMarc André Tanner1-0/+4
It returns the range covered by the selection of the primary cursor.
2015-12-31view: fix regressionMarc André Tanner1-1/+3
This reverts 2f4b69cc67e8863e5789817ed5097158e6163621. There are likely still some problems left when editing the end of a file at end of the visual area.
2015-12-29view: improve cursor handling at end of fileMarc André Tanner1-1/+1
Holding down <Backspace> at the end of the file should not keep the cursor on the middle line of the window.
2015-12-29view: fix new line handling at the end of visible areaMarc André Tanner1-1/+1
The last new line is added to the cell matrix but failure is reported to indicate that there is no space left for further characters.
2015-12-29view: fix view [start,end] range calculationMarc André Tanner1-1/+1
This for example now correctly displays tab characters at the very start of the visible area.
2015-12-26vis: refactor Lua integrationMarc André Tanner1-157/+174
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: preserve column position when moving across linesMarc André Tanner1-8/+18
2015-11-28view: remove special treatment of tabs in cell matrixMarc André Tanner1-9/+3
2015-11-27vis: improve cursor alignment command <C-a>Marc André Tanner1-0/+11
2015-11-23view: fix cell placement of combining charactersMarc André Tanner1-7/+17
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-14view: increase range to consider for syntax highlightingDavid B. Lamkins1-1/+1
Increase the number of bytes to consider for syntax highligthing before the visisble area. This should improve the handling of long block comments. Closes #110
2015-11-09view: improve window redrawing for shared files/split windowsMarc André Tanner1-1/+1
When a file was being displayed in multiple windows changes in one could confuse the other.
2015-11-09view: correctly redraw window contentMarc André Tanner1-1/+4
If a change occured on the very first shown character, it was not properly reflected in the view.
2015-11-08Fix warnings found by static analyzerMarc André Tanner1-2/+1
2015-11-08Update year numbers in Copyright clauseMarc André Tanner1-1/+1
2015-11-08Remove trailing white space from source filesMarc André Tanner1-8/+8
2015-11-08Delete now obsolete syntax.hMarc André Tanner1-1/+14
2015-11-08view: do not highlight matching symbols if selection is activeMarc André Tanner1-1/+1
2015-11-08vis: introduce vis namespace for lua objectsMarc André Tanner1-9/+7
For now the vis table has only one member "lexers".
2015-11-08vis: implement :set colorcolumnMarc André Tanner1-0/+22
2015-11-08vis: factor out syntax highlighting codeMarc André Tanner1-47/+58
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: implement :set cursorlineMarc André Tanner1-0/+3
2015-11-08vis: experimental support for lua/lpeg based syntax highlightingMarc André Tanner1-15/+166
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-76/+7
2015-10-31view: make zb command more robustMarc André Tanner1-4/+2
The new approach first scrolls the window up such that the current cursor line lies below the current visible area, then the viewport is adjusted until the line is once again visible (at the bottom of the window). Closes #85
2015-10-26vis: merge editor.c into vis.cMarc André Tanner1-1/+1
2015-10-20view: ensure minimal window sizeMarc André Tanner1-0/+4
Do not create empty windows, more importantly do not overwrite random memory. Closes #80
2015-10-15ui: cleanup redrawingMarc André Tanner1-1/+1
2015-10-14view: cleanup whitespace replacement symbol handlingMarc André Tanner1-31/+27
2015-10-14view: cleanup option handlingMarc André Tanner1-0/+8
2015-10-14ui: refactor syntax style definitionsMarc André Tanner1-9/+10
Styles can now be specified as strings which will make them easier to specify from outside the editor. The following style attributes can be given in a comma separated list: bold italics underlined fore:color back:color where color is either a hex value of the form #aabbcc or one of the predefined colors: black red green yellow blue magenta cyan white
2015-08-06vis: implement gv to restore last selectionMarc André Tanner1-2/+24
2015-08-01view: hide API to free main cursorMarc André Tanner1-1/+2
2015-07-31vis: cleanup handling of charwise/linewise motionsMarc André Tanner1-7/+13
Also text objects in visual mode should now work better.
2015-07-28vis: use multiple cursor/selection infrastructureMarc André Tanner1-0/+11
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-2/+10
2015-07-28vis: add per cursor registersMarc André Tanner1-0/+6
2015-07-28text: move utility functions to separate fileMarc André Tanner1-0/+1
2015-07-26view: use a mark to keep track of the visible areaMarc André Tanner1-2/+10
This should fix "corruptions" caused by wrong offsets when editing the same file in multiple windows.
2015-07-26view: do not set cursor position after resizeMarc André Tanner1-1/+0
The problem is that a cursor movement might cause a redraw which in turn causes the sidebar width to change thus the view to be resized which will override the cursor position.
2015-07-26view: always fill out complete cell matrixMarc André Tanner1-12/+17
2015-07-26vis: add infrastructure to support multiple cursors/selectionsMarc André Tanner1-179/+410
This cleans up the existing selection handling code and adds the necessary bits to eventually support multiple cursors/selections. The cursor position is kept track of using marks, which means retrieving the cursor position is no longer a constant time operation. Furthermore the terminal cursor is no longer used, instead the whole window is redrawn after every cursor movement.