Commit Graph

29 Commits

Author SHA1 Message Date
yioneko
1a1d7ecb73 perf: improve for source providing huge list of items (#1980)
* perf: avoid creating closure in cache.ensure and drop some cached getters

This mainly addresses the perf issue on large amount of calls to
`entry.new`. Previously every `cache.ensure` calls in the code path of
it creates an anonymous function, and it seems that luajit just could
not inline it. Function creation is not expensive in luajit, but that
overhead is noticeable if every `cache.ensure` call creates a function.
The first improvemnt is to solidate the cache callback and attach it to
the metatable of `entry`. This ensures that every created entry instance
share the same cache callback and no new functions will be frequently created,
reduces the ram usage and GC overhead.

To improve it further, some frequently accessed fields of entry like
`completion_item` and `offset` is refactored to use simple table access
instead of getter pattern. The current cached getter is implemented
using `cache.ensure`, which introduces two more levels of function calls
on each access: `cache.key` and `cache.get`. The overhead is okay if but
noticeable if entries amount is quite large: you need to call 4 functions on
a simple `completion_item` field access for each item.

All of the changes done in the commit is just constant time
optimization. But the different is huge if tested with LS providing
large amount of entries like tailwindcss.

* perf: delay fuzzy match on displayed vim item

`entry.get_vim_item` is a very heavy call, especially when user do
complex stuff on item formatting. Delay its call to window displaying to
let `performance.max_view_entries` applied to it.

* remove unneeded fill_defaults

* update gha

---------

Co-authored-by: hrsh7th <629908+hrsh7th@users.noreply.github.com>
2024-10-20 13:28:20 +09:00
NAKAI Tsuyoshi
e1757aea61 feat(view): add api get_selected_index (#1986) 2024-07-16 01:29:25 +09:00
Yu Zhang
04e0ca376d fix: one more item than max_item_count is displayed (#1811) 2024-02-02 15:59:47 +09:00
Mehdi
41d7633e41 feat: sort source entries before slicing when using max_item_count (#1765)
* feat: sort source entries beforce slicing when using max_item_count

* feat: optimize filtering by max_item_count after sort

* fix: useless check if max_item_counts map is initialized

* fix: directly use entry source object when checking max_item_count
2023-12-10 20:37:02 +09:00
Maria José Solano
1c03ebc7dc feat: add toggle_doc functionality (#1647)
* feat: Add toggle_doc functionality

fix: Update docs view on entry change

* Replace toggle logic by open/close

* add docs and pinned flags

* add faq for disabling docs

* chore(git): ignore .DS_Store

---------

Co-authored-by: hrsh7th <629908+hrsh7th@users.noreply.github.com>
2023-08-12 11:50:49 +09:00
Folke Lemaitre
abb5c7519d feat: cmp async (#1583) 2023-05-26 02:46:53 +09:00
hrsh7th
058100d813 Fix #1149 (temporary fix) 2022-08-23 15:21:32 +09:00
hrsh7th
db261b4e2b Fix onetime configuration handling 2022-08-20 20:27:48 +09:00
hrsh7th
bf5593df8e Improve typings 2022-07-24 12:44:53 +09:00
tzachar
8cab788976 add events: view_opened and view_closed (#965)
* add events: view_opened and view_closed

* fix typos

* rename view -> menu
2022-06-24 12:35:47 +09:00
hrsh7th
71d7f46b93 Try to fix col adjustment (#843)
* Try to fix col adjuastment

* Improve duplicated text handling
2022-03-17 15:53:10 +09:00
hrsh7th
c07350181f Implement matching config.
Fix #796
2022-02-13 16:44:45 +09:00
hrsh7th
070c5572ad Implement shell like common string completion.
Fix #785
2022-02-13 14:34:28 +09:00
tzachar
124f1611f1 Statusline view in search mode or command line mode (#729)
* Search mode horizontal view

Enabled by setting `experimental.horizontal_search = true`

* use stylua

* move to a floating window instead of abusing status line

* pass all tests

* rework

1. rename entries view file and memeber to wildmenu_entries_view
2. move config to config.view.entries
3. support both in insert mode and cmdline
4. make separator configurable by config.view.separator

* rearange wildmenu config

Changed config to:
```lua
  view = {
    entries = {name = 'wildmenu', separator = '|' }
  },
```

* allow view.entries to be either a literal string or a table
2022-02-01 16:47:34 +09:00
hrsh7th
2d67b6dd76 Fix #756 2022-01-25 10:06:36 +09:00
hrsh7th
27123b1297 Fix #754 2022-01-24 23:46:47 +09:00
hrsh7th
7a1e484806 Improve recently used 2022-01-20 17:06:48 +09:00
hrsh7th
21456a109e fmt/test 2022-01-10 23:01:47 +09:00
hrsh7th
3f7b7b258a Add complete_done event and improved the recently_used sorter.
Fix #708
2022-01-08 13:38:55 +09:00
hrsh7th
b185e303bd Improve group handling 2021-10-23 00:38:55 +09:00
hrsh7th
533f17c569 group -> group_index 2021-10-22 19:52:48 +09:00
hrsh7th
530834e8c0 Fix group index bug 2021-10-22 19:50:28 +09:00
hrsh7th
0d4275e62d Fix 2021-10-22 18:26:50 +09:00
hrsh7th
e4a2cec153 Implement source group.
Fixes #391
2021-10-22 18:24:03 +09:00
hrsh7th
f0a6cca5b9 Fix #355 2021-10-16 22:09:01 +09:00
hrsh7th
20aa77b492 format&lint 2021-10-10 14:04:39 +09:00
hrsh7th
370e6ff076 Use nvim_win_hide instead o nvim_win_close for supporting custom menu on cmdwin 2021-10-10 12:23:39 +09:00
hrsh7th
883eee5bbc Use <C-h> and support cmdwin 2021-10-10 00:01:15 +09:00
hrsh7th
ada9ddeff7 Use floating window for completion menus (#224)
* WIP

* WIP

* Fix #226

* Insert text

* Emulate vim native

* テキトウ

* Tekito

* Move scrollbar impl

* aaa

* Ignore unexpected event

* fix

* fix scroll

* Refactor (conflict...)

* Fix bug

* Positive integer

* Refactor a bit

* Fix for pumheight=0

* fx

* Improve matching highlight

* Improve colorscheme handling

* fmt

* Add cmp.visible

* Fix pum pos

* ABBR_MARGIN

* Fix cel calculation

* up

* refactor

* fix

* a

* a

* compat

* Remove current completion state

* Fix ghost text

* Add feature toggle

* highlight customization

* Update

* Add breaking change announcement

* Add README.md

* Remove unused function

* extmark ephemeral ghost text

* Support native comp

* Fix docs  pos

* a

* Remove if native menu visible

* theme async

* Improvement idea: option to disables insert on select item (#240)

* use ghost text instead of insertion on prev/next item

* add disables_insert_on_selection option

* move disable_insert_on_select option as argumet on

* update README

* use an enum behavior to disable insert on select

* Adopt contribution

* Preselect

* Improve

* Change configuration option

* a

* Improve

* Improve

* Implement proper <C-e> behavior to native/custom

* Support <C-c> maybe

* Improve docs view

* Improve

* Avoid syntax leak

* TODO: refactor

* Fix

* Revert win pos

* fmt

* ghost text remaining

* Don't use italic by default

* bottom

* dedup by label

* Ignore events

* up

* Hacky native view partial support

* up

* perf

* improve

* more cache

* fmt

* Fix format option

* fmt

* recheck

* Fix

* Improve

* Improve

* compat

* implement redraw

* improve

* up

* fmt/lint

* immediate ghost text

* source timeout

* up

* Support multibyte

* disable highlight

* up

* improve

* fmt

* fmt

* fix

* fix

* up

* up

* Use screenpos

* Add undojoin check

* Fix height

* matcher bug

* Fix dot-repeat

* Remove undojoin

* macro

* Support dot-repeat

* MacroSafe

* Default item count is 200

* fmt

Co-authored-by: Eric Puentes <eric.puentes@mercadolibre.com.co>
2021-10-08 18:27:33 +09:00