0
0
mirror of https://github.com/vim/vim.git synced 2025-10-21 08:24:06 -04:00
Commit Graph

143 Commits

Author SHA1 Message Date
Hirohito Higashi
723f34f3de patch 9.1.1832: if_perl: contains references to legacy if_perlsfio
Problem:  if_perl: contains references to legacy if_perlsfio.{c,pro} and
          USE_SFIO
Solution: Remove those references (Hirohito Higashi)

fixes: #18496
closes: #18500

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-10-06 17:59:10 +00:00
Christian Brabandt
e1a435c508 patch 9.1.1654: build failure when FEAT_DIFF is not defined
Problem:  build failure when FEAT_DIFF is not defined
          (John Marriott)
Solution: Remove FEAT_DIFF in proto.h; define dummy type for
          diffline_T and diffline_change_T when FEAT_DIFF is not defined

related: #18026
closes: #18046

Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-20 20:37:37 +02:00
Yegappan Lakshmanan
3281a0ae62 patch 9.1.1637: FEAT_DIFF used in diff.pro
Problem:  FEAT_DIFF used in diff.pro
Solution: Remove it from the diff protocol file
          (Yegappan Lakshmanan)

closes: #18005

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-16 17:33:53 +02:00
Girish Palya
7e0df5eee9 patch 9.1.1627: fuzzy matching can be improved
Problem:  fuzzy-matching can be improved
Solution: Implement a better fuzzy matching algorithm
          (Girish Palya)

Replace fuzzy matching algorithm with improved fzy-based implementation

