aboutsummaryrefslogtreecommitdiff
path: root/vis.c
AgeCommit message (Collapse)AuthorFilesLines
2015-08-07vis: limit to/till movements to current lineMarc André Tanner1-2/+2
2015-08-06vis: implement gv to restore last selectionMarc André Tanner1-0/+8
2015-08-06vis: implement al and il text objectsMarc André Tanner1-0/+4
2015-08-06vis: implement gp and gP add count support to put operationsMarc André Tanner1-13/+42
2015-08-02vis: use file open dialog also for :editMarc André Tanner1-1/+1
2015-08-02vis: use I and A instead of CTRL-O for new cursors in visual modeMarc André Tanner1-2/+16
I and A creates a new cursor at start/end of every selected line.
2015-08-02vis: add text objects `af` and `if`Marc André Tanner1-0/+4
They try to match C-like function definitions. The inner variant only contains the function body.
2015-08-02vis: add motions [[, [], ][, ]]Marc André Tanner1-0/+8
They behave not like in vim, but instead try to find the start/end of C-like function definitions. The first character stands for the direction [ for backwards, ] for forwards. The second character denotes the start [ or end ] respectively.
2015-08-01vis: support `ae` and `ie` text objectsMarc André Tanner1-0/+4
2015-08-01view: hide API to free main cursorMarc André Tanner1-1/+1
2015-07-31vis: cleanup handling of charwise/linewise motionsMarc André Tanner1-80/+55
Also text objects in visual mode should now work better.
2015-07-28vis: fix one more coverity scan warningMarc André Tanner1-2/+2
With the current code this will never cause a NULL dereference since it is checked at the call site. However it makes sense to check it anyway.
2015-07-28vis: fix bugs uncovered by coverity scanMarc André Tanner1-2/+4
2015-07-28vis: fix join operatorMarc André Tanner1-6/+9
Only skip last line break if range comes from linewise visual mode.
2015-07-28vis: pass cursor to operator implementationsMarc André Tanner1-0/+1
2015-07-28text-object: introduce utility function text_range_is_linewiseMarc André Tanner1-1/+1
2015-07-28vis: use multiple cursor/selection infrastructureMarc André Tanner1-0/+61
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: do not move cursor in multicursor mode after undo/redoMarc André Tanner1-2/+6
2015-07-28vis: try to align cursors on the same column with CTRL-AMarc André Tanner1-0/+19
2015-07-28vis: CTRL+J and CTRL+K creates a new cursor on the line below/aboveMarc André Tanner1-0/+15
2015-07-28vis: ESC in normal mode clears all cursorsMarc André Tanner1-3/+12
2015-07-28vis: add per cursor registersMarc André Tanner1-2/+8
2015-07-28vis: add an operator to create new cursorsMarc André Tanner1-0/+15
The operator creates a new cursor at the start of every line covered by the given range. It is currently only available as CTRL+O in visual mode.
2015-07-28text: move utility functions to separate fileMarc André Tanner1-0/+1
2015-07-26vis: add infrastructure to support multiple cursors/selectionsMarc André Tanner1-111/+106
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.
2015-07-21ui: further separate curses related user interface codeMarc André Tanner1-2/+2
By now ui-curses.[hc] are the only files dealing directly with curses related functions. Integration of a proper mainloop is still pending.
2015-07-20vis: improve insertion of verbatim characters via CTRL-V in insert modeMarc André Tanner1-7/+58
Recognized formats are: CTRL-V nnn decimal value nnn CTRL-V onnn or CTRL-V Onnn octal value nnn CTRL-V xnn or CTRL-V Xnn hex value nn CTRL-V unnnn Unicode codepoint nnnn CTRL-V Unnnnnnnn Unicode codepoint nnnnnnnn Leading zeros can be omitted, any illegal character for the given format will be ignored and terminates the numerical code.
2015-07-19vis: handle file truncation more gracefullyMarc André Tanner1-0/+35
If we use the file / virtual memory system as cache (using mmap(2)) and another process truncates the file we are editing, we have a problem. All we can do is catch the resulting SIGBUS, close the corresponding window and print a warning message. To test this use: $ dd if=/dev/zero of=TEST bs=8M count=1 $ vis TEST :! echo TRUNCATE > TEST
2015-07-11vis: rename struct member to avoid conflict with standard libraryMarc André Tanner1-2/+2
Closes #60
2015-07-10vis: add a file open dialogMarc André Tanner1-19/+58
For this to work make sure you have vis-open and slmenu or dmenu somewhere in $PATH. For now the file dialog is shown for :open, :split and :vsplit when the argument is either . (a dot) or looks like a file pattern. For example :open *.[ch] will show a listing of all C source and header files in the current directory. Use a fuzzy search to make your choice.
2015-07-10vis: fix detection of file changes outside the editorMarc André Tanner1-2/+2
2015-07-09ui: move terminal state handling code to ui specific fileMarc André Tanner1-3/+2
2015-07-09ui: move input handling code to ui specific filesMarc André Tanner1-28/+1
2015-07-09vis: improve handling of linewise deletion at end of fileMarc André Tanner1-3/+6
dd on the last line now moves the cursor to the start of the preceding line.
2015-07-08vis: make J (join) behave like in vim when given a countMarc André Tanner1-0/+2
2015-07-08vis: only read file content from stdin if - was specifiedMarc André Tanner1-1/+1
This allows to feed keyboard input from a file as in: cat keyboard-input | vis input-file which will be used for testing purposes.
2015-07-06Warn when saving a file which has been changed outside the editorMarc André Tanner1-1/+10
2015-07-06text: remove text_load_fd and text_fd_getMarc André Tanner1-13/+22
2015-07-06Move filename from Text to FileMarc André Tanner1-6/+9
Also apply syntax rules every time the file name changes.
2015-07-03Add movements to next/previous character within same lineMarc André Tanner1-0/+4
These movements always keep the cursor on the same line and do not move over newlines.
2015-07-03Add :show command to display special symbols for whitespacesMarc André Tanner1-0/+32
Enable/disable by setting to 0/1 respectively: :set show spaces=0 tabs=0 newlines=1
2015-06-30Fix segfault in cmd_filterMarc André Tanner1-3/+3
Using FD_ISSET on negative file descriptors results in breakage. Closes #55.
2015-06-30Perform character prev/next movements based on Text not ViewMarc André Tanner1-2/+2
While it is slower, it allows to move to characters which are currently not visible. This will be handy when experimenting with multiple cursors.
2015-06-30Cleanup insert/replace mode input handlingMarc André Tanner1-17/+5
View should only display the file content, but not modify it.
2015-06-28Do not take address of variables which go out of scopeMarc André Tanner1-4/+4
This is a bit of a hack, since now the callers range is modified. The various cmd_* functions should probably take a const Filerange pointer as argument and modify a local Filerange variable if needed.
2015-06-28Mark intentional case statement fall throughMarc André Tanner1-3/+3
2015-06-27Make :earlier and :later accept arguments similar to vimMarc André Tanner1-19/+50
Currently the following arguments are accepted: {count} Go to older text state {count} times. {N}s Go to older text state about {N} seconds before. {N}m Go to older text state about {N} minutes before. {N}h Go to older text state about {N} hours before. {N}d Go to older text state about {N} days before
2015-06-27Hook up :-commands & keybindings for earlier/laterRyan Chipman1-0/+41
2015-05-17Implement :substitute by invoking sed as a filterMarc André Tanner1-2/+5
2015-05-17Implement :r and :r! in terms of filter commandsMarc André Tanner1-25/+20