Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Extremely annoying auto completion #52500

Closed
prd0000 opened this issue Jun 20, 2018 · 15 comments
Closed

Extremely annoying auto completion #52500

prd0000 opened this issue Jun 20, 2018 · 15 comments
Assignees
Labels
*duplicate Issue identified as a duplicate of another issue(s) info-needed Issue requires more information from poster suggest IntelliSense, Auto Complete

Comments

@prd0000
Copy link

prd0000 commented Jun 20, 2018

Ok.. this isn't fun and downright a stupid feature.
image

image

Why do VScode MUST match my typed character individually instead off my partial word? And putting a snippet on top of it. When I press tab to put colon, it will PUT that snippet there, so I HAVE to retype everything ALL OVER AGAIN, and remember to press escape instead of tab. I want snippet completion, but I don't want fuzzy matches on MY snippet, much less unknown intrusive snippets. If I want my snippet, I will type my own prefix, not some random characters mumble jumble.

This is VERY frustrating, anti-productive, and I literally wanted to smash my screen for this.

@vscodebot vscodebot bot added editor editor-find Editor find operations labels Jun 20, 2018
@Cirieno
Copy link

Cirieno commented Jun 20, 2018

Seconded (without the damage). I've never understood why the Intellisense/Snippet/Emmet/??? engine looks for each letter typed instead of a discrete unit of letters, and it is frustrating noise.
Also note in the image that the letters aren't always matched in order!

issue

@Cirieno
Copy link

Cirieno commented Jun 20, 2018

@prd0000 Not that this fixes the issue, but as an aside: there is a user setting "editor.snippetSuggestions" which allows you to specify where in the intellisense list snippets show <top/bottom/inline/none>

@prd0000
Copy link
Author

prd0000 commented Jun 21, 2018

Already set snippet to bottom.

EDIT: Sorry, had a workspace setting on top.

@chrmarti chrmarti added suggest IntelliSense, Auto Complete and removed editor editor-find Editor find operations labels Jun 21, 2018
@jrieken jrieken added the info-needed Issue requires more information from poster label Jun 21, 2018
@jrieken
Copy link
Member

jrieken commented Jun 21, 2018

@prd0000 Very interesting and something that should not happen. Weirdly enough, I cannot reproduce here... This is how it look on my machine and that's also how it should work

jun-21-2018 09-50-26

Can you attach source/file in which this happens? Is that TypeScript or JavaScript? What version of VS Code does that happen in? Can you attach your settings file?

@Cirieno
Copy link

Cirieno commented Jun 21, 2018

@jrieken It is happening even in your example image! -- intellisense is coming up with "private method" which does not relate to [prev] as typed. Also the phrase "private method" contains the letters [p,r,v,e] so it doesn't even look up letters in the correct order as typed.

@jrieken
Copy link
Member

jrieken commented Jun 21, 2018

It is happening even in your example image! -- intellisense is coming up with "private method" which does not relate to [prev] as typed.

You and I aren't on the same page here. What the gif shows is the designed behaviour, IntelliSense tries a few permutations because it's common a mistake to swap neighbournig characters. Check the second paragraph in https://code.visualstudio.com/updates/v1_19#_smarter-intellisense. If you don't like this, then please file a separate issue. The issue here is sorting, the match on private method should be weaker then the perfect match on prev. Because of that prev should be sorted on top and it should be the selected by default.

@Cirieno
Copy link

Cirieno commented Jun 21, 2018

