summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2015-07-24text-motion: introduce text_line_{up,down}Marc André Tanner
2015-07-23text-object: add text_range_linewiseMarc André Tanner
Takes a range and extends both ends to cover the remaining part of the line.
2015-07-22text: introduce text_range_newMarc André Tanner
2015-07-21ui: further separate curses related user interface codeMarc André Tanner
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é Tanner
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é Tanner
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-19text: move regex related functions to separate fileMarc André Tanner
Eventually this should probably be rewritten to use an iternal regex engine, currently it has unacceptable memory usage, it copies the whole text.
2015-07-19text: slight cleanup, add a few commentsMarc André Tanner
2015-07-11vis: rename struct member to avoid conflict with standard libraryMarc André Tanner
Closes #60
2015-07-10vis: add a file open dialogMarc André Tanner
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é Tanner
2015-07-10text: upon successfull file save store new modification timeMarc André Tanner
2015-07-09ui: abstract curses related special keys awayMarc André Tanner
2015-07-09ui: unify backspace handlingMarc André Tanner
2015-07-09ui: move terminal state handling code to ui specific fileMarc André Tanner
2015-07-09ui: move input handling code to ui specific filesMarc André Tanner
2015-07-09vis: improve handling of linewise deletion at end of fileMarc André Tanner
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é Tanner
2015-07-08vis: only read file content from stdin if - was specifiedMarc André Tanner
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-07text: safer temporary file creationMarc André Tanner
Set umask before calling mkstemp. According to POSIX 2008 this is not necessary since the temporary file is guaranteed to be created with permission restricted to the current user. However this is more secure on non-conforming systems and safe as long as we do not use multiple threads. Fixes Coverity CID 101333.
2015-07-07view: properly NUL terminate whitespace replacement symbolsMarc André Tanner
This should not be a problem in practice, since cell->data is large enough anyway.
2015-07-07text: avoid double close in error caseMarc André Tanner
2015-07-07text: remove left over debugging codeMarc André Tanner
2015-07-06Make selection contiguous over whitespace symbolsMarc André Tanner
2015-07-06Warn when saving a file which has been changed outside the editorMarc André Tanner
2015-07-06text: remove text_load_fd and text_fd_getMarc André Tanner
2015-07-06Move filename from Text to FileMarc André Tanner
Also apply syntax rules every time the file name changes.
2015-07-06text: overhaul file load implementationMarc André Tanner
Files smaller than 8M are now copied into an internal buffer upon load. Thus they can be safely truncated. Larger files are memory mapped and use the file/virtual memory system as caching layer. Hence truncating them will corrupt the file content. Eventually the resulting SIGBUS should be handled gracefully.
2015-07-06text: overhaul save implemenationMarc André Tanner
Try to do an atomic save using rename(2) unless * the file is a symbolic link * the file is a hard link * file ownership can not be preserved * file group can not be preserved * POSXI ACL can not be preserved (if enabled) * SELinux security context can not be preserved (if enabled) in which case the file is overwritten in place. However a failure to do so results in data loss. Closes #47.
2015-07-05make: only call uname once in config.mkMarc André Tanner
2015-07-05text: store buffer allocation type (mmap or malloc)Marc André Tanner
2015-07-03Add movements to next/previous character within same lineMarc André Tanner
These movements always keep the cursor on the same line and do not move over newlines.
2015-07-03Do not take a snapshot in text_range_writeSilvan Jegen
Since text_range_write is called several times in cmd_filter, the undo command does not undo the whole filter operation but only up to the last call of text_range_write. Removing the snapshot-taking code solves this issue.
2015-07-03Remove text dump debugging codeMarc André Tanner
Instead use the text-dump git branch if necessary.
2015-07-03Fix handling of multibyte characters (at start of display area)David B. Lamkins
Previously a sequence of Unicode REPLACEMENT CHARACTER was displayed. Use an explicitly initialized mbstate_t object in the call to mbrtowc(). While this should not strictly be necessary, it works around a bug in certain implementations. Closes #56.
2015-07-03Add :show command to display special symbols for whitespacesMarc André Tanner
Enable/disable by setting to 0/1 respectively: :set show spaces=0 tabs=0 newlines=1
2015-06-30Fix segfault in cmd_filterMarc André Tanner
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é Tanner
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é Tanner
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é Tanner
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é Tanner
2015-06-28Fix copy/paste error in text_restoreMarc André Tanner
This really needs some unit tests.
2015-06-28Replace a->time with a->seq in history_traverse_toRyan Chipman
2015-06-28Add seq field to Action structRyan Chipman
2015-06-27Add more thorough description of history to READMERyan Chipman
2015-06-27Make :earlier and :later accept arguments similar to vimMarc André Tanner
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-27Mark internal undo tree functions as staticMarc André Tanner
2015-06-27Edit README to reflect new history implementationRyan Chipman
2015-06-27Hook up :-commands & keybindings for earlier/laterRyan Chipman
2015-06-27Core undo tree changesRyan Chipman