Ivan Tham
74e16a0623
Fix rust comment test
2020-07-09 00:21:11 +08:00
Ivan Tham
eac5986323
Fix rust doctest non-hidden macro highlight
2020-07-09 00:21:11 +08:00
Maxime Coste
8abf18209e
Fix selections getting unsorted on scroll
...
Fixes #3478
2020-07-05 10:13:57 +10:00
Maxime Coste
74e3e5efd3
Drain ui-out to avoid deadlock with small pipe buffers
2020-06-10 09:26:32 +10:00
Maxime Coste
66f15cf4ad
Fix select wiping captures
...
It turns out `v = std::move(v)` with v a std::vector is not a no-op,
it clears the vector.
2020-06-07 14:12:54 +10:00
Maxime Coste
d32d185d48
Merge remote-tracking branch 'pickfire/rust-doctests'
2020-06-02 18:44:53 +10:00
Maxime Coste
d43b6799cf
Merge remote-tracking branch 'pickfire/rust-dedent'
2020-06-02 18:40:09 +10:00
Ivan Tham
12cafe3ed4
Rust dedent { after where clause
2020-06-02 00:26:47 +08:00
Ivan Tham
b1beea8638
Rust indent after standalone where
2020-05-31 18:13:04 +08:00
Ivan Tham
de4b7f3864
Rust indent block comment
2020-05-31 18:07:17 +08:00
Ivan Tham
4ccb5fd315
Highlight doc tests in rust
...
Feels a big laggy when system overloaded
2020-05-31 11:47:47 +08:00
Ivan Tham
dd3257e3f2
Rust take indentation before comment to next line
2020-05-30 10:54:55 +08:00
Ivan Tham
7c791f130c
Handle dedent in rust syntax
...
Naively handle dedent after , and ; which works most of the cases but
does not work with multi level dedent.
2020-05-30 10:54:55 +08:00
Maxime Coste
ec4980df34
Merge commit 'krobelus/05-highlight-replace-ranges-crash^'
2020-05-30 09:18:35 +10:00
Maxime Coste
08e0b663f7
Fix unintended interpretation of ranges length syntax
...
Ranges specified with a +<length> were inconsistent, with +0 meaning
an empty range, while +1 meant a two character long range (first character
+ the following one). Change that to mean a single character.
Fixes #3479
2020-05-29 12:25:57 +10:00
Johannes Altmanninger
61f474fd9d
Fix typo in readme
2020-05-28 21:41:21 +02:00
Maxime Coste
109abbeed4
Fix invalid regions with begin > end being generated
...
Fixes #3495
2020-05-28 20:58:46 +10:00
Johannes Altmanninger
fc63eef695
Fix crash when selecting previous paragraph at buffer begin
...
Fixes #3489
When there are multiple empty lines between a paragraph and the cursor
(C in the example below), <a-[>p skips over one of them. Prevent the
check for the extra newline from going out of bounds.
```
a paragraph
C after <a-[>p, the first two lines will be selected
```
2020-05-17 14:15:48 +02:00
Maxime Coste
2104af0771
Fix select_sentence going past the end of the buffer
...
Fixes #3472
2020-05-10 15:13:15 +10:00
Maxime Coste
954373d3cf
Support multi-line replace-ranges
...
This likely has lots of rough edges, but should be an initial proof
of concept to support folding.
2020-04-27 17:39:21 +10:00
Maxime Coste
65620fb830
Display all failing ui_out in tests instead of just the first one
2020-04-27 17:39:21 +10:00
Maxime Coste
cb119251bc
Do not replace partially selected ranges in replace-ranges highlighter
...
Partially selected ranges should not be replaced to make it possible
to see what is actually selected.
2020-04-27 17:39:21 +10:00
Maxime Coste
0fdfbdfd15
Fix highlighting empty ranges at end of line and begin of line
2020-04-27 14:31:26 +10:00
Maxime Coste
a33b938652
Fix issue with select object and empty matches
2020-04-21 13:21:35 +10:00
Maxime Coste
952aa0ed0a
Drop trailing EOL in test commands
2020-04-13 13:36:29 +10:00
Maxime Coste
562ee6143a
Parse ascii newline/tab/escape as special keys instead of control keys
...
Fixes #3439
2020-04-13 12:44:15 +10:00
Maxime Coste
0282cc022e
Use %file in the test run script instead of %sh
2020-03-14 13:52:04 +11:00
Maxime Coste
7545fa58ae
Fix invalid access to deleted line when updating insert completion
...
The computation of the completion end position was taking place too
early, before we checked if the buffer did get modified.
Fixes #3349
2020-03-14 13:49:52 +11:00
Maxime Coste
31caae20eb
Allow reading from fifo in readonly buffers
...
readonly is supposed to prevent the user from modifying the buffer
and it can be useful to generate a readonly fifo buffer.
Fixes #3398
2020-03-14 12:58:22 +11:00
Maxime Coste
21dc5284b2
Fix use of non-posix \x printf escape
2020-03-13 09:33:19 +11:00
Maxime Coste
149da2064d
Handle invalid utf8 in command line a bit better
...
Reduce the amount of decoding by working directly on
bytes.
Fixes #3388
2020-03-13 08:02:58 +11:00
Maxime Coste
0a66eb9c47
Expand env vars as list of strings
...
This makes it possible to do :select `%val{selections_decs}` and to
correctly combine $kak_quoted with those.
2020-03-02 20:53:28 +11:00
Maxime Coste
f808539dea
Update inserted range when generating InsertCompletionHide hook param
...
The buffer might have been mutated in the mean time.
Fixes #3270
2020-01-08 20:33:26 +11:00
Maxime Coste
b37638dda4
Split RegexHighlighters matches per requested buffer ranges
...
When a region calls the regex highlighter, it is incorrect to share
the regex cache as it means we can get matches that span multiple
regions.
Fixes #3041
2020-01-05 18:58:32 +11:00
Maxime Coste
7470b22c97
Merge remote-tracking branch 'eraserhd/lisp-nested-brackets'
2020-01-05 09:55:37 +11:00
Jason Felice
0ed3bd662c
{clojure,lisp}.kak: handle doubled brackets
2020-01-03 15:14:56 -05:00
Maxime Coste
8b6ed26e8c
Few style changes on history exposition code
2020-01-02 22:36:26 +11:00
Maxime Coste
43dc494e5c
Merge remote-tracking branch 'eraserhd/history-api'
2020-01-02 21:13:43 +11:00
Jason Felice
b03b51d27a
Add 'history' and 'uncommitted_modifications' expansions
2020-01-01 19:47:29 -05:00
Maxime Coste
a17a0345cf
Fix replacing at begining of buffer
...
Fixes #3275
2019-12-31 12:49:24 +11:00
Maxime Coste
b68490ef11
Cleanup replaced range selection logic
...
Do not access Buffer::m_changes to find the inserted range, return
it directly from Buffer::insert and Buffer::replace. This fixes a
wrong behaviour where replacing at eof would lose the selected end
of line (as the implementation does not actually replace that end
of line)
2019-12-18 11:36:17 +11:00
Tim Allen
c7356b363e
test: number-lines highlighter now reserves 2 digits by default.
...
Fixes regression caused by #3261 .
2019-12-17 00:57:28 +11:00
Maxime Coste
7b3ab23780
Add a regression test for #3219 , which does not seem to fail
2019-11-24 18:11:29 +11:00
Maxime Coste
8528dcd621
Fix test/run ui_out diff display
2019-11-24 18:11:29 +11:00
Maxime Coste
22d9ffa63a
Fix crash when deleting buffers in a BufClose hook
2019-11-22 20:29:55 +11:00
Maxime Coste
4d7ea276c4
Use fullwidth latin character in test to try to fix travis
2019-11-18 23:00:19 +11:00
Maxime Coste
25429a905b
Try to fix select-display-column test
2019-11-17 10:52:25 +11:00
Maxime Coste
f9d3b0f671
Add select display columns test
2019-11-13 20:13:49 +11:00
Jason Felice
e712138ebd
Fix test suite freeze
...
The issue is that the `test/regression/2056-assert-on-small-window`
sent JSON UI input without waiting for for the JSON UI to be
initialized.
Closes #3196
2019-11-12 09:39:37 -05:00
Maxime Coste
7a8f57f97b
Add support for a -codepoint switch to the select command
2019-11-12 21:21:24 +11:00
Jason Felice
5fae16faef
Implement %val{selections_char_desc}
...
Fixes #3194
2019-11-12 20:54:32 +11:00
Jan-Jaap Korpershoek
fcc8ed5df3
[html] Fix indentation when entering a newline while in the middle of a tag
...
Example:
```
<tag>|</tag>
```
Then press enter
Old behaviour:
```
<tag>
</tag>
```
New behaviour:
```
<tag>
</tag>
```
I also added a test for it
2019-11-03 12:25:02 +01:00
Jason Felice
e888f4341c
test: Allow expect-style UI tests, testing any var
2019-10-13 14:57:24 -04:00
Jason Felice
2b1ca43328
test: Clear socket correctly when XDG_RUNTIME_DIR is set
2019-10-13 14:56:55 -04:00
Maxime Coste
f1047181cb
Fallback to wrapping in between 'word' when 'WORD' fails
...
First try to break at a whitespace, if that fails (likely because
that last WORD is too long for the wrapping width), then try to
wrap at a 'word' boundary (on a non alphanumeric character).
Fixes #3048
2019-08-12 18:40:56 +10:00
Maxime Coste
1c6aa9baed
Fix bug in WrapHighlighter::do_compute_display_setup
...
Additional lines were not pulled correctly when a line was removed
due to its wrapping hiding the cursor.
Fixes #2999
2019-08-05 20:16:59 +10:00
Maxime Coste
e840140b38
Add indent tests for brace after else indent
2019-07-25 17:27:08 +10:00
Maxime Coste
e42c81c8eb
Ensure current context switches away from buffer on delete-buffer
...
Fixes #3025
2019-07-22 20:26:39 +10:00
Maxime Coste
be3d0f8b33
Filter non-extra_word_chars completion candidates using Codepoints
...
Fixes #3010
2019-07-09 19:36:57 +10:00
Maxime Coste
9363f98f5b
Fix indent/sh/deindent-after-esac test case
2019-07-01 22:04:04 +10:00
Maxime Coste
5c219cc743
Merge remote-tracking branch 'sjjf/sh_indent_v2'
2019-07-01 22:00:31 +10:00
Simon Fowler
c5dd013235
Add tests.
...
Probably overkill, but at least this is comprehensive . . .
2019-06-30 12:57:59 +10:00
Maxime Coste
e4d6bff5ec
Fix quoting of tuple options
...
Fixes #2990
2019-06-27 22:42:12 +10:00
Maxime Coste
c9858bb6d1
Fix tests with new opt-in quoting
2019-06-23 12:04:21 +10:00
Dmitry Matveyev
01159a9e72
Add support for autoformatting after do keyword in Ruby
2019-06-12 09:03:24 +03:00
Maxime Coste
1ebea85e6f
Do not merge selections on backspace in insert mode
...
Fixes #2861
2019-05-29 23:12:04 +10:00
Maxime Coste
91386a535c
Support discarding selections in exec/eval -itersel
...
Only fail if all selections are discarded.
Fixes #2841
2019-05-13 17:34:43 +10:00
Maxime Coste
229768841b
Fix parsing of faces with a base but no attributes
2019-04-28 00:35:52 +01:00
Maxime Coste
1c8f1cbc2f
Fix wrapping of words with 'wrap col - indent < word len < wrap col'
...
Add a test case for those, and refactor bits of the wrap highlighter.
This explains part of the needed complexity in #2820 .
2019-04-24 11:40:57 +01:00
Maxime Coste
4e24ba86cc
Change faces alias to be a base that can be modified
...
Using <fg>,<bg>+<attr>@<base> will apply the given fg color,
bg color and attributes on top of base dynamically. Simply giving
<base> is a shorthand for default,default@<base>.
Inspired by the discussion in #2862
2019-04-23 23:15:23 +01:00
Alex Leferry 2
d1ae1cf971
Replace egrep with grep
2019-04-17 14:49:59 +02:00
Maxime Coste
6b79c1e000
Support named captures in hooks
...
Fixes #2857
2019-04-15 23:56:49 +10:00
Maxime Coste
41f19f8dc9
Add support for %file{...} expansions
...
This should make the use case exposed in #2836 implementable.
2019-04-07 09:43:40 +10:00
Maxime Coste
744778be30
Add a -to-file <filename> switch to the echo command
...
As discussed in #2836
2019-04-07 09:32:17 +10:00
Maxime Coste
baae0c899b
Add -timestamp switch support to the select command
...
Fixes #2829
2019-04-01 22:11:18 +11:00
Grant Moyer
d8e4c6801f
Fix autoindent issues with paren in literal
2019-03-31 00:07:12 -04:00
Maxime Coste
2c283d46a5
Merge remote-tracking branch 'GrantMoyer/rust-block-indent'
2019-03-29 20:12:34 +11:00
Grant Moyer
71c5077bec
Block indent on newline when previous line is '(stuff' and move 'stuff' to own line
...
Also, align closing paren on own line with opening paren
2019-03-28 13:17:57 -04:00
Grant Moyer
61840c8b11
Preserve tabs during autoindent and alignment with '(' for c-family languages
...
Also add test for tab preservation during c-family autoindentation, and correct alignment of '}' with opening of block in cases of wrap between '(' and ')' in c-family languages
2019-03-28 13:08:02 -04:00
Maxime Coste
b531bab1ce
Add support for -shell-script-* completion in :prompt
...
Fixes #2754
2019-03-24 19:28:46 +11:00
Alex Leferry 2
c0dccdd90d
Add categories in rc/
...
Closes #2783
2019-03-21 01:06:16 +01:00
Alex Leferry 2
25630f4c91
Refactor colorize function away from the test script
2019-03-12 23:22:03 +01:00
Maxime Coste
4843149b6a
Make error description available as "%val{error}" during catch blocks
...
Fixes #2761
2019-03-05 20:46:23 +11:00
Maxime Coste
f9d421130f
Fix use of invalidated iterators in highlight_range
...
Fixes #2755
2019-03-05 20:31:40 +11:00
Maxime Coste
bb2aa86388
Merge remote-tracking branch 'stevenyvr987/update-test/README.asciidoc'
2019-02-17 11:21:41 +11:00
Maxime Coste
a61b6d7649
Add a test case for WinDisplay segfault
...
Fixes #2737
2019-02-17 11:21:26 +11:00
Dimitri Merejkowsky
0b9164e7bc
Fix wording used in test runner
2019-02-17 11:21:26 +11:00
Steven Chan
fe0c357b66
Include more details in test/README.asciidoc
...
Define the role and content of each test file.
Further changes to test/README.asciidoc
2019-02-15 11:45:06 -08:00
Steven Chan
56bc1750cc
Include more details in test/README.asciidoc
...
Define the role and content of each test file.
2019-02-12 13:00:35 -08:00
Justin Frank
58c15b0240
Indent and deindent c-family single line else properly
2019-02-08 15:16:29 -08:00
Maxime Coste
5c0175d90a
Remove peephole regex optimization pass
...
The current implementation is wrong as it crosses basic blocks
boundaries. Doing basic block decomposition of regex is probably
a tad too complex for this single optimization.
Fixes #2711
2019-02-04 22:10:19 +11:00
Maxime Coste
370d10ccc7
Always select inserted text after piping
...
Relying on general selection update code is error prone due to
diffing.
Fixes #2394
2019-01-23 20:14:08 +11:00
Maxime Coste
0600724a8b
Improve some corner cases in c-family auto-indenting
2019-01-14 23:42:57 +11:00
Maxime Coste
328c497be2
Add support for named captures to the regex impl and regex highlighter
...
ECMAScript is adding support for it, and it is a pretty isolated
change to do.
Fixes #2293
2019-01-03 22:55:50 +11:00
Maxime Coste
0e1e0fc57b
Improve deindent behaviour with mixed indent
2018-12-13 17:35:16 +11:00
Maxime Coste
1875ff51a0
Gather the list of hooks to run before running the parent
...
This will prevent hooks added by the parent hook manager to be
gathered, as was decided during the discussion for #2603
2018-12-09 10:07:40 +11:00
Maxime Coste
16908bf091
Fix hooks triggering on unset-option even if parent has same value
2018-11-28 21:45:40 +11:00
Maxime Coste
c6d6060502
Add a test case for dropping full whitespace selections on trim
2018-11-27 21:05:35 +11:00
Maxime Coste
1553d91d27
Make '_' the default extra_word_chars, and remove built-in support
...
Fixes #2599
2018-11-27 18:16:21 +11:00
Maxime Coste
31d3cef093
Merge remote-tracking branch 'lenormf/rename-auto_complete'
2018-11-25 23:01:02 +11:00
Maxime Coste
b9ca3ee6dc
Fix column highlighter adding display atoms past the window width
2018-11-14 17:47:11 +11:00
Delapouite
c08ec08513
test: add end-extending-parent/braces for }B}B - Ref #2479
2018-10-27 13:49:45 -04:00
Maxime Coste
a383ce3045
Fix LineRangeSet::udpate not updating some traling ranges correctly
...
Fixes #2499
2018-10-21 11:49:30 +11:00
Maxime Coste
da13b5f814
Fix handling of capture matching in region highlighter
...
Also extend the highlight/regions test to validate that.
Thanks to lenormf for reviewing my change and finding this bug.
2018-10-15 21:21:12 +11:00
Maxime Coste
ed84a2d60c
Buffer begin and end are not end-of-words
...
Buffer begin never has a word character before, and end is always
preceeded by an end-of-line.
Fixes #2420
2018-10-08 12:40:52 +11:00
Justin Frank
ab6bc41358
Added shell command completion support to define-command and prompt
...
This commit also introduces a regression in that I decided that the best way to
avoid overly long and confusing names was to rename the current shell-*
switches to script-*, and have the shell command completion be
shell-completion.
renamed script-{completion,candidates} to shell-script-*
Updated docs with new switch names
Added -shell-completion switch to x11-repl and kitty-repl
2018-10-03 09:46:31 -07:00
Olivier Perret
93f913705a
Misc fixes
2018-09-24 09:54:21 +02:00
Maxime Coste
cb8b882878
Fix broken test after change in cursor faces
2018-09-24 08:15:12 +10:00
Maxime Coste
1631a7d8d9
Replace the Exclusive
face attribute with Final
...
Final is more granular, it consists of FinalFg (f), FinalBg (g)
and FinalAttr (a) which control if a face's fg, bg, or attributes
fully overwrite the previous face (instead of merging) and if
following faces apply on top of this face or not.
Fixes #2388 if the Whitespace face has the FinalFg flag.
2018-09-23 23:27:14 +10:00
Maxime Coste
c8fd1e1cf6
Merge remote-tracking branch 'laelath/c-indent-edits'
2018-09-13 20:42:04 +10:00
Justin Frank
de839d14c4
added test for deindentation
2018-09-12 12:25:36 -07:00
Maxime Coste
0c3d9ccd20
Change remove-hooks to take a regular expression
...
All hooks whose group match this regex will be removed.
Fixes #2380 .
2018-09-12 21:26:21 +10:00
Maxime Coste
8536adc5ac
Merge remote-tracking branch 'eraserhd/2367-surround-with-tight-nesting'
2018-09-12 20:57:59 +10:00
Maxime Coste
d3be78cca2
Only commit undo groups when buffer was modified
...
This fixes an interaction with kak-lsp that would trigger undo group
commit when setting a buffer option value.
2018-09-12 20:02:57 +10:00
Jason Felice
83244af106
Don't skip opening brace twice when finding closing
...
Fixes #2367
Fixes #2129
2018-09-09 10:15:41 -04:00
Maxime Coste
bd34d007d7
Fix tests with new shell escaping syntax
2018-08-29 12:36:40 +10:00
Maxime Coste
68aba9e353
Use shell specific quoting for env vars
...
Add a test case to validate roundtrips between Kakoune and the
shell.
2018-08-29 07:53:59 +10:00
Maxime Coste
293610a432
Add a test case for -once hooks and code style tweaks
2018-08-16 21:09:51 +10:00
Frank LENORMAND
0b8899d1d4
src: Rename auto_complete
to autocomplete
...
Removing the underscore seems to make the option name more
in line with the others (even though some do use a separator,
e.g. `disabled_hooks`).
2018-07-19 18:57:33 +03:00
Maxime Coste
d23ac09fc1
Add support for <a-;> in prompt mode
...
Fixes #2096
Closes #2060
2018-07-15 11:17:16 +10:00
Maxime Coste
bde726d034
Change autoshowcompl to auto_complete with insert|prompt possible values
2018-07-15 11:10:32 +10:00
Maxime Coste
79ec8d0010
Rename highlighters that used an underscore to use a dash
...
For example `show_matching` is now `show-matching`.
2018-07-08 19:14:15 +10:00
Maxime Coste
f0b3925ba7
Merge remote-tracking branch 'maximbaz/improve-comment-line'
2018-07-07 09:39:46 +10:00
Maxime Coste
63d4c8c311
Change a
on end of line behaviour to be consistent
...
`a` will just jump on next line, `a` on last end of line opens a new
line beneath it.
Fixes #1164
2018-07-05 08:00:14 +10:00
Maxime Coste
2e0e206951
Make recurse regex opt-in with a -recurse switch instead of opt-out
2018-07-05 07:54:28 +10:00
Maxime Coste
63d7984b89
Fix bug in recursive region highlighting
2018-07-05 07:54:28 +10:00
Maxime Coste
f61bcef469
Fix tests and required scripts to get back to green make test
2018-07-05 07:54:28 +10:00
Maxime Coste
124a5d4905
Tolerate restoring invalid coordinates from register
...
Clamp those selection after updating them to the current timestamp
Fixes #2078
2018-07-05 07:54:28 +10:00
Maxime Coste
183f32803b
Fix selection save/restore from registers post selection list syntax change
2018-07-05 07:54:28 +10:00
Maxime Coste
9387abed81
tests: Update selections files to match the new selection list syntax
2018-07-05 07:54:28 +10:00
Maxime Coste
55f857dd2b
Fix extra-word-chars test post list option refactoring
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
Maxim Baz
ba547ea4dd
Make tests a bit more interesting
2018-07-03 22:32:04 +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
dahlbaek
28637cec9e
Use egrep instead of grep for ERE
...
Some implementations of grep do not support extended regular
expressions (ERE). Using egrep instead seems to be more portable.
2018-06-22 20:35:36 +02:00
Maxime Coste
667777521b
Refactor the way main selection is determined after rotating contents
...
Fixes #2133
2018-06-21 08:07:17 +10:00
Maxime Coste
6dca67c674
Fix two <s-tab> requiered to access last completion in prompt
...
A single <s-tab> should be enough.
2018-06-19 07:40:52 +10:00
Maxime Coste
9b89652b0b
Fix potential assert on itersel selection restoration
...
We cannot guarantee after an itersel that selections are going to
still be in ascending order, but we were calling a SelectionList
constructor that was assuming this was the case.
2018-05-24 08:08:51 +10:00
Maxime Coste
878d2a4bdb
Add regression test for crash on BufSetOption hook
2018-05-21 20:36:25 +10:00
Maxime Coste
8c6af54db3
c-family.kak: Fix comment line continuation behaviour
...
Fixes #2043
2018-05-19 14:15:16 +10:00
Maxime Coste
c9a8658671
Fix assert with window small enough so that no part of buffer is displayed
...
Fixes #2056
2018-05-19 14:15:16 +10:00
Maxime Coste
a64afd7f1a
test/run: Support a "ui-in" file containing json-rpc messages
...
With this "ui-in", tests can execute json-rpc commands from the UI
at startup to set a specific UI state.
2018-05-19 14:15:16 +10:00
Maxime Coste
851494a374
test/run: Rename "display" expected ui output file as "ui-out"
2018-05-19 14:15:16 +10:00
Maxime Coste
148d6c205b
Fix wrong behaviour in select surrounding
...
Fixes #2030
2018-05-07 22:17:57 +10:00
Maxime Coste
e4f90e5ed2
Fix tests after changes to json_ui output
2018-04-29 23:06:24 +10:00
Delapouite
746b9acb96
Change client default name: "unnamed0" → "client0"
2018-04-23 11:42:11 +02:00
Maxime Coste
567c82840a
ruby.kak: Refactor end autoinsertion logic to be more robust
...
Fixes the bug described by PR #1994
2018-04-14 12:47:42 +10:00
Nate Clark
27604359d4
Add test for buggy ruby method newline
...
Currently, inserting a newline after a ruby method will incorrectly
cause the following line to repeat the method header. This commit
adds a test case to illustrate the bug.
2018-04-10 18:30:12 -05:00
Maxime Coste
1f6c2b87ff
Support count in <a-s> to split on groups of n lines
...
Fixes #1966
2018-03-27 22:33:58 +11:00
Maxime Coste
3d3a37a80c
Fix 'O' not putting the cursor on the correct line
2018-03-27 07:28:25 +11:00
Maxime Coste
ec7f3738ee
Move rotate selection and rotate selection contents to ) and <a-)>
...
Backward rotation are supported with (.
Fixes #1210
2018-03-25 11:39:26 +11:00
Maxime Coste
59e9108812
indent selector: When line is empty, find indent from surrounding lines
...
Look for the first non empty line preceeding the current line, or
if not found, the first non empty line following it.
Fixes #1904
2018-03-25 10:25:56 +11:00
Maxime Coste
ac91a79b12
Fix implementation of real_path to handle non-existing directories in /
...
Fixes #1937
2018-03-18 23:23:00 +11:00
Maxime Coste
7ba4ef897b
Fix crash on expanding command line strings
2018-03-18 04:58:15 +11:00
Maxime Coste
e66073bc94
Detect infinit recursion in reference highlighting
...
Reference highlighters allow for potential mutual recursion between
highlighters. This is usually fine, but if the recursion happens on
the same buffer range, it means we will recurse infinitely.
Fixes #1920
2018-03-11 11:44:10 +11:00
Maxime Coste
4584ecac77
Move WORD text object to <a-w>
...
It improves consistency and it looked like there was support for that
change on github.
Fixes #1861
2018-03-10 00:25:19 +11:00
Maxime Coste
31a5649c65
Add a regression test for issue #1902
2018-03-05 05:48:20 +11:00
Maxime Coste
65258934d3
lua.kak: Rework 'end' auto insertion logic
...
Fixes #1525
2018-03-04 10:36:32 +11:00
Maxime Coste
2fd42fe5fc
Insert: Do not move end of line on open line (o/O)
...
Change the logic of open line commands so that if a selection lies
on the end of line character of the line from which we open a new
line, that selection does not move.
If we have two clients, A and B, with B's cursor on the eol character
of line L, and A hits `o` while on line L, B's cursor should stay
on the same (logical) line. Previous behaviour would make B's cursor
jump on the newly inserted line.
2018-03-04 10:32:21 +11:00
Maxime Coste
850f561096
Merge remote-tracking branch 'alyssais/1525-test_case'
2018-03-04 01:44:08 +11:00
Alyssa Ross
79af68843e
Add Ruby indentation test
...
See https://github.com/mawww/kakoune/issues/1525#issuecomment-324571751 .
2018-03-02 13:13:19 +00:00
Delapouite
c4eb4438d2
Remove <scope> from user-modes commands
2018-03-02 09:28:27 +01:00
Delapouite
a6a1c34288
Add -lock switch to enter-user-mode command
2018-02-27 19:55:00 +01:00
Maxime Coste
67424aae1e
Remove avoidance of end of lines
...
Various places in Kakoune code used to modify selections so that
cursors would not lie on an end of line. Remove those to increase
Kakoune's consistency and simplicity.
Now that end of lines are highlighted separately, they should not
be handled specially in most commands.
2018-02-25 00:05:05 +11:00
Maxime Coste
6a6e71dc0f
Highlight cursors differently when they lie on an end of line
...
When on an end of line, certain behaviours can be surprising, for
example delete will join the following line (which makes sense, and
is consistent, but hard to predict if we do not know the cursor is
on and end of line).
As Kakoune is moving more and more towards treating end of lines
as any other character, making it clear when the cursor lies on
them seems like a good way to reduce surprise.
2018-02-24 21:32:01 +11:00
Maxime Coste
a0de41d165
goto last change: do not try to avoid end of lines
...
Avoiding end of line is a behaviour we avoid (pun intended) more and more
in Kakoune source code, now that end of lines are regularly selected, it
makes no sense to just to next line when last modification lies on an EOL
(and it probably did not make much sense back when that code was written).
2018-02-24 21:09:09 +11:00
Maxime Coste
cda1fdafe2
test: fix run script after changes jump list behaviour
...
source the rc file *after* selecting the target text to ensure
eventual hooks will not interfere.
2018-02-24 20:59:31 +11:00
Maxime Coste
99d1fee44c
Merge remote-tracking branch 'Delapouite/trim'
2018-02-22 22:06:27 +11:00
Maxime Coste
f88195d2d9
Merge remote-tracking branch 'Delapouite/user-mode'
2018-02-18 20:20:35 +11:00
Delapouite
fccfc76e89
Add trim_selections primitive
2018-02-13 14:35:10 +01:00
Delapouite
6b447a0ecb
Add declare-user-mode / enter-user-mode commands
2018-02-12 14:19:58 +01:00
Maxime Coste
fbe68f375e
test: fix run script use of non standard \+
in sed regex
2018-02-07 19:38:13 +11:00
Maxime Coste
e2c1d44a7f
Fix parsing of percent tokens with unicode separators
2018-02-06 20:29:08 +11:00
Maxime Coste
05f57ace07
CommandManager: parse command lines as utf8 instead of ascii
...
Fixes #1829
2018-02-04 09:21:15 +11:00
Maxime Coste
9bf1f202d5
Add unit tests for copy selections commands
2018-01-24 10:45:12 +11:00
Maxime Coste
cafecda230
Window: avoid positionning window on a negative column
...
Fixes #1741
2017-12-15 08:17:35 +11:00
Maxime Coste
1a38849086
c-family.kak: indent after parenthesis at end of line
2017-12-03 17:47:44 +08:00
Maxime Coste
c8f5935c48
test/: Add more tests for object selection corner cases
2017-12-03 17:12:33 +08:00
Maxime Coste
1371148588
test: fix support for '(' in initial selected text
2017-12-03 17:12:33 +08:00
Maxime Coste
380ff553b5
Wrap: try to rework and simplify the algorithms further
...
Fixes #1731
2017-11-28 19:04:21 +08:00
Delapouite
a071e5b226
Add count support to jumps (<c-o> and <c-i>). Add jumps tests
2017-11-13 08:38:43 +01:00
Maxime Coste
fc88046c9c
Add test case for replaying insert with normal mode commands
2017-11-08 14:49:19 +08:00
Maxime Coste
0942cd5084
InputHandler: handle of last insert keys happening in nested modes
...
Move recording of keys to the input handler itself instead of the
Insert mode so that eventual nested modes (potentially introduced
by <a-;> will get their keys recorded as well).
Fixes #1680
2017-11-08 14:39:52 +08:00
Maxime Coste
04993de687
Fix pipe logic in the case where the selections were accessed in the cmdline
...
When using an env var that needed the selections in the pipe command line,
say $kak_selection, the selection update code would run, modifying the
selections to adapt to eventual changes. But the rest of the pipe logic
was assuming the selections would not change, leading to bugs.
2017-11-08 00:02:49 +08:00
Maxime Coste
2b993b7c4b
Add an indent test for html closing tag
2017-11-04 12:45:27 +08:00
Maxime Coste
d49555fc75
Move highlighters into Scopes
...
That means we can now have highlighters active at global, buffer, and
window scope. The add-highlighter and remove-highlighter syntax changed
to take the parent path (scope/group/...) as a mandatory argument,
superseeding the previous -group switch.
2017-10-28 13:43:04 +08:00
Maxime Coste
78530b82be
Add an indentation test for braces after if
2017-10-25 10:27:39 +08:00
Maxime Coste
89f016d871
Refactor column highlighter to make it more robust
...
Support arbitrary orders for column highlighters (it was previously
failing when column highlighters were not applied in column order).
Fix show_matching tab handling at the same time (horizontal scrolling,
tab characters and show_matching were behaving badly).
Window highlighting now runs user highlighters, then built-ins for each
phases, instead of running all phases for user highlighters, then all
phases for built-ins.
We now consider unprintable character to be 1-column width as we know
we will display them as "�".
Fixes #1615
Fixes #1023
2017-10-12 14:46:15 +08:00
Maxime Coste
0da5cabbfe
Distinguish between modes being disabled temporarily and definitely
...
That way, insert mode knows when it can restore selections/avoid eol
instead of (wrongly) doing it in the destructor that ends up running
unpredictibly (as the mode is kept alive during its on_key call, even
though it can happen that it is not the active mode anymore at the end
of that call).
Fixes #1580
2017-09-28 11:11:29 +08:00
Maxime Coste
e53cb356a7
Fix regression test #1435 after a change in the insert modeline format
2017-09-28 10:44:54 +08:00
Maxime Coste
d5c10472f6
Avoid wrapping between punctuation and word
...
Fixes #1550
2017-09-18 09:52:24 +09:00
Maxime Coste
609a8ee8c7
Change selection extension code to be simpler
...
Selection extension now just keeps the anchor in place insead of
trying to be smart depending on the direction of selections.
2017-08-18 08:49:37 +07:00
Maxime Coste
fc64369f9d
Purge history on buffer reload when NoUndo flag is on
...
We were preserving the history in that case, so on fifo buffers
(that set the NoUndo flag until the fifo is closed), we still had
the history from the "previous life" of the buffer, leading crashes
when trying to apply it.
Fixes #1518
2017-08-04 11:39:28 +07:00
Tim Allen
e640e6d859
Consecutive markdown list bullets are not a valid list prefix.
...
Previously, if you opened a new line after an underlined heading (what
the CommonMark spec calls a "Setext heading") or inserted a newline into
a line that started with `**strong emphasis**` the Markdown autoindent
hook would assume the leading symbols were list bullets and paste them
at the beginning of the new line.
However, the CommonMark specification says that list bullets must be
followed by at least one horizontal whitespace character, so Setext
heading underlines and strong emphasis are not valid list bullets and
should not be matched by the autoindent pattern.
This commit changes the regex that selects the pastable prefix of the
previous line so that it must match either:
- One or more `>` characters with optional whitespace between them
(a blockquote prefix), optionally followed by a list bullet; or
- An optional blockquote prefix and a list bullet
Since we don't strictly need either the blockquote prefix nor the list
bullet, we could concievably just make both optional... but for lines
without either, the regex would find a zero-length match, and for the
purposes of copy/paste Kakoune treats that as a one-character match.
Therefore, the regex is written to fail if neither pattern is found.
2017-08-01 20:36:40 +10:00
Tim Allen
8a6df93dc6
More tests for markdown autoindent.
...
All these tests pass with the current implementation.
2017-08-01 19:53:01 +10:00
Maxime Coste
bb9dd14a09
Check final cursor position in indent/c-family/indent-if-body test
2017-07-29 10:46:41 +07:00
Maxime Coste
8650c99f13
Fix assertion when replacing with empty strings
...
Replacing with empty strings is essentially a deletion, which means
it can end up push some selections out of the buffer (imagine 3 a
2 empty line buffer, and deleting the second one). We are fixing
the selections in SelectionList::erase, but we were not doing that
in SelectionList::insert.
Fixes #1504
2017-07-14 13:08:29 +09:00
Maxime Coste
53f5b3d709
Fix an assert in compute modified ranges when merging single char ranges
...
Due to the way Selection::min/max worked, we were creating backward
selections, with cursor < anchor, which was triggering an assert when
trying to move cursor back one char when it was already on the first
char of the buffer.
2017-07-14 12:42:43 +09:00