@jrieken I think then two different issues are alluded to in the original comment. I commented on the first (fuzzy intellisense is annoying and / or can lead to inserted typos that need deleting), and you have commented on the second (why isn't the stronger match at the top of the list).

So I assumed that this issue is the nature of fuzzy intellisense to try and be over-helpful (explained by your link) -- and this fuzziness should be optional.

@prd0000
Copy link
Author

prd0000 commented Jun 21, 2018

This is the configuration file:

{
    "git.ignoreMissingGitWarning": true,
    "editor.snippetSuggestions": "inline",
    "editor.tabCompletion": true,
    "typescript.useCodeSnippetsOnMethodSuggest": false,
    "typescript.updateImportsOnFileMove.enabled": "always",
    "emmet.excludeLanguages": [
        "javascript",
        "typescript",
        "markdown"
    ],
    "emmet.showExpandedAbbreviation": "inMarkupAndStylesheetFilesOnly",
    "emmet.optimizeStylesheetParsing": false,
    "window.zoomLevel": 0
}

Version 1.24.1
Commit 24f6262
Date 2018-06-13T17:51:32.889Z
Shell 1.7.12
Renderer 58.0.3029.110
Node 7.9.0
Architecture x64

I have tried bottom and top. I got top suggestion from stackoverflow, and my original configuration was bottom.

But when I set it to bottom or inline, this happens:

image

and I have this

	"React template": {
		"prefix": "@react",
		"body": [
			"import * as React from 'react'",
			"",
			"interface IProps {",
			"}",
			"",
			"interface IState {",
			"}",
			"",
			"export class $1 extends React.Component<IProps, IState> {",
			"\tconstructor(props: IProps) {",
			"\t\tsuper(props);",
			"\t}",
			"",
			"\tpublic render() {",
			"\t\treturn <div>$1</div>",
			"\t}",
			"}"
		]
	}

All my snippets are prefixed by @

So I guess I can't put snippet on bottom either.

But really, you SHOULD NOT, and MUST NOT use fuzzy search on completion. I haven't seen any single IDE, Atom, Eclipse, Netbeans, or anything that use fuzzy search because it could interfere with our work. Also, I don't think anyone care to press down arrow to pick anything in that list. It takes too much time and work than to type the next letter or the correct thing. I personally won't take out my hand from my keyboard area and reach for arrow pad only to search for fuzzy matches. It is faster for me to erase the entire word and retype, and when autocomplete gave me the correct word on top, I press tab. If it is not, I would type the whole word myself, and press space, colon, or whatever required next to finish it, since, obviously, intellisense has failed.

And if you are asking, I am complaining on BOTH. Why should you use fuzzy matching, and why you can put snippet or anything (not only snippets, and the title clearly stated auto-completion. Not limited to snippets, since sometimes I also encountered something else there) on top when my typed words clearly doesn't have anything to do with private? Even if I put "top" in my configuration, it MUST NOT do that, since we have an exact match. And when I put a "space" there, the word "prev" disappeared from suggestions, and I left only with private. Shouldn't it just disappeared along with my space? Or is that VSCode trying to outsmart me again? And NO IDE, has ever interfered with that. Even the smartest one that I have used, webstorm, has never forced its suggestion on me when I finish my word.

I don't remember having this problem before, and I've been using VScode for some time. Then suddenly, yesterday it behaves like that. I don't remember having any update or not, but I have habit to press update whenever I see them. So I guess this is the newest one.

And really, you should only do STRICT matches.

@jrieken
Copy link
Member

jrieken commented Jun 22, 2018

But really, you SHOULD NOT, and MUST NOT use fuzzy search on completion. I haven't seen any single IDE, Atom, Eclipse, Netbeans, or anything that use fuzzy search because it could interfere with our work

Look at Sublime Text.

Also, I don't think anyone care to press down arrow to pick anything in that list. It takes too much time and work than to type the next letter or the correct thing.

Yeah, nobody wants that and that's why we work hard to ensure the best match is placed on top. Before you throw another sample at me, can you answer my questions regarding your initial comment. With what value of editor.snippetSuggestions did that happen?

And when I put a "space" there, the word "prev" disappeared from suggestions, and I left only with private. Shouldn't it just disappeared along with my space? Or is that VSCode trying to outsmart me again?

The text left of your cursor is matched against each suggestion. In that sample it is prev<space> and I don't see a space in prev<end> but one in private<space>method<end>. That's why there is only one suggestion left.

And if you are asking, I am complaining on BOTH.

https://github.com/Microsoft/vscode/wiki/Submitting-Bugs-and-Suggestions#writing-good-bug-reports-and-feature-requests

@prd0000
Copy link
Author

prd0000 commented Jun 23, 2018

When it happened, it was set on top. But I lost my snippet when I set to inline or bottom.

Well, just remove that fuzzy search, or put an option to turn it off. That the source of all problem, both completion noise and unrelated items on top, including snippets, also missing snippet prefix. I guess intellisense was trying to be so smart and correct that @ prefix? By turning it off I like it was, you should be able to fix all problem. Do strict matching and honor my keywords. Like prev, or @react, or const. Fuzzy matching would only make job harder, instead of useful, unless you want to move your hand to a mouse or arrow keys to pick from list. Case insensitive matching is alright, but messing with character is a no no.

@harry-sm
Copy link

This is the exact reason why I don't install snippet packs.

@jrieken
Copy link
Member

jrieken commented Jun 25, 2018

...also missing snippet prefix. I guess intellisense was trying to be so smart and correct that @ prefix?

No, my guess is that is: #37166. Assuming this is JavaScript/Typescript the issue is that TypeScript registers @ as completion trigger character and that this excludes snippets.

@jrieken
Copy link
Member

jrieken commented Jun 25, 2018

@ as completion trigger character and that this excludes snippets.

fyi - I have pushed a change to ensure snippets that start with a completion character show.

@jrieken
Copy link
Member

jrieken commented Jun 25, 2018

I have extracted a feature request about having a setting to disable graceful matching to this issue #52789. Given that issue and the change mentioned above resolves this item.

@jrieken jrieken closed this as completed Jun 25, 2018
@jrieken jrieken added the *duplicate Issue identified as a duplicate of another issue(s) label Jun 25, 2018
@lazarillo
Copy link

I am glad that @jrieken has opened the issue, that's great! I was having the same frustrations as @prd0000 and asked at SO in hopes that I simply didn't understand how it worked before thinking of submitting an issue.

I guess what's frustrating is the initial reaction. VS Code is really great. Absolutely! But this fuzzy autocomplete to me is a disaster. @Cirieno , @prd0000 and I might be in the minority on that viewpoint, but in my case and I suspect in theirs, this is such a major issue that it is severely debilitating. I have typos all the time due to it. To have @jrieken 's initial comments come across as "it's working properly, the problem is that you cannot submit a proper bug report" is frustrating. Yes, we're only putting in an issue, not resolving it. But submitting issues is also a valuable part of the process. Can we appreciate the submitter a little bit as well as those who ultimately put in the fixes?

@vscodebot vscodebot bot locked and limited conversation to collaborators Aug 9, 2018
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
*duplicate Issue identified as a duplicate of another issue(s) info-needed Issue requires more information from poster suggest IntelliSense, Auto Complete
Projects
None yet
Development

No branches or pull requests

6 participants