Commit Graph

7301 Commits

Author SHA1 Message Date
Maxime Coste
5eeec8bd4d Make expansion of strings support quoting of % by doubling up 2018-07-05 07:54:28 +10:00
Maxime Coste
20f70d9177 doc/pages: Add command-parsing.asciidoc to describe command line parsing 2018-07-05 07:54:28 +10:00
Maxime Coste
c829595d01 Refactor command line parsing
Command line parsing now works as follow:

* Quoted strings ('...', "..." and %~...~ with '~' non nestable)
  use 'doubling-up' for escaping their delimiter, if the delimiter
  appears twice in a row, it is considered as part of the string and
  represent one delimiter character. So 'abc''def' == "abc'def". No
  other escaping takes place in those strings.

* Balanced strings (%{...}) do not support any kind of escaping, but
  finds the matching closing delimiter by taking nesting into account.
  So %{abc{def}} == "abc{def}".

* Non quoted words support escaping of `;` and whitespaces with `\`,
  `%`, `'` and '"` can be escaped with `\` at the start of the word,
  they do not need escaping (and will not be escaped) else where in
  a word where they are treated literally. Any other use of '\' is a
  literal '\'. So \%abc%\;\ def == "%abc%; def"

As discussed in #2046 this should make our command line syntax more
robust, provide a simple programmatic way to escape a string content
(s/<delim>/<delim><delim>/g), be well defined instead of ad-hoc
undocumented behaviour, and interact nicely with other common
escaping by avoiding escaping hell (:grep <regex> can in most case
be written with the regex unquoted).
2018-07-05 07:54:28 +10:00
Maxime Coste
cad5f37efd Fix register saving post -save-regs behaviour change 2018-07-05 07:54:28 +10:00
Maxime Coste
b5dd9f4094 test/run: Fix script post hook behaviour change 2018-07-05 07:54:28 +10:00
Maxime Coste
a77710e098 ctags.kak: remove -no-hooks from execute-keys 2018-07-05 07:54:28 +10:00
Maxime Coste
24d8a58b0d Add -with-hooks to execute-keys and make -no-hooks evaluate-commands specific 2018-07-05 07:54:28 +10:00
Maxime Coste
9082564ab7 Make -with-maps only available for execute-keys command
It does not make a lot of sense to have this switch for
evaluate-commands.
2018-07-05 07:54:28 +10:00
Maxime Coste
5902c7b790 Do not save any registers by default in evaluate-commands 2018-07-05 07:54:28 +10:00
Maxime Coste
ec16969609 Do not reparse %sh{...} strings
Automatic reparsing of %sh{...}, while convenient in many cases,
can be surprising as well, and can lead to security problems:

'echo %sh{ printf "foo\necho bar" }' runs 'echo foo', then 'echo bar'.
we make this danger explicit, and we fix the 'nop %sh{...}' pattern.

