aboutsummaryrefslogtreecommitdiff
path: root/sam.c
AgeCommit message (Collapse)AuthorFilesLines
2018-02-19sam: fix g/^$/Marc André Tanner1-2/+7
With POSIX ERE the pattern ^$ matches strings ending with a new line because an empty match is reported after the trailing newline at the very end of the input. This is undesirable for use cases like x g/^$/ d which is supposed to delete all empty lines of a file. As a fix we disregard empty matches at the end of the given range.
2017-07-14vis-lua: make selection first class primitives in Lua APIMarc André Tanner1-3/+3
2017-07-10vis: implement jump list in terms of marksMarc André Tanner1-0/+1
2017-07-07vis: use marks instead of registers to store selectionsMarc André Tanner1-5/+10
The key binding remain the same, but the selections are now stored on a per-buffer basis.
2017-06-27Merge branch 'show-eof' of https://github.com/p-e-w/visMarc André Tanner1-0/+6
Conflicts: view.c view.h
2017-06-15sam: simplify print command implementationMarc André Tanner1-16/+11
2017-06-15vis: rename uses of Cursor to SelectionMarc André Tanner1-110/+110
2017-06-15view: rename view_cursorsMarc André Tanner1-6/+6
2017-06-15view: rename view_selection_anchoredMarc André Tanner1-1/+1
2017-06-15view: rename view_cursors_countMarc André Tanner1-2/+2
2017-06-15view: rename view_cursors_nextMarc André Tanner1-4/+4
2017-06-15view: rename view_cursors_selection_startMarc André Tanner1-3/+3
2017-06-15view: rename view_cursors_selection_clearMarc André Tanner1-1/+1
2017-06-15view: rename view_cursors_selection_getMarc André Tanner1-6/+6
2017-06-15view: rename view_cursors_primary_{get,set}Marc André Tanner1-4/+4
2017-06-15view: rename view_cursor_disposedMarc André Tanner1-1/+1
2017-06-15view: rename view_cursors_disposeMarc André Tanner1-4/+4
2017-06-15view: rename view_cursors_newMarc André Tanner1-2/+2
2017-06-15view: remove view_cursors_multipleMarc André Tanner1-1/+1
2017-06-15vis: promote selections to first class primitivesMarc André Tanner1-17/+14
This unifies cursors and selections. The cursor are now represendted as singleton selections.
2017-06-05sam: fix + addressMarc André Tanner1-1/+1
Previoulsy + would not advance to the next line when the cursor was on the first character of a line. This should fix the +- idiom, i.e. :+-x/foo/c/bar/ performs a substitution on the current line.
2017-06-04Add option to hide EOF markerPhilipp Emanuel Weidmann1-0/+6
2017-05-15sam: use default address for file looping commandsMarc André Tanner1-2/+4
This sould fix a clang analyzer warning and make the code more robust. The problem could actually not occur in practice because the X and Y commands always have the internal cmd_select as intermediate node in the execution tree. In general the multiple file support will need more design work. Fix #551
2017-04-14vis: make certain operations interruptible with <C-c>Marc André Tanner1-4/+4
As currently implemented this will only work for operations which are individually fast, but repeated many times (e.g. `1000000itext<Escape>`).
2017-04-12sam: fix negative count specifiers from visual modeMarc André Tanner1-2/+5
2017-04-12sam: support %n count specifier matching every n-th selectionMarc André Tanner1-0/+15
2017-04-12sam: add support for negative count specifierMarc André Tanner1-10/+42
2017-04-12sam: add support for count specifier to `g` and `y` commandsMarc André Tanner1-12/+55
2017-04-12sam: distinguish between empty // and no regexMarc André Tanner1-1/+4
2017-04-12sam: reject command names containing digits or ending with a hyphenMarc André Tanner1-1/+6
The current implementation will also reject consecutive hyphens.
2017-04-06sam: properly free transcript in error caseMarc André Tanner1-4/+19
2017-04-02Fix Debian package lintian warningsMarc André Tanner1-1/+1
https://mentors.debian.net/package/vis
2017-03-19Move :set horizon option implementaiton to luaMarc André Tanner1-6/+0
2017-03-19Move :set theme option implementation to luaMarc André Tanner1-6/+0
2017-03-19Move :set syntax option implementation to luaMarc André Tanner1-6/+0
It is no longer possible to change the used syntax by assigning to the `win.syntax = name` field, instead the function win:set_syntax(name)` should be called. The distinction between filetype and syntax lexer to use should probably be clarified/cleaned up at some point.
2017-03-19vis: add infrastructure to dynamically add :set optionsMarc André Tanner1-29/+22
2017-03-02vis: remove :bdelete commandMarc André Tanner1-4/+0
It does not really fit into the style of the rest of the command language. Eventually we should be able to express this kind of thing using a looping construct based on the `X` and `Y` commands.
2017-02-27vis: allow useage of file dialog for :read commandMarc André Tanner1-13/+0
Fix #505
2017-02-24vis: make help texts optional to produce a smaller binaryMarc André Tanner1-62/+61
$ ./configure --disable-help shrinks the binary by about 20K on a x86_64 system.
2017-02-21sam: make sure all commands can be undoneMarc André Tanner1-0/+2
Take a snapshot before and after processing the transcript.
2017-02-21sam: reformat code to avoid one level of indentationMarc André Tanner1-34/+34
2017-02-09sam: fix bogus clang compiler warningMarc André Tanner1-1/+2
Strictly speaking this is a compiler bug: https://llvm.org/bugs/show_bug.cgi?id=22062 The C11 standard section 6.4.4.3 says: "An identifier declared as an enumeration constant has type int." and 6.7.2.2: "Each enumerated type shall be compatible with char, a signed integer type, or an unsigned integer type. The choice of type is implementation-defined, but shall be capable of representing the values of all the members of the enumeration." So while `err` can store a value larger than that of any enumeration member, it could also be of signed type, resulting in a warning about comparing integers of different signs. Converting it to size_t before the range check and array indexing, should fix both warnings. Fix #478
2017-02-08sam: execute commands even if we have no valid rangeMarc André Tanner1-2/+3
In an ideal world this should never happen. However, if for some reason all cursors/selections become invalid, default to an empty range. This at least allows to terminate the editor gracefully whereas before the command would silently be ignored.
2017-02-05vis: add file argument to vis_pipeMarc André Tanner1-2/+2
2017-02-02vis: support rudimentary help search using :help patternMarc André Tanner1-1/+1
The argument needs to be a valid regular expression. It currently clobbers the last used search term and hence allows repeated searches using `n` and `N` respectively.
2017-02-02Slight code cleanups, use buffer API where appropriateMarc André Tanner1-7/+3
2017-02-01Update year number to 2017Marc André Tanner1-1/+1
2017-01-31sam: optmize transcript insertion for common caseMarc André Tanner1-2/+9
This esentially performs an insertion sort. Rather than iterating the list from the start every time keep track of the latest change and optmize for monotonically increasing file positions.
2017-01-31vis: add workaround for broken color handling in Terminal.appMarc André Tanner1-0/+7
Terminal.app sets $TERM=xterm-256color and ships a corresponding terminfo description advocating that it is capable of color changes to the 256 color palette when in fact it can not. We introduce a new boolean option "change-256colors" which is true by default but can be used to disable color changes. It is automatically set if Terminal.app is detected using $TERM_PROGRAM. This should fix display artifacts as described in #456.
2017-01-26sam: disallow destructive commands in groups and looping constructsMarc André Tanner1-8/+41
This should fix segfaults for commands like `:{ q i/foo/ }` or `:x/pattern/ q` where a command invalidates the current window. The checks are a bit too strict, for example a destructive command at the end of a non-nested group would be fine, but is currently also rejected.