Alexey-T / CudaText

Cross-platform text editor, written in Free Pascal
Mozilla Public License 2.0
2.54k stars 173 forks source link

LSP autocomplete should support fuzzy search #5511

Open pintassilgo opened 6 months ago

pintassilgo commented 6 months ago

VSCode: image

Sublime: image

Kate: image

CudaText after typing qa: there's no autocomplete suggestion, I need to type queryselectora which is way slower.

All these three editors use full-fuzzy for these autocomplete, but I guess the ideal would be to use the "smart fuzzy" implemented here, which is also used by VSCode for Command palette.

Alexey-T commented 6 months ago

Hello @veksha , can you see it please?

pintassilgo commented 6 months ago

Moved to #5513 by Alexey

pintassilgo commented 6 months ago

Moved to #5513 by Alexey

Alexey-T commented 6 months ago

My function is_fuzzy_match is here: https://github.com/CudaText-addons/cuda_complete_from_text/blob/master/__init__.py

I tried to reuse it for LSP. here: language.py

    def filter(self, item, word):
        s1 = item['label'] if item.get('filterText') is None else item.get('filterText')
        s2 = word
        pos_bracket = s1.find('(')
        s1 = s1 if pos_bracket == -1 else s1[:pos_bracket]
        print('filter for:', s1, s2)
        return is_fuzzy_match(s1, s2)

don't work! def filter is not called at all if I call completion after word 'TE' and have id 'TIME_BEGIN' in code.

Alexey-T commented 6 months ago

So the fuzzy is requiring the server support and/or some LSP client option must be changed. this is for @veksha , please.

Alexey-T commented 6 months ago

I dont see in web-search how to allow fuzzy in LSP servers settings for other editors. maybe only few servers have setting. so we cannot solve it in common way, yes, @veksha ?

pintassilgo commented 6 months ago

Why was this closed? Don't you agree this is a good feature to have?

Alexey-T commented 6 months ago

Reopened. but I guess it is impossible to add, see my prev comment.

pintassilgo commented 6 months ago

I understand you don't know how to fix, but I see no reason for it to be impossible. I use the same LSP server in all the examples I gave (typescript-language-server), surely it's doable for someone.