How Notepad++ selects autocomplete?
-
Peter, I can’t tell what grateful I am for your extensive and clear reply!
So, everything works fine, but the autocomplete fails… :) I’m just showing you a few screens, probably you can spot some error I did not manage to recognize.
To check if folder locations are fine, here’s the UDL folder:
I don’t have userDefineLanguage.xml at all (deleted it beforehand).
And the autocomplete folder:
This one is my UDL file with the relevant parts:
And the autocomplete:
And this shows the example file with syntax recognized, but autocomplete not working (although it’s turned on and works for other langs):
Can you find any discrepancies here? I’ve exited and restarted Notepad++ after every operation as you also suggested.
Stay safe,
Gus -
@gusztavj said in How Notepad++ selects autocomplete?:
Can you find any discrepancies here?
Sorry, everything looks right.
Did you re-start Notepad++ after putting the UDL and autoCompletion XML files in the right folders?
Could you screenshot your Settings > Preferences > Auto-completion settings?
Could you copy/paste your ?-menu’s Debug Info?
-
@PeterJones said in How Notepad++ selects autocomplete?:
Did you re-start Notepad++ after putting the UDL and autoCompletion XML files in the right folders?
Sorry, I re-read and saw you’d already answered that one.
The more I thought about this not working for you, the more confused I got. I don’t see why it wouldn’t be working… if you’re in a version of Notepad++ new enough that it comes with the
autoCompletion\
folder (it used to be named something else), then all the syntax shown should work.I decided to bundle up a zipfile of my working portable version. So for the next week or so, the URL
will download a zipfile with a complete portable, including myURL REDACTED
autoCompletion\weirdAl.xml
anduserDefineLangs\weirdAl-udl.xml
. When I unzip these to a known writeable location, then run the portable notepad++.exe from the unzipped folder, if I useCtrl+Shift+Space
inside thegrapefruitDiet()
parentheses, it pops up the parameter-hint auto-completion, and if I start typing thet
,i
, org
that start the three function keywords, the function-name auto-completion pops up. Since the portable zip contains all the config files including sessions, etc, you should be in a state to immediately test this working copy after unzipping.caveat
It’s always dangerous to download files from unknown sources. I am claiming that I haven’t done anything malicious in this zipfile, but you need to use download wisdom. It is my recommendation to at the very least run a virus checker on the zipfile and the unzipped contents.
Future Readers: The download will go away in the near future, so you will likely get 404-not-found.
-
Thanks for the response again. I have NP++ 7.9.5, and here are my autocomplete settings, seemingly the same as yours:
The portable version just works fine. I’ll try to add my files to the portable instance and see if it works, and let you know about it.
Cheers,
Gus -
@PeterJones, this is what I found: autocomplete does not work if the language, as defined in the UDL file, contains keywords with a hyphen in it. The actually weird language for what I wanted to create an autocomplete file includes lot of keywords of this kind, such as “category-keyword”. For these, no autocomplete tip will pop up. Even worse, the values of these so-called tags are followed by a space, so a line of the file looks like this:
category-keyword “value”
or
position 0, 1, 0Now it would be okay to type a ( character after a tag name to display the hint, but the hyphen makes this language incompatible with the auto-complete logic. :(
Anyway, thanks a lot for your efforts in explaining this whole situation.
-
@gusztavj said in How Notepad++ selects autocomplete?:
autocomplete does not work if the language, as defined in the UDL file, contains keywords with a hyphen in it.
That should be an easy fix. In the
autoCompletion\weirdAl.xml
file, add theadditionalWordChars="-"
parameter like so:<?xml version="1.0" encoding="UTF-8" ?> <NotepadPlus> <AutoComplete language="weirdAl"> <Environment ignoreCase="no" ..... additionalWordChars="-"/> <KeyWord name=" ...
I have an autoCompletion file for Powerwhell and most Powershell commands are Verb-Thing (e.g.,
Write-Host
,Get-Item
) so I include theadditionalWordChars="-"
and it works for me.Cheers.
-
@Michael-Vincent said in How Notepad++ selects autocomplete?:
That should be an easy fix.
I wish it were! :) First, thanks for mentioning this attribute. I took a look at the source code, but did not recognized it. But unfortunately it still does not work for me. Here is my piece of code, the AC file:
<?xml version="1.0" encoding="UTF-8" ?> <NotepadPlus> <AutoComplete language="weirdAl"> <Environment ignoreCase="yes" startFunc="(" stopFunc=")" paramSeparator="," terminal=";" additionalWordChars="-"/> <KeyWord name="grapefruit-diet" func="yes"> <Overload retVal="" descr="drink grapefruit juice only"> <Param name="SeedlessStuff" /> </Overload> <Overload retVal="" descr="drink grapefruit only"> <Param name="Shapes" /> <Param name="Seasons" /> </Overload> </KeyWord> <KeyWord name="position" func="yes"> <Overload retVal="" descr="elements's position"> <Param name="on x axis" /> <Param name="on y axis" /> <Param name="on z axis" /> </Overload> </KeyWord> <KeyWord name="grapefruitDiet" func="yes"> <Overload retVal="" descr="eat grapefruit only"> <Param name="Seedless" /> </Overload> <Overload retVal="" descr="eat grapefruit only"> <Param name="Shape" /> <Param name="Season" /> </Overload> </KeyWord> </AutoComplete> </NotepadPlus>
It works for
grapefruitDiet
andposition
, but doesn’t offer anything forgrapefruit-diet
.Am I overlooking something?
Cheers.
Gus -
A small clarification: it offers the name
grapefruit-diet
, but does not show the overloads, so nothing appears after typing the bracket, pressing CTRL+SPACE or CTRL+SHIFT+SPACE. -
@gusztavj said in How Notepad++ selects autocomplete?:
Am I overlooking something?
Looks good, but I thought keywords needed to be in alphabetical order?
Cheers.
-
@Michael-Vincent , tried to move them around, to place
grapefruitDiet
beforegrapefruit-diet
and the other way around, but with no effect.grapefruitDiet
is always recognized, the other is never recognized. :( Became clueless again. Yet, thanks for your help and tips. -
And finally… I did not find the documentation page at https://npp-user-manual.org/docs/auto-completion/, only a link to a non-existing page. Now that I know the AC file needs to be named after the language name, life is much happier… :D
Thanks for all your great help!
-
@gusztavj said in How Notepad++ selects autocomplete?:
And finally… I did not find the documentation page at https://npp-user-manual.org/docs/auto-completion/, only a link to a non-existing page.
That page exists (I even just checked using your exact link). Maybe you encountered a brief time when there was a server problem…
-
@PeterJones Yes, it works, but beforehand I found a different link that was not working. :)
-
@PeterJones and @Michael-Vincent, would you mind if I summon you to see a new post of mine to see if you have an idea for another autocomplete issue? It’s different from this one and I did not want to mess up this thread with a different issue.