The
[current](https://www.forrestthewoods.com/blog/reverse_engineering_sublime_texts_fuzzy_match/)
fuzzy matching algorithm has several accuracy issues:

* It struggles with CamelCase
* It fails to prioritize matches at the beginning of strings, often
  ranking middle matches higher.

After evaluating alternatives (see my comments
[here](https://github.com/vim/vim/issues/17531#issuecomment-3112046897)
and
[here](https://github.com/vim/vim/issues/17531#issuecomment-3121593900)),
I chose to adopt the [fzy](https://github.com/jhawthorn/fzy) algorithm,
which:

* Resolves the aforementioned issues.
* Performs better.

Implementation details

This version is based on the original fzy
[algorithm](https://github.com/jhawthorn/fzy/blob/master/src/match.c),
with one key enhancement: **multibyte character support**.

* The original implementation supports only ASCII.
* This patch replaces ascii lookup tables with function calls, making it
  compatible with multibyte character sets.
* Core logic (`match_row()` and `match_positions()`) remains faithful to
  the original, but now operates on codepoints rather than single-byte
  characters.

Performance

Tested against a dataset of **90,000 Linux kernel filenames**. Results
(in milliseconds) show a **\~2x performance improvement** over the
current fuzzy matching algorithm.

```
Search String            Current Algo    FZY Algo
-------------------------------------------------
init                          131.759    66.916
main                          83.688     40.861
sig                           98.348     39.699
index                         109.222    30.738
ab                            72.222     44.357
cd                            83.036     54.739
a                             58.94      62.242
b                             43.612     43.442
c                             64.39      67.442
k                             40.585     36.371
z                             34.708     22.781
w                             38.033     30.109
cpa                           82.596     38.116
arz                           84.251     23.964
zzzz                          35.823     22.75
dimag                         110.686    29.646
xa                            43.188     29.199
nha                           73.953     31.001
nedax                         94.775     29.568
dbue                          79.846     25.902
fp                            46.826     31.641
tr                            90.951     55.883
kw                            38.875     23.194
rp                            101.575    55.775
kkkkkkkkkkkkkkkkkkkkkkkkkkkkk 48.519     30.921
```

```vim
vim9script

var haystack = readfile('/Users/gp/linux.files')

var needles = ['init', 'main', 'sig', 'index', 'ab', 'cd', 'a', 'b',
'c', 'k',
    'z', 'w', 'cpa', 'arz', 'zzzz', 'dimag', 'xa', 'nha', 'nedax',
'dbue',
    'fp', 'tr', 'kw', 'rp', 'kkkkkkkkkkkkkkkkkkkkkkkkkkkkk']
for needle in needles
    var start = reltime()
    var tmp = matchfuzzy(haystack, needle)
    echom $'{needle}' (start->reltime()->reltimefloat() * 1000)
endfor
```

Additional changes

* Removed the "camelcase" option from both matchfuzzy() and
  matchfuzzypos(), as it's now obsolete with the improved algorithm.

related: neovim/neovim#34101
fixes #17531
closes: #17900

Signed-off-by: Girish Palya <girishji@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-12 22:22:52 +02:00
Yegappan Lakshmanan
3416cee36f patch 9.1.1577: Vim9: no generic support yet
Problem:  Vim9: no generic support yet
Solution: Add support for generic functions, funcrefs and object/class
          methods (Yegappan Lakshmanan).

closes: #17313

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-07-21 21:36:08 +02:00
Foxe Chen
b90c2395b2 patch 9.1.1485: missing Wayland clipboard support
Problem:  missing Wayland clipboard support
Solution: make it work (Foxe Chen)

fixes: #5157
closes: #17097

Signed-off-by: Foxe Chen <chen.foxe@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-06-27 21:10:35 +02:00
Naruhiko Nishino
be5bd4d629 patch 9.1.1391: Vim does not have a vertical tabpanel
Problem:  Vim does not have a tabpanel
Solution: include the tabpanel feature
          (Naruhiko Nishino, thinca)

closes: #17263

Co-authored-by: thinca <thinca@gmail.com>
Signed-off-by: Naruhiko Nishino <naru123456789@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-05-14 21:20:28 +02:00
John Marriott
ec032de646 patch 9.1.1291: too many strlen() calls in buffer.c
Problem:  too many strlen() calls in buffer.c
Solution: refactor buffer.c and remove strlen() calls
          (John Marriott)

closes: #17063

Signed-off-by: John Marriott <basilisk@internode.on.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-04-10 21:34:19 +02:00
Yegappan Lakshmanan
9cb865e95b patch 9.1.1232: Vim script is missing the tuple data type
Problem:  Vim script is missing the tuple data type
Solution: Add support for the tuple data type
          (Yegappan Lakshmanan)

closes: #16776

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-03-23 16:42:16 +01:00
Jonathon
7c7a4e6d1a patch 9.1.1009: diff feature can be improved
Problem:  diff feature can be improved
Solution: include the linematch diff alignment algorithm
          (Jonathon)

closes: #9661

Signed-off-by: Jonathon <jonathonwhite@protonmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-01-12 09:58:00 +01:00
Yegappan Lakshmanan
25536f415e patch 9.1.0431: eval.c is too long
Problem:  eval.c is too long
Solution: Move garbage collection code to new gc.c file
          (Yegappan Lakshmanan)

closes: #14824

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-05-22 16:45:04 +02:00
Bram Moolenaar
c1c365c1ca patch 9.0.1001: classes are not documented or implemented yet
Problem:    Classes are not documented or implemented yet.
Solution:   Make the first steps at documenting Vim9 objects, classes and
            interfaces.  Make initial choices for the syntax.  Add a skeleton
            implementation.  Add "public" and "this" in the command table.
2022-12-04 20:13:24 +00:00
Bram Moolenaar
3b8c7083b2 patch 9.0.0978: build errors without the +channel feature
Problem:    Build errors without the +channel feature. (John Marriott)
Solution:   Adjust #ifdefs.
2022-11-30 20:20:56 +00:00
Bram Moolenaar
4c5678ff0c patch 9.0.0977: it is not easy to see what client-server commands are doing
Problem:    It is not easy to see what client-server commands are doing.
Solution:   Add channel log messages if ch_log() is available.  Move the
            channel logging and make it available with the +eval feature.
2022-11-30 18:12:19 +00:00
Yee Cheng Chin
4314e4f7da patch 9.0.0694: no native sound support on Mac OS
Problem:    No native sound support on Mac OS.
Solution:   Add sound support for Mac OS. (Yee Cheng Chin, closes #11274)
2022-10-08 13:50:05 +01:00
Bram Moolenaar
0b962e5685 patch 8.2.4677: the Athena GUI support is outdated
Problem:    The Athena GUI support is outdated.
Solution:   Remove the Athena GUI code.
2022-04-03 18:02:37 +01:00
Bram Moolenaar
dc7c366f3a patch 8.2.3860: Vim9: codecov struggles with the file size
Problem:    Vim9: codecov struggles with the file size.
Solution:   Split vim9compile.c into four files.
2021-12-20 15:04:29 +00:00
Yegappan Lakshmanan
cbae580283 patch 8.2.3301: memory allocation functions don't have their own place
Problem:    Memory allocation functions don't have their own place.
Solution:   Move memory allocation functions to alloc.c.  (Yegappan
            Lakshmanan, closes #8717)
2021-08-06 21:51:55 +02:00
Bram Moolenaar
952d9d827e patch 8.2.3274: macro for printf format check can be simplified
Problem:    Macro for printf format check can be simplified.
Solution:   Add ATTRIBUTE_FORMAT_PRINTF(). (Dominique Pellé, issue #8635)
2021-08-02 18:07:18 +02:00
Yegappan Lakshmanan
a2438132a6 patch 8.2.3139: functions for string manipulation are spread out
Problem:    Functions for string manipulation are spread out.
Solution:   Move string related functions to a new source file. (Yegappan
            Lakshmanan, closes #8470)
2021-07-10 21:29:18 +02:00
Yegappan Lakshmanan
01c798c31a patch 8.2.2928: the evalfunc.c file is too big
Problem:    The evalfunc.c file is too big.
Solution:   Move float related functionality to a separate file. (Yegappan
            Lakshmanan, closes #8287)
2021-06-02 17:07:18 +02:00
Bram Moolenaar
9b8d62267f patch 8.2.2238: Vim9: cannot load a Vim9 script without the +eval feature
Problem:    Vim9: cannot load a Vim9 script without the +eval feature.
Solution:   Support Vim9 script syntax without the +eval feature.
2020-12-28 18:26:00 +01:00
Bram Moolenaar
8b5866ded6 patch 8.2.1597: the channel source file is too big
Problem:    The channel source file is too big.
Solution:   Move job related code to a new source file.
2020-09-05 15:48:51 +02:00
Bram Moolenaar
097148e849 patch 8.2.1422: the Mac GUI implementation is outdated
Problem:    The Mac GUI implementation is outdated and probably doesn't even
            work.
Solution:   Remove the Mac GUI code.  The MacVim project provides the
            supported Vim GUI version.
2020-08-11 21:58:20 +02:00
Bram Moolenaar
a7cc9e697b patch 8.2.1405: Vim9: vim9compile.c is getting too big
Problem:    Vim9: vim9compile.c is getting too big.
Solution:   Split off type code to vim9type.c.
2020-08-09 15:25:14 +02:00
Bram Moolenaar
054f14bbe5 patch 8.2.1269: language and locale code spread out
Problem:    Language and locale code spread out.
Solution:   Move relevant code to src/locale.c. (Yegappan Lakshmanan,
            closes #6509)
2020-07-22 19:11:19 +02:00
Bram Moolenaar
f868ba8903 patch 8.2.1262: src/ex_cmds.c file is too big
Problem:    src/ex_cmds.c file is too big.
Solution:   Move help related code to src/help.c. (Yegappan Lakshmanan,
            closes #6506)
2020-07-21 21:07:20 +02:00
Bram Moolenaar
06cf97e714 patch 8.2.1078: highlight and match functionality together in one file
Problem:    Highlight and match functionality together in one file.
Solution:   Move match functionality to a separate file. (Yegappan Lakshmanan,
            closes #6352)
2020-06-28 13:17:26 +02:00
Bram Moolenaar
f15c8b6eb3 patch 8.2.0872: XIM code is mixed with multi-byte code
Problem:    XIM code is mixed with multi-byte code.
Solution:   Move the XIM code to a separate file. (Yegappan Lakshmanan,
            closes #6177)
2020-06-01 14:34:43 +02:00
Bram Moolenaar
041c7107f2 patch 8.2.0849: BeOS code is not maintained and probably unused
Problem:    BeOS code is not maintained and probably unused.
Solution:   Remove the BeOS code. (Emir Sari, closes #5817)
2020-05-30 18:14:57 +02:00
Bram Moolenaar
367d59e6ba patch 8.2.0847: typval related code is spread out
Problem:    Typval related code is spread out.
Solution:   Move code to new typval.c file. (Yegappan Lakshmanan, closes #6093)
2020-05-30 17:06:14 +02:00
Bram Moolenaar
11abd09521 patch 8.2.0674: some source files are too big
Problem:    Some source files are too big.
Solution:   Move text formatting functions to a new file. (Yegappan
            Lakshmanan, closes #6021)
2020-05-01 14:26:37 +02:00
Bram Moolenaar
ed8ce057b7 patch 8.2.0660: the search.c file is a bit big
Problem:    The search.c file is a bit big.
Solution:   Split off the text object code to a separate file. (Yegappan
            Lakshmanan, closes #6007)
2020-04-29 21:04:15 +02:00
Bram Moolenaar
f87a0400fd patch 8.2.0516: client-server code is spread out
Problem:    Client-server code is spread out.
Solution:   Move client-server code to a new file. (Yegappan Lakshmanan,
            closes #5885)
2020-04-05 20:21:03 +02:00
Bram Moolenaar
45fffdf10b patch 8.2.0443: clipboard code is spread out
Problem:    Clipboard code is spread out.
Solution:   Move clipboard code to its own file. (Yegappan Lakshmanan,
            closes #5827)
2020-03-24 21:42:01 +01:00
Bram Moolenaar
db99f9f29a patch 8.2.0436: no warnings for incorrect printf arguments
Problem:    No warnings for incorrect printf arguments.
Solution:   Fix attribute in declaration.  Fix uncovered mistakes. (Dominique
            Pelle, closes #5834)
2020-03-23 22:12:22 +01:00
Bram Moolenaar
b3f740695a patch 8.2.0320: no Haiku support
Problem:    No Haiku support.
Solution:   Add support for Haiku. (Emir Sari, closes #5605)
2020-02-26 16:16:53 +01:00
Bram Moolenaar
0a8fed6231 patch 8.2.0256: time and timer related code is spread out
Problem:    Time and timer related code is spread out.
Solution:   Move time and timer related code to a new file. (Yegappan
            Lakshmanan, closes #5604)
2020-02-14 13:22:17 +01:00
Bram Moolenaar
8a7d6542b3 patch 8.2.0149: maintaining a Vim9 branch separately is more work
Problem:    Maintaining a Vim9 branch separately is more work.
Solution:   Merge the Vim9 script changes.
2020-01-26 15:56:19 +01:00
Bram Moolenaar
912bc4a51a patch 8.1.2376: preprocessor indents are incorrect
Problem:    Preprocessor indents are incorrect.
Solution:   Fix the indents. (Ken Takata, closes #5298)
2019-12-01 18:58:11 +01:00
Bram Moolenaar
05ad5ff0ab patch 8.1.2371: FEAT_TEXT_PROP is a confusing name
Problem:    FEAT_TEXT_PROP is a confusing name.
Solution:   Use FEAT_PROP_POPUP. (Naruhiko Nishino, closes #5291)
2019-11-30 22:48:27 +01:00
Bram Moolenaar
9bf703d46a patch 8.1.2366: using old C style comments
Problem:    Using old C style comments.
Solution:   Use // comments where appropriate.
2019-11-30 19:44:38 +01:00
Bram Moolenaar
310c32e892 patch 8.1.2361: MS-Windows: test failures related to VIMDLL
Problem:    MS-Windows: test failures related to VIMDLL.
Solution:   Adjust code and tests. (Ken Takata, closes #5283)
2019-11-29 23:15:25 +01:00
Bram Moolenaar
546125869f patch 8.1.2327: cannot build with Hangul input
Problem:    Cannot build with Hangul input.
Solution:   Remove Hangul input support.
2019-11-21 17:13:31 +01:00
Bram Moolenaar
14c01f8348 patch 8.1.2127: the indent.c file is a bit big
Problem:    The indent.c file is a bit big.
Solution:   Move C-indent code a a new cindent.c file.  Move other
            indent-related code to indent.c. (Yegappan Lakshmanan,
            closes #5031)
2019-10-09 22:53:08 +02:00
Bram Moolenaar
473952e852 patch 8.1.2094: the fileio.c file is too big
Problem:    The fileio.c file is too big.
Solution:   Move buf_write() to bufwrite.c. (Yegappan Lakshmanan,
            closes #4990)
2019-09-28 16:30:04 +02:00
Bram Moolenaar
30e8e73506 patch 8.1.2082: some files have a weird name to fit in 8.3 characters
Problem:    Some files have a weird name to fit in 8.3 characters.
Solution:   Use a nicer names.
2019-09-27 13:08:36 +02:00
Bram Moolenaar
46a426c9ac patch 8.1.2081: the spell.c file is too big
Problem:    The spell.c file is too big.
Solution:   Move the code for spell suggestions to a separate file. (Yegappan
            Lakshmanan, closes #4988)
2019-09-27 12:41:56 +02:00
Bram Moolenaar
4aea03eb87 patch 8.1.2077: the ops.c file is too big
Problem:    The ops.c file is too big.
Solution:   Move code for dealing with registers to a new file. (Yegappan
            Lakshmanan, closes #4982)
2019-09-25 22:37:17 +02:00
Bram Moolenaar
b20b9e14dd patch 8.1.2062: the mouse code is spread out
Problem:    The mouse code is spread out.
Solution:   Move all the mouse code to mouse.c. (Yegappan Lakshmanan,
            closes #4959)
2019-09-21 20:48:04 +02:00