Timocop / BasicPawn

BasicPawn - SourcePawn Editor
GNU General Public License v3.0
75 stars 11 forks source link

Improve autocompletion feature to have faster access #88

Open dragokas opened 3 years ago

dragokas commented 3 years ago

In Notepad++ with plugins (and maybe, same in VS) there are several features allowing to code a really fast:

1) Autocompletion just using "Arrow" buttons + "TAB".

I will explain, why it is faster than Ctrl + Arrow, Ctrl + Enter. In second case:

Can you please add such ability?

2) There is unnecessary duplication of information. See screen:

AutoComp

It would be cool to have an optional checkbox, allowing to see only the list of autocompletion keywords in the pop-up windows, allowing instantly select one of them with "Arrow", "TAB" button. Such window will disapper as soon as whitespace or "(" character is entered, or "ESC" button is pressed.

It is faster, because:

3) In N++ plugin I'm using, the list of phrases are constantly re-arranged, dependent on which one phrase you are selected the last time. Example: When you enter "Print"

First time, you have:

PrintCenterText
PrintToChat
PrintToChatAll

in autocompletion drop-down list. If you select "PrintToChatAll",

the next time, you printed "Print", you will have:

PrintToChatAll
PrintCenterText
PrintToChat

in your drop-down list. And this is extremely faster, because the next time you just need to enter "Print"+"TAB"

Can this be somehow implemented, maybe partially, when you have enough time, or with my help. I studied C#, and I have a pretty good basic knowledge of it, so I could help, I think, VB.NET is not that much difficult, considering that I already know VB6.

Timocop commented 3 years ago

1. Autocompletion just using "Arrow" buttons + "TAB". Not sure why the current shortcut is slower than the one you suggested since everyone writes code with two hands on their keyboard anyways (at least i do 😄). I never liked having the autocompletion shortcut being TAB, because it can be pressed on accident when intending your code or you intend your code on accident because you thought the Autocompletion window was open 😅. Also would you not travel further using Arrow + TAB than the current Ctrl Arrow + Ctrl Enter shortcut since Ctrl, Arrow Keys and Enter are next to each other 🤔? You can use the current shortcut with one hand too. Ctrl is also located on the right side of the keyboard, next to Enter and Arrow keys. 2021-07-02_13-30-24

The current shortcut is not just for the Autocompletion and IntelliSense, its a universal shortcut for the whole Details area (See Special Controls tab). So it cant be changed so easily.

I doubt the autocompletion shortcut suggestion will be implemented. Maybe once custom shortcuts are implemented but not now. As for the other requests they can be implemented no problem with some changes of course.

dragokas commented 3 years ago

The matter of habits of course. But: You code in VS, so you should understand me: image

I mean to be match with its IntelliSense entering method. To have such alternative option. This is incompatible with your BasicPawn's IntelliSense windows, because it is opened even if I just select the keyword. But I propose to make an option to have alternative - analogue in-place mini-window, which is opened only when you entering text (and disappear when you enter "(", spece or something), not when you select the keyword. I can't find a moment in VS IDE where I could accidentally press TAB when those inplace-autocomple window is opened.

It's anyway faster to press just one key: "TAB" instead of 2 keys: Ctrl + Enter (on 1st item in list), or 2 keys: Arrow + TAB, instead of 3-4 keys: Ctrl + Arrow, Ctrl + Enter.

Under 2-hands method I mean much about little finger, this finger is rarely used, but in case TAB, little finger is just located under TAB, so all of other fingers is free and can continue to enter text simultaneously.

If you need to enter serveral identical commands + in a coupe of "save the last autocomplete selected item" feature, this would be an extremely fast entering method.

dragokas commented 3 years ago

Surely, that's your personal design. I don't want you doing something you really don't like, especially something that looks like a feature duplicate. Thanks for your attention to this proposal.

Timocop commented 3 years ago

Don't get me wrong, i am open for ideas and im planning to improve the IntelliSense. But the TAB shortcut can not be implemented right now, because BasicPawn's IntelliSense is very basic. It just display things and compares it from a list, that's all, its quite dumb but it works. Because i wanted to finish the basics of an IDE first before i go into more advanced things which take more time. For this there has to be a little rework made to make this function what you are requesting, which i planed to do of course. But it takes some time, which what i have planed still and with all the feature request coming in 😅. The IntelliSense you see right now is not going to stay like this of course. But this seems low priority right now, hope you understand.

dragokas commented 3 years ago

I must say, in the current state it is already very convenient IDE. I don't understand how possible to browse my large multiple-files project without your IDE, having constantly need all those jumps between func dependencies. Maybe a little bit of improvement to have bookmark buttons on panel would be very handy.

As about autocomplete, by time, I'm get used to it too, but if you make some dictionary with key = "entered part of phrase" before pressing ctrl+enter, value = "last time selected autocomplete phrase", so the next time when you enter part of phrase it firstly search in that dictionary and auto-select appropriate "recommended" variant from autocomplete list, it can save much more time, no need to browse the list with arrows.