aboutsummaryrefslogtreecommitdiff
path: root/text.c
AgeCommit message (Collapse)AuthorFilesLines
2015-07-06text: overhaul file load implementationMarc André Tanner1-3/+34
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é Tanner1-38/+193
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-05text: store buffer allocation type (mmap or malloc)Marc André Tanner1-16/+33
2015-07-03Do not take a snapshot in text_range_writeSilvan Jegen1-2/+0
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é Tanner1-16/+0
Instead use the text-dump git branch if necessary.
2015-06-28Fix copy/paste error in text_restoreMarc André Tanner1-1/+1
This really needs some unit tests.
2015-06-28Replace a->time with a->seq in history_traverse_toRyan Chipman1-3/+3
2015-06-28Add seq field to Action structRyan Chipman1-0/+8
2015-06-27Make :earlier and :later accept arguments similar to vimMarc André Tanner1-8/+30
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é Tanner1-4/+4
2015-06-27Core undo tree changesRyan Chipman1-50/+130
2015-06-24fixed some typos in commentsRyan Chipman1-2/+2
2015-04-22Cleanup line ending type detection and insertionMarc André Tanner1-7/+13
2015-04-05Introduce new struct VisTextMarc André Tanner1-24/+0
This adds yet another layer of indirection and stores vi related stuff which is associated with a given text but shared among all windows displaying it (e.g. marks). This will also help if one wants to keep texts arround which aren't currently displayed.
2015-02-03Fix :nnn where nnn > maximal number of linesMarc André Tanner1-5/+9
2015-01-18Do not leak memory in repeated text_filename_set callsMarc André Tanner1-3/+4
2015-01-16Print debug output to stdoutMarc André Tanner1-4/+4
Stderr is used for the editor output to make usage as a filter possible.
2015-01-16Avoid possible double close when savingMarc André Tanner1-0/+1
We want close(2) to happen before rename(2). At some point the save implementation will have to be overhauled.
2015-01-11More useful error message when opening non regular filesMarc André Tanner1-1/+1
2015-01-06Rudimentary change list (accessible via g; and g,)Marc André Tanner1-0/+12
2015-01-03Fix size_t specifiers in format stringsMatthias Braun1-1/+1
2015-01-02Rip out insertion repeating infrastructureMarc André Tanner1-13/+0
2015-01-01Introduce externally managed marksMarc André Tanner1-12/+23
2015-01-01Rename mark related functionsMarc André Tanner1-6/+6
2014-10-25Treat file read from stdin as unmodifiedMarc André Tanner1-0/+1
2014-10-25Introduce text_range_sizeMarc André Tanner1-3/+6
2014-10-25Support partial writesMarc André Tanner1-9/+20
2014-10-25Support partial savesMarc André Tanner1-11/+24
2014-10-25Change return type of text_saveMarc André Tanner1-4/+4
2014-10-24Do not crash when given an invalid search patternMarc André Tanner1-1/+4
2014-10-23Move feature test macros to config.mkMarc André Tanner1-2/+0
2014-10-19Preserve file permissions when savingStephen Paul Weber1-3/+10
2014-10-17Make editor usable as a filter: echo foo | vis - | catMarc André Tanner1-1/+31
The terminal output is by default redirected to stderr, making stdout available for communications purposes. If a file is "opened" from stdin (i.e. vis is given '-' as argument) and a subsequent write without a filename is performed as in ":wq" the output is written to stdout.
2014-10-17Read stdin when given - as filenameMarc André Tanner1-0/+12
2014-09-28More helpful error when trying to open a non fileMarc André Tanner1-1/+3
This is not really correct e.g. vis /dev/zero will print a misleading error.
2014-09-28Make '.' repeat last insertionMarc André Tanner1-0/+13
2014-09-28Fix typo in piece table caching layerMarc André Tanner1-1/+1
This resulted in uneccesary pieces of size 1.
2014-09-28Improve argument validation in text_insertMarc André Tanner1-0/+2
2014-09-22Add support for the '<', '>' marksMarc André Tanner1-1/+1
2014-09-19This fixes warning with latest glibc (>= 2.19.90), which deprecated _BSD_SOURCEChristian Hesse1-0/+1
warning: _BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE Commit 4f537d8e4bd9707a0048289f296510b76ce6d642 just fixed one of three cases. Fix the remaining.
2014-09-19Remove some TODO itemsMarc André Tanner1-3/+0
2014-09-19Support files with Windows style newlines \r\nMarc André Tanner1-0/+15
2014-09-19Windows style newlines are actually \r\n not \n\rMarc André Tanner1-4/+1
This is fiddely stuff, hopefully it doesn't break too much
2014-09-16Fix editing of files with length 0Gregor Best1-3/+5
Signed-off-by: Gregor Best <gbe@unobtanium.de>
2014-09-14Fix save to absolute pathsMarc André Tanner1-9/+14
The save logic still needs changes to restore file permissions, ownership (if run as root) etc.
2014-09-14Make byte based iterator API handle the whole range [0, size]Marc André Tanner1-5/+28
Before this commit the valid range was [0, size) which represents the file content. For the position at EOF (=size) a NUL byte is returned which is not actually part of the underlying file. This should fix various movements / editing operations at the end of the file. For example Ctrl+w at the end of the command prompt.
2014-09-14Use EPOS where appropriateMarc André Tanner1-4/+4
2014-09-14All *_free(...) functions should accept a NULL argumentMarc André Tanner1-0/+2
2014-09-14Fix clang static analyzer warningsMarc André Tanner1-0/+8
2014-09-13Introduce some helper functions dealing with FilerangeMarc André Tanner1-0/+19