aboutsummaryrefslogtreecommitdiff
path: root/vis.c
AgeCommit message (Collapse)AuthorFilesLines
2016-07-06vis: fix inner text object variants when cursor is on opening delimiterMarc André Tanner1-3/+3
Except for special cases like gn and gN vis expected that a text object would be a function mapping a position to a range as follows: f: pos -> [start, end] with start <= f(pos) <= end Clearly this condition does not hold for inner text objects when the initial position i.e. the cursor is on the opening delimiter. This also obsoletes the need for the SPLIT text object flag which should be removed in a later commit if the current behavior is found to be working as expected.
2016-06-14Update the statusline when starting or ending the recording of a macroJosh Wainwright1-0/+4
2016-05-28vis: try to reduce number of redrawsMarc André Tanner1-8/+4
This is a not yet successful attempt to reduce terminal flickering when resizing windows as is for example the case when entering command mode. UI related debug output can be enabled with: $ make CFLAGS=-DDEBUG_UI=1 $ ./vis > log
2016-05-26vis: use normalized absolute file names as internal representationMarc André Tanner1-22/+70
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-22Add a newline at the end of the fileSilvan Jegen1-1/+1
This is encouraged by the ISO C99 standard.
2016-05-22Remove unneeded header importSilvan Jegen1-1/+0
2016-05-22vis: refactor status line handlingMarc André Tanner1-8/+10
Make window status bar content configurable via Lua.
2016-05-22vis: add function to change window statusbar contentMarc André Tanner1-0/+4
2016-05-22vis: add functions to query window sizeMarc André Tanner1-0/+8
2016-05-22vis: consider :set horizon setting when syntax highlightingMarc André Tanner1-1/+2
2016-05-22vis: move syntax highlighting to pure Lua codeMarc André Tanner1-2/+27
2016-05-18vis: add an interactive mode to vis_pipe{,_collect}(...)Marc André Tanner1-10/+8
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-18vis: introduce vis_pipe_collect utility functionMarc André Tanner1-0/+19
2016-05-10Revert "vis: clean up interaction between vis and ui"Marc André Tanner1-10/+4
This caused issues on OpenBSD where it crashed the terminal. Also on Mac OS X suspend via ^Z (Ctrl-Z) was missing a \r i.e. the shell prompt was not properly redrawn. While in principle user interfaces should not have to depend on libtermkey, in practice this won't be an issue unless we are adding a non-terminal based UI (which won't happen anytime soon). This reverts commit 8f92b98848f9366e78c7aa824615bade83971513. Close #311
2016-05-10vis: improve cursor placement at EOF with enabled auto indentMarc André Tanner1-1/+1
Close #314
2016-05-08Fix autoindent when using ORichard Burke1-0/+4
2016-05-04vis: enable large file optimizations for files with long linesMarc André Tanner1-19/+0
2016-05-04vis: clean up interaction between vis and uiMarc André Tanner1-4/+10
A concrete user interface implementation should not have to depend on libtermkey. Therefore the vis core now uses an independent instance to parse keys.
2016-05-04vis: make j and k a linewise inclusive motionMarc André Tanner1-1/+2
They behave like an inclusive motion, but only if they are also linewise (which they are by default). This should make `yjp` and `ykp` yank both the current and the next/previous line when the cursor is at the start of a line. See also 532f52e9e52b98dc5749396f7353295418e0227a and #237
2016-05-01vis: delay start event until we are fully initializedMarc André Tanner1-7/+5
2016-05-01vis: further cleanup input handling, introduce vis_keys_feed APIMarc André Tanner1-14/+20
2016-05-01vis: cleanup input handling, improve macro replayMarc André Tanner1-34/+37
2016-04-29vis: do not crash when processing :-commands and no window is activeMarc André Tanner1-1/+3
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-28vis: unmap all mapped prefixes if a new mapping is forcedMarc André Tanner1-2/+2
Close #271
2016-04-21vis: add infrastructure to register custom :-commandsMarc André Tanner1-0/+1
2016-04-21vis: do not lazy allocate :-commandsMarc André Tanner1-0/+2
The built in commands should always be available.
2016-04-20vis-lua: trigger start event after ui has been initializedMarc André Tanner1-1/+3
2016-04-20vis: handle termination from within win_open event gracefullyMarc André Tanner1-3/+2
2016-04-18vis: use internal file to show lua errorsMarc André Tanner1-0/+3
This means no event handlers are run for it, hence there is no chance for recursive errors.
2016-04-18vis: do not run event handlers for internal filesMarc André Tanner1-3/+3
Should have been part of f50465312dbb7e8fcb2409aa691d1aea7a43c466.
2016-04-17vis: remove mapping from ' ' to <Space>Marc André Tanner1-1/+1
This reverts part of bd1d849b2033b04a372542c59d458d4f8279c937 just use a literal space within your key mappings. Close #280
2016-04-15vis: calculate auto indent for all cursors individuallyMarc André Tanner1-6/+9
2016-04-15vis: do not run registered event handlers for internal filesMarc André Tanner1-1/+1
This fixes interactive :-commands when the user has configured to set custom options vis:command(...) via the Lua win_open event handler. The problem was that the creation of the window for the command prompt would itself trigger an execution of a :-command. Upon successful completion the editor would switch to normal mode. Therefore the interactively entered command would not be applied to the correct range.
2016-04-14vis: allow mapping of <Space>Marc André Tanner1-1/+1
One should generally use <Space> in mappings: :map! normal <Space> h except for insert/replace mode where a literal space has to be used: :map! insert " " foo
2016-04-13vis: stop repeated motions as soon as resulting position remains the sameMarc André Tanner1-1/+2
This improves responsiveness of {count}j for files with less than count lines. For huge files this will still be slow because the code tries to restore cursor position on every line before moving on to the next. Also moving up will generally be slower than downwards. Use {count}% (fastest) or or :count (slower) instead. Close #267
2016-04-08vis: let :e recreate a window at the same location as the old oneMarc André Tanner1-0/+29
Close #224
2016-04-08vis: cleanup window focusing codeMarc André Tanner1-8/+13
2016-04-06vis: fix vi filter operators ! and =Marc André Tanner1-4/+2
2016-04-03vis: change vis_pipe API and cleanup related codeMarc André Tanner1-5/+5
2016-04-03sam: unify vi(m) and sam command lineMarc André Tanner1-1/+187
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-03-30array: allow arbitrarily sized array elementsMarc André Tanner1-0/+2
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-28vis: cleanup usage of vis_cursors_countMarc André Tanner1-1/+1
2016-03-25vis: remove __DATE__ and __TIME__ references to aid with reproducible buildsMarc André Tanner1-1/+1
2016-03-23Remove identically replicated copyright comments from source filesMarc André Tanner1-15/+0
2016-03-15vis: do properly replay ": and "/ registersMarc André Tanner1-0/+7
This makes @: (and @/) work.
2016-03-15vis: slightly cleanup register related codeMarc André Tanner1-1/+1
2016-03-13vis: convert gn and gN text objects to use "/ register contentMarc André Tanner1-3/+0
2016-03-12vis: overhaul search related code, support "/ registerMarc André Tanner1-0/+14
2016-02-25vis: use standard registers for macro recordingsMarc André Tanner1-11/+13
Also support upper case register to append to an existing macro.
2016-02-21Cleanup new line insertion codeMarc André Tanner1-10/+1