Commit Graph

5514 Commits

Author SHA1 Message Date
Maxime Coste
7b96d56996 Use the provided equal functor for prefix/suffix detection in diff
We were wrongly using the `==` operator.
2017-07-18 17:53:30 +02:00
Maxime Coste
bed8d9c48e Merge remote-tracking branch 'Delapouite/extra_word' 2017-07-18 17:30:33 +02:00
Maxime Coste
a547b630ef Merge remote-tracking branch 'lenormf/fix-man-expr-reserved-words' 2017-07-18 17:22:36 +02:00
Maxime Coste
9197dd393c More refactoring of the diff code in order to make it cleaner 2017-07-18 16:11:24 +02:00
Maxime Coste
50fec86749 Change diff Implementation to use end indices instead of length
Having absolute begin and relative lenght was a bit strange to
work with. Rename middle_snake to snake.
2017-07-18 12:14:52 +02:00
Frank LENORMAND
21847a5f85 rc man: Avoid undefined behavior on expr
Looking up the man page for `index` was failing on systems using
GNU/coreutils. The `:man` command matched whatever page it was given with
the `expr` utility. This tool behaves as expected when it follows strictly
the POSIX standard but the GNU implementation introduces additional commands
(including `index`), about which the standard states:

```
The use of string arguments length, substr, index, or match produces unspecified results.
```

As a result, parsing the man page number is now implemented with pure
shell expansions, to avoid triggering an undefined behavior when the topic
searched is one of the keywords above.
2017-07-17 21:24:41 +03:00
Maxime Coste
793c2ed9cf Slight style change 2017-07-17 19:29:57 +02:00
Maxime Coste
d90cd6de77 Refactor find_diff_rec and detect kept prefix/suffixes early
Certain cases, like diffing an empty buffer with a big buffer, were
very slow, now this should get better as we will directly detect the
matching eol at the end of both buffers, end then immediatly detect
we need to add the rest of the big buffer.

We still are too slow on some general diff when there is a lot of
differences.
2017-07-17 13:30:11 +02:00
Maxime Coste
388ada8142 Remove MirroredArray for diff implementation
We can index native arrays negatively, so just setup V1 and V2 to
point in the middle of the work arrays and remove the need for
creating MirroredArray.
2017-07-17 19:28:52 +09:00
Maxime Coste
da9794e272 Fix xmessage handling in assert.cc
The return value of the system call is not directly the exit value
of the process, but a status that needs to be inspected with some
macros.
2017-07-17 18:13:20 +09:00
Frank LENORMAND
8687222518 rc git: Don't force a highlighting format on commits 2017-07-17 08:36:47 +03:00
Maxime Coste
a9455bf132 Tolerate that the cursor might not be visible
Sometimes, like if the window is not high enough, we might not be
able to display any buffer lines, hence not have the cursor visible.