To reparse %sh{...} strings, they can be passed to evaluate-commands,
which has been fixed to work in every cases where %sh{...} reparsing
was used..
2018-07-05 07:54:28 +10:00
Maxime Coste
3b9818c10b Merge remote-tracking branch 'lenormf/edit-readonly-flag' 2018-07-04 19:47:05 +10:00
Maxime Coste
86616c207d Merge remote-tracking branch 'lenormf/synchronized-write' 2018-07-04 19:46:40 +10:00
Maxime Coste
220458839d Fix git-tools.kak use of $@ 2018-07-04 19:46:06 +10:00
Frank LENORMAND
ab2eade28d rc: Synchronize important file writes
Fixes #2178
2018-07-04 09:55:05 +03:00
Frank LENORMAND
5309b7b5e5 src: Add a -sync flag to the write commands 2018-07-04 09:49:53 +03:00
Maxim Baz
b511663404
Use bg1 2018-07-03 22:55:47 +02:00
Maxim Baz
ba547ea4dd
Make tests a bit more interesting 2018-07-03 22:32:04 +02:00
Maxime Coste
956c0e32e8 Merge remote-tracking branch 'maximbaz/add-missing-python3-keyword-nonlocal' 2018-07-03 22:18:08 +10:00
Maxime Coste
c40ab126d6 Merge remote-tracking branch 'maximbaz/git-gutter-further-improvements' 2018-07-03 22:17:51 +10:00
Frank LENORMAND
dd17b20bbf src: Allow the edit command to create readonly buffers 2018-07-03 14:34:48 +03:00
Maxim Baz
44f0230fe1
Add missing python3 keyword: nonlocal 2018-07-02 23:28:25 +02:00
Maxim Baz
fb045ec072
Let the update_diff fail if we are not in git repo 2018-07-02 22:43:23 +02:00
Maxim Baz
551674875d
Don't swallow stderr, don't update diff when not in git repo, use underlined ~ symbol 2018-07-02 22:34:54 +02:00
dahlbaek
2a509ba73f Mark unused variables with the [[gnu::unused]] attribute 2018-07-02 19:33:52 +02:00
Maxime Coste
a13e36b4b7 Merge remote-tracking branch 'maximbaz/gruvbox-error' 2018-07-02 20:12:02 +10:00
Maxime Coste
68e5674f59 Merge remote-tracking branch 'maximbaz/ini-support-properties-fix-equals-color' 2018-07-02 20:11:49 +10:00
Maxime Coste
379e7c2d2d Merge remote-tracking branch 'maximbaz/improve-git-gutter' 2018-07-02 20:09:10 +10:00
Maxime Coste
084b196125 Merge remote-tracking branch 'maximbaz/copyright-waiver' 2018-07-02 20:08:23 +10:00
Maxim Baz
d1127e4038
Maxim Baz Copyright Waiver
I dedicate any and all copyright interest in this software to the
public domain.  I make this dedication for the benefit of the public at
large and to the detriment of my heirs and successors.  I intend this
dedication to be an overt act of relinquishment in perpetuity of all
present and future rights to this software under copyright law.
2018-07-02 10:01:17 +02:00
Brian Jones
a2def1dde4
Brian Jones Copyright Waiver
I dedicate any and all copyright interest in this software to the
public domain.  I make this dedication for the benefit of the public at
large and to the detriment of my heirs and successors.  I intend this
dedication to be an overt act of relinquishment in perpetuity of all
present and future rights to this software under copyright law.
2018-07-02 13:53:03 +09:00
Maxim Baz
b9a0c86cdc
Quote file path, keep silent when not in git repo 2018-07-01 22:54:11 +02:00
Maxime Coste
9870df12a3 Merge remote-tracking branch 'lenormf/fix-C-cycle-hogging' 2018-07-01 11:19:01 +10:00
Maxime Coste
24ab99c8bf Merge remote-tracking branch 'lenormf/fix-multiplexers-docstring' 2018-07-01 11:17:54 +10:00
Maxime Coste
8fcce5d1b1 Merge remote-tracking branch 'Screwtapello/fix-rust-lifetime-highlighting' 2018-07-01 11:12:45 +10:00
Maxim Baz
a56c39d69b
Improve git gutter 2018-07-01 02:24:46 +02:00
Frank LENORMAND
266ce73de7 src: Make C skip empty lines
This commits changes the way `C` behaves when the next line is empty:
instead of stopping the selection, it will now jump to the next line
that can hold a selection as big as the current one.

The primitive's count parameter holds the maximum amount of selections
that should be added to the current one.

Closes #2061
2018-06-30 14:39:15 +03:00
Frank LENORMAND
46943d4374 rc: Clearify the behavior of multiplexers that create new clients
Note: `GNU/screen` has a different interpretation of what constitutes
a "vertical split", hence the inverted command descriptions, compared
to the tmux/iterm etc.

Closes #1626
2018-06-30 14:19:32 +03:00
Frank LENORMAND
513eb2720e rc iterm: POSIX fixes 2018-06-30 14:07:20 +03:00
Frank LENORMAND
1cb51cacb7 src: Fix cycle hogging when using C at EOF 2018-06-30 11:53:28 +03:00
Frank LENORMAND
76ac7ab663 rc git: Highlight the delete operation when rebasing 2018-06-29 18:23:49 +03:00
Maxim Baz
7cfd0d1b39
trigger travis 2018-06-29 01:37:56 +02:00
Maxim Baz
d8a2588e9c
another attempt to fix macOS issue 2018-06-29 01:22:17 +02:00
Maxim Baz
c683b09287
Rename align-cursors-left to align-selections-left 2018-06-29 00:56:37 +02:00
Maxim Baz
8a1b557b5f
Add test to ensure whitespaces are preserved after uncomment 2018-06-29 00:10:21 +02:00
Maxim Baz
5d689858df
Improve comment-line command 2018-06-28 23:47:48 +02:00
Maxime Coste
43b72770ec Fix wrong logic for moving filedescriptors leading to closed stdin
With this fix, tests can now use /dev/null as stdin.

Fixes #2165
2018-06-28 22:56:50 +10:00
Maxime Coste
fe57d90091 Merge remote-tracking branch 'lenormf/fix-kitty' 2018-06-28 22:42:59 +10:00
Maxim Baz
b2867a0197
Support .properties extension, fix coloring the equals sign 2018-06-28 00:08:44 +02:00
Olivier Perret
67655de947 Use a dedicated vm op for dot when match-newline is false 2018-06-24 12:41:50 +02:00
Olivier Perret
b5ee1db1c4 Use bit-flags for storing regex regex options 2018-06-24 12:41:50 +02:00