Open vinsworldcom opened 11 months ago
Sounds like a useful idea (one may also monitor Scintilla notifications for added/deleted text to accomplish this as I kind-of do in the plugin). I'll implement it some time in the future (when I find the time that is :) ). Maybe it is good to set a starting character number before triggering the autocomplete because otherwise when you enter just one char a possibly very large autocomplete list will appear which IMO feels more like a "noise" and distraction when typing than something really useful.
Thanks and regards
Hi again Vince,
Could you please check this development build: 64-bit, 32-bit. It is using the native plugin autocomplete list now but it is auto-shown on char input (after the third entered character). Is this example kind-of what you are expecting and proposing?
P.S. I see you have made an example PR but I don't have time to look at it right now. Sorry about that and thanks :+1:
@pnedev very nice! I would welcome the character number be customizable, default at 3, but I would probably set to 1 as I have Notepad++ autocomplete set there as well.
Other than that, the only thing is it makes an audible system "ding", "bell" whatever sound whenever a character is typed and the plugin Autocomplete window is visible. You need to type slowly, but it is for each typed character. Typing fast, you may only hear the bell once or twice.
PS: I only tried the 64-bit version.
Cheers.
PS: The same "system beep" was happening when pressing Tab
in the Function List in Notepad++ itself a while back. It was fixed in this file:
Search for "remove beep" and you'll see a SetWindowLongPtr()
call, a few times this shows up in this file. Maybe a clue how to fix it?
Some testing and this simple change removes the annoying beep for me:
nppgtags/src/AutoCompleteWin.cpp:
448: case LVN_KEYDOWN:
449: if (ACW->onKeyDown(((LPNMLVKEYDOWN)lParam)->wVKey))
450:- return 0;
450:+ return 1;
451: break;
Cheers.
I'm testing now and it all was going so good until I tried to use multiple caret - which multi-editing is now enabled by default in Notepad++ 8.6. Using your plugin native Autocomplete, I can't do multi carets. As soon as the plugin autocomplete pops up, the multi-carets are lost to just the active caret.
I'm going to keep playing with my PR to see if I can't fix the issues. I think we'll need to use the Notepad++ / Scintilla native autocomplete functions in order to get the full integration and usefulness.
Cheers.
Thanks Vince for debugging the beep issue, the feedback and the testing :+1: You are right, I haven't implemented the NppGTags autocomplete function with multi-caret in mind.
BR
P.S. I can easily disable plugin Autocomplete triggering if multi-editing is at hand if that's something useful for you as initial approach.
Yes, I use multi-caret quite regularly. It would be unfortunate if it could not work in multi-caret mode. The Scintilla native autocomplete does work in multi-caret mode.
I think I've corrected most of the problems with my PR. I'm using it now in my Notepad++ daily use to see if any other issues come up.
Cheers.
OK, I'll try it myself soon and probably merge it. Thank you for looking into this.
P.S. Later I'll also add automatic autocomplete on char input + starting character per database setting. You might also want to check my latest commits to dev branch - I have done some optimizations and fixes (including what you have already found about the "Create missing database" prompt on automatic autocomplete). One of those is a single check per file activation if it is included in a database and "caching" the result so no extensive database path lookup is done on each char input while editing a single file. There are some more fixes that might not be relevant to your implementation with Scintilla autocomplete.
@vinsworldcom , Hello Vince,
I have added a setting to make Autocomplete automatically triggered after entering word with configurable length. It is not native Scintilla autocomplete though (I prefer it that way at the moment) but it manages multi-selections without problem. It will be available in the next official release but you can get the dev build from these links: x64 / x86.
I am sorry that it will require you to rework your patch to be able to sync to the latest official state.
BR
Would you consider adding an option (perhaps a checkbox in settings) to use Scintilla autocomplete instead of a plugin "native" version? This would mean that simply typing would also trigger autocompletes (so long as enabled in Notepad++) for tag database items.
Scintilla autocomplete has a lot to be desired and there is not way to integrate with the already existing Notepad++ autocomplete features, but with Scintilla autocomplete, it would "just happen" when typing vs. having to setup yet another shortcut key for autocompletion.
I do something similar in (my fork of) TagLeet.
Cheers.