Fixes #1502
2017-07-16 13:12:17 +09:00
Maxime Coste
c625080ecf Merge remote-tracking branch 'lenormf/fix-formatter' 2017-07-16 13:08:04 +09:00
Maxime Coste
5eae7aacc7 Small code cleanup in diff implementation 2017-07-15 17:17:27 +09:00
Frank LENORMAND
74babc36b1 rc formatter: Don't force selection restoration
The `|` primitive now correctly restores selections, we don't need to
forcibly restore the main one after formatting anymore.
2017-07-14 11:21:48 +03:00
Maxime Coste
6e40e57ed4 Fix replacing reducing selections to their cursor
Broken by 8650c99f13
2017-07-14 16:16:43 +09:00
Maxime Coste
580eae0388 | now applies the diff of the modification instead of plain replace
Fixes #312
Fixes #1501
2017-07-14 16:16:40 +09: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
Maxime Coste
26cc8b3ee0 Fix undo handling in <a-o>/<a-O> 2017-07-13 08:24:55 +09:00
Delapouite
c30aac0080 Docs: update completions_extra_word_chars → extra_word_chars 2017-07-12 19:18:24 +02:00
Delapouite
287a20c485 Add main selection index in mode_info 2017-07-12 19:08:13 +02:00
Maxime Coste
7389e37b4b Small startup message formatting tweak 2017-07-13 00:31:17 +09:00
Maxime Coste
74076ef9b7 Alternative, and hopefully safer implementation of <a-o>/<a-O>
Fixes #1495
2017-07-11 22:35:42 +09:00
Maxime Coste
81b5de6fd8 Add <a-c> and <a-d> for changing/deleting without yanking
As asked for in #1175
2017-07-11 22:25:15 +09:00
Maxime Coste
42e5d95cd8 Preserve order of definition of mappings when listing them
Fixes #1479
Closes #1494
2017-07-11 09:51:56 +09:00
Maxime Coste
ebc1e054fc Merge remote-tracking branch 'Delapouite/last-command-reg' 2017-07-11 09:11:10 +09:00
Maxime Coste
b575067317 Add <a-o> and <a-O> to add lines below/above selections
Fixes #1480
2017-07-11 09:03:45 +09:00
Delapouite
0d2b303f62 Docs: add missing colon register (last entered command) 2017-07-10 22:05:21 +02:00
Maxime Coste
c38dc9a37b Merge remote-tracking branch 'Delapouite/alt-r' 2017-07-09 22:29:05 +09:00
Delapouite
f917402f89 Docs: add missing <a-R> key and fix info message 2017-07-09 12:00:28 +02:00
Maxime Coste
50e26a2bac Remove assert in String::String(Codepoint, ColumnCount)
codepoint_width is locale dependent, and we could end up with it
returning a different value depending on the locale. It is better
to return a string of the wrong column length than fail on assert
in this case as we cannot fix it anyway.

Fixes #1489
2017-07-09 11:03:04 +09:00
Maxime Coste
52c8dc9d09 Highliight git MERGE_MSG files as commit messages 2017-07-08 13:39:48 +09:00
Maxime Coste
822225cbbb Merge remote-tracking branch 'lenormf/fix-tupfile' 2017-07-08 13:39:22 +09:00
Maxime Coste
051054c812 Merge remote-tracking branch 'lenormf/fix-c-family' 2017-07-08 13:36:55 +09:00
Maxime Coste
7a28e4c5c0 Fix trailing whitespaces in README 2017-07-08 13:34:30 +09:00
Maxime Coste
dbba047a8a Merge remote-tracking branch 'Delapouite/prompt-idle' 2017-07-08 13:33:44 +09:00
Maxime Coste
ad1dad9d04 Merge remote-tracking branch 'Delapouite/extend' 2017-07-08 13:32:11 +09:00
Maxime Coste
8cad40a0c9 Merge remote-tracking branch 'Delapouite/stars-less' 2017-07-08 13:31:17 +09:00
Maxime Coste
b51d19bfaa Formatting fixes 2017-07-07 13:59:53 +09:00
Maxime Coste
6604aa66f7 Treat non printable characters as zero-width instead of -1 width
This fix a bug when opening a file where a line has a lot of unprintable
chars (like a binary file) which was confusing Kakoune into considering
that the line length in column was negative.
2017-07-07 10:57:32 +09:00
Delapouite
9254363673 Make register and completion autoinfo lists uniform with all the other ones 2017-07-06 18:47:02 +02:00
Delapouite
b3f2a7e46e Refine info titles to distinguish f/t (select) and F/T (extend) 2017-07-05 20:23:02 +02:00
Delapouite
8ed29dbd7a Docs: add missing PromptIdle hook mentions 2017-07-05 13:45:45 +02:00
Frank LENORMAND
50b635ce2d rc c-family: Add a hook to the insert group 2017-06-29 13:29:48 +03:00
Frank LENORMAND
a2be15801f rc tupfile: Fix the keywords regex 2017-06-29 13:13:01 +03:00
Frank LENORMAND
e1e3cfaf45 contrib Tupfile: Adapt to upstream changes 2017-06-29 13:12:49 +03:00
Maxime Coste
620e718087 Formatting tweak 2017-06-29 09:31:02 +01:00
Maxime Coste
eb2984807c Remove some dead code 2017-06-29 07:43:20 +01:00
Maxime Coste
e95fab0e7a Code style tweak 2017-06-29 07:36:07 +01:00