Just started using ST2 for CFML etc. and love it. Impressed with everything it can do and how it can be customized. But I did come across one shortcoming that I can’t believe there’s not a package for.
When you want to enter HTML special characters like " etc. there’s no autocomplete. I type & and nothing happens. I’ve searched and searched for a solution. What am I missing?
Is making a autocomplete file more complicated because I want to see the actual character and insert the code. I’ve tried encode but it’s not what I’m looking for- as I then have to figure out how to type in a weird character Omega, umlaut whatever…
Thanks for any ideas / help
Autocomplete of &... special characters
How to add autocompletions?
Some characters are defined as word separators. As such, I don’t believe they will trigger completions, even if they do exist. Try creating a syntax specific setting (though you could just make it a user setting if you want). You will modify the “word_separators” entry. The value for this entry will be “./\()”’-:,.;<>~!@#$%^*|+=]{}`~?". I just removed the ampersand from the default settings.
Thanks. I removed the & from word_separators string in my preferences.sublime-settings file and restarted ST2 as suggested.
Still no autocomplete on &. So I’m guessing by this that all I need now is an autocomplete file that has those definitions in it.
I’m using the coldfusion package. Shouldn’t autocomplete for & characters be in an HTML package or somewhere. Thx Again
You can quite easily create auto complete definitions by yourself by creating files with the .sublime-completions extension in your user packages folder.
While you are in Sublime press Ctrl + Shift + P to bring up the command palette.
Type in “Browse” and you should see an option named “Preferences: Brows Packages”.
Press enter on that option and your packages folder should open up in an explorer window.
Now go into the “User” folder and create an “HTML.sublime-completions” file.
It can be called anything really, just as long as it has the “.sublime-completions” extension.
Now copy and paste the following code into the file and save it:
{
"scope": "text.html",
"completions":
{ "trigger": "á", "contents": "á" },
{ "trigger": "Á", "contents": "Á" },
{ "trigger": "Â", "contents": "Â" },
{ "trigger": "â", "contents": "â" },
{ "trigger": "´", "contents": "´" },
{ "trigger": "Æ", "contents": "Æ" },
{ "trigger": "æ", "contents": "æ" },
{ "trigger": "à", "contents": "à" },
{ "trigger": "À", "contents": "À" },
{ "trigger": "ℵ", "contents": "ℵ" },
{ "trigger": "Α", "contents": "Α" },
{ "trigger": "α", "contents": "α" },
{ "trigger": "&", "contents": "&" },
{ "trigger": "∧", "contents": "∧" },
{ "trigger": "∠", "contents": "∠" },
{ "trigger": "'", "contents": "'" },
{ "trigger": "å", "contents": "å" },
{ "trigger": "Å", "contents": "Å" },
{ "trigger": "≈", "contents": "≈" },
{ "trigger": "Ã", "contents": "Ã" },
{ "trigger": "ã", "contents": "ã" },
{ "trigger": "Ä", "contents": "Ä" },
{ "trigger": "ä", "contents": "ä" },
{ "trigger": "„", "contents": "„" },
{ "trigger": "β", "contents": "β" },
{ "trigger": "Β", "contents": "Β" },
{ "trigger": "¦", "contents": "¦" },
{ "trigger": "•", "contents": "•" },
{ "trigger": "∩", "contents": "∩" },
{ "trigger": "ç", "contents": "ç" },
{ "trigger": "Ç", "contents": "Ç" },
{ "trigger": "¸", "contents": "¸" },
{ "trigger": "¢", "contents": "¢" },
{ "trigger": "χ", "contents": "χ" },
{ "trigger": "Χ", "contents": "Χ" },
{ "trigger": "ˆ", "contents": "ˆ" },
{ "trigger": "♣", "contents": "♣" },
{ "trigger": "≅", "contents": "≅" },
{ "trigger": "©", "contents": "©" },
{ "trigger": "↵", "contents": "↵" },
{ "trigger": "∪", "contents": "∪" },
{ "trigger": "¤", "contents": "¤" },
{ "trigger": "‡", "contents": "‡" },
{ "trigger": "†", "contents": "†" },
{ "trigger": "↓", "contents": "↓" },
{ "trigger": "⇓", "contents": "⇓" },
{ "trigger": "°", "contents": "°" },
{ "trigger": "δ", "contents": "δ" },
{ "trigger": "Δ", "contents": "Δ" },
{ "trigger": "♦", "contents": "♦" },
{ "trigger": "÷", "contents": "÷" },
{ "trigger": "é", "contents": "é" },
{ "trigger": "É", "contents": "É" },
{ "trigger": "ê", "contents": "ê" },
{ "trigger": "Ê", "contents": "Ê" },
{ "trigger": "è", "contents": "è" },
{ "trigger": "È", "contents": "È" },
{ "trigger": "∅", "contents": "∅" },
{ "trigger": " ", "contents": " " },
{ "trigger": " ", "contents": " " },
{ "trigger": "ε", "contents": "ε" },
{ "trigger": "Ε", "contents": "Ε" },
{ "trigger": "≡", "contents": "≡" },
{ "trigger": "Η", "contents": "Η" },
{ "trigger": "η", "contents": "η" },
{ "trigger": "ð", "contents": "ð" },
{ "trigger": "Ð", "contents": "Ð" },
{ "trigger": "ë", "contents": "ë" },
{ "trigger": "Ë", "contents": "Ë" },
{ "trigger": "€", "contents": "€" },
{ "trigger": "∃", "contents": "∃" },
{ "trigger": "ƒ", "contents": "ƒ" },
{ "trigger": "∀", "contents": "∀" },
{ "trigger": "½", "contents": "½" },
{ "trigger": "¼", "contents": "¼" },
{ "trigger": "¾", "contents": "¾" },
{ "trigger": "⁄", "contents": "⁄" },
{ "trigger": "Γ", "contents": "Γ" },
{ "trigger": "γ", "contents": "γ" },
{ "trigger": "≥", "contents": "≥" },
{ "trigger": ">", "contents": ">" },
{ "trigger": "↔", "contents": "↔" },
{ "trigger": "⇔", "contents": "⇔" },
{ "trigger": "♥", "contents": "♥" },
{ "trigger": "…", "contents": "…" },
{ "trigger": "Í", "contents": "Í" },
{ "trigger": "í", "contents": "í" },
{ "trigger": "î", "contents": "î" },
{ "trigger": "Î", "contents": "Î" },
{ "trigger": "¡", "contents": "¡" },
{ "trigger": "Ì", "contents": "Ì" },
{ "trigger": "ì", "contents": "ì" },
{ "trigger": "ℑ", "contents": "ℑ" },
{ "trigger": "∞", "contents": "∞" },
{ "trigger": "∫", "contents": "∫" },
{ "trigger": "ι", "contents": "ι" },
{ "trigger": "Ι", "contents": "Ι" },
{ "trigger": "¿", "contents": "¿" },
{ "trigger": "∈", "contents": "∈" },
{ "trigger": "Ï", "contents": "Ï" },
{ "trigger": "ï", "contents": "ï" },
{ "trigger": "Κ", "contents": "Κ" },
{ "trigger": "κ", "contents": "κ" },
{ "trigger": "Λ", "contents": "Λ" },
{ "trigger": "λ", "contents": "λ" },
{ "trigger": "⟨", "contents": "⟨" },
{ "trigger": "«", "contents": "«" },
{ "trigger": "←", "contents": "←" },
{ "trigger": "⇐", "contents": "⇐" },
{ "trigger": "⌈", "contents": "⌈" },
{ "trigger": "“", "contents": "“" },
{ "trigger": "≤", "contents": "≤" },
{ "trigger": "⌊", "contents": "⌊" },
{ "trigger": "∗", "contents": "∗" },
{ "trigger": "◊", "contents": "◊" },
{ "trigger": "‎", "contents": "‎" },
{ "trigger": "‹", "contents": "‹" },
{ "trigger": "‘", "contents": "‘" },
{ "trigger": "<", "contents": "<" },
{ "trigger": "¯", "contents": "¯" },
{ "trigger": "—", "contents": "—" },
{ "trigger": "µ", "contents": "µ" },
{ "trigger": "·", "contents": "·" },
{ "trigger": "−", "contents": "−" },
{ "trigger": "μ", "contents": "μ" },
{ "trigger": "Μ", "contents": "Μ" },
{ "trigger": "∇", "contents": "∇" },
{ "trigger": " ", "contents": " " },
{ "trigger": "–", "contents": "–" },
{ "trigger": "≠", "contents": "≠" },
{ "trigger": "∋", "contents": "∋" },
{ "trigger": "¬", "contents": "¬" },
{ "trigger": "∉", "contents": "∉" },
{ "trigger": "⊄", "contents": "⊄" },
{ "trigger": "ñ", "contents": "ñ" },
{ "trigger": "Ñ", "contents": "Ñ" },
{ "trigger": "ν", "contents": "ν" },
{ "trigger": "Ν", "contents": "Ν" },
{ "trigger": "Ó", "contents": "Ó" },
{ "trigger": "ó", "contents": "ó" },
{ "trigger": "ô", "contents": "ô" },
{ "trigger": "Ô", "contents": "Ô" },
{ "trigger": "œ", "contents": "œ" },
{ "trigger": "Œ", "contents": "Œ" },
{ "trigger": "Ò", "contents": "Ò" },
{ "trigger": "ò", "contents": "ò" },
{ "trigger": "‾", "contents": "‾" },
{ "trigger": "ω", "contents": "ω" },
{ "trigger": "Ω", "contents": "Ω" },
{ "trigger": "ο", "contents": "ο" },
{ "trigger": "Ο", "contents": "Ο" },
{ "trigger": "⊕", "contents": "⊕" },
{ "trigger": "∨", "contents": "∨" },
{ "trigger": "ª", "contents": "ª" },
{ "trigger": "º", "contents": "º" },
{ "trigger": "Ø", "contents": "Ø" },
{ "trigger": "ø", "contents": "ø" },
{ "trigger": "õ", "contents": "õ" },
{ "trigger": "Õ", "contents": "Õ" },
{ "trigger": "⊗", "contents": "⊗" },
{ "trigger": "ö", "contents": "ö" },
{ "trigger": "Ö", "contents": "Ö" },
{ "trigger": "¶", "contents": "¶" },
{ "trigger": "∂", "contents": "∂" },
{ "trigger": "‰", "contents": "‰" },
{ "trigger": "⊥", "contents": "⊥" },
{ "trigger": "Φ", "contents": "Φ" },
{ "trigger": "φ", "contents": "φ" },
{ "trigger": "π", "contents": "π" },
{ "trigger": "Π", "contents": "Π" },
{ "trigger": "ϖ", "contents": "ϖ" },
{ "trigger": "±", "contents": "±" },
{ "trigger": "£", "contents": "£" },
{ "trigger": "′", "contents": "′" },
{ "trigger": "″", "contents": "″" },
{ "trigger": "∏", "contents": "∏" },
{ "trigger": "∝", "contents": "∝" },
{ "trigger": "Ψ", "contents": "Ψ" },
{ "trigger": "ψ", "contents": "ψ" },
{ "trigger": """, "contents": """ },
{ "trigger": "√", "contents": "√" },
{ "trigger": "⟩", "contents": "⟩" },
{ "trigger": "»", "contents": "»" },
{ "trigger": "→", "contents": "→" },
{ "trigger": "⇒", "contents": "⇒" },
{ "trigger": "⌉", "contents": "⌉" },
{ "trigger": "”", "contents": "”" },
{ "trigger": "ℜ", "contents": "ℜ" },
{ "trigger": "®", "contents": "®" },
{ "trigger": "⌋", "contents": "⌋" },
{ "trigger": "Ρ", "contents": "Ρ" },
{ "trigger": "ρ", "contents": "ρ" },
{ "trigger": "‏", "contents": "‏" },
{ "trigger": "›", "contents": "›" },
{ "trigger": "’", "contents": "’" },
{ "trigger": "‚", "contents": "‚" },
{ "trigger": "š", "contents": "š" },
{ "trigger": "Š", "contents": "Š" },
{ "trigger": "⋅", "contents": "⋅" },
{ "trigger": "§", "contents": "§" },
{ "trigger": "­", "contents": "­" },
{ "trigger": "Σ", "contents": "Σ" },
{ "trigger": "σ", "contents": "σ" },
{ "trigger": "ς", "contents": "ς" },
{ "trigger": "∼", "contents": "∼" },
{ "trigger": "♠", "contents": "♠" },
{ "trigger": "⊂", "contents": "⊂" },
{ "trigger": "⊆", "contents": "⊆" },
{ "trigger": "∑", "contents": "∑" },
{ "trigger": "¹", "contents": "¹" },
{ "trigger": "²", "contents": "²" },
{ "trigger": "³", "contents": "³" },
{ "trigger": "⊃", "contents": "⊃" },
{ "trigger": "⊇", "contents": "⊇" },
{ "trigger": "ß", "contents": "ß" },
{ "trigger": "τ", "contents": "τ" },
{ "trigger": "Τ", "contents": "Τ" },
{ "trigger": "∴", "contents": "∴" },
{ "trigger": "Θ", "contents": "Θ" },
{ "trigger": "θ", "contents": "θ" },
{ "trigger": "ϑ", "contents": "ϑ" },
{ "trigger": " ", "contents": " " },
{ "trigger": "þ", "contents": "þ" },
{ "trigger": "Þ", "contents": "Þ" },
{ "trigger": "˜", "contents": "˜" },
{ "trigger": "×", "contents": "×" },
{ "trigger": "™", "contents": "™" },
{ "trigger": "ú", "contents": "ú" },
{ "trigger": "Ú", "contents": "Ú" },
{ "trigger": "⇑", "contents": "⇑" },
{ "trigger": "↑", "contents": "↑" },
{ "trigger": "û", "contents": "û" },
{ "trigger": "Û", "contents": "Û" },
{ "trigger": "ù", "contents": "ù" },
{ "trigger": "Ù", "contents": "Ù" },
{ "trigger": "¨", "contents": "¨" },
{ "trigger": "ϒ", "contents": "ϒ" },
{ "trigger": "υ", "contents": "υ" },
{ "trigger": "Υ", "contents": "Υ" },
{ "trigger": "Ü", "contents": "Ü" },
{ "trigger": "ü", "contents": "ü" },
{ "trigger": "℘", "contents": "℘" },
{ "trigger": "Ξ", "contents": "Ξ" },
{ "trigger": "ξ", "contents": "ξ" },
{ "trigger": "ý", "contents": "ý" },
{ "trigger": "Ý", "contents": "Ý" },
{ "trigger": "¥", "contents": "¥" },
{ "trigger": "ÿ", "contents": "ÿ" },
{ "trigger": "Ÿ", "contents": "Ÿ" },
{ "trigger": "Ζ", "contents": "Ζ" },
{ "trigger": "ζ", "contents": "ζ" },
{ "trigger": "‍", "contents": "‍" },
{ "trigger": "‌", "contents": "‌" }
]
}
I got these entities from a list I found and copied from Google, then just put them in the correct JSON format for a .sublime-completions file.
You will need to keep the & character out of your word separator list as stated above otherwise the auto-completions won’t work since they start with &.
Now all you need to do is type & and choose the correct auto-completion.
If the auto-completion box doesn’t appear, try pressing Ctrl + Space while the caret is immediately after the & sign or whatever you want to complete.
It is possible to define all of these completions without the “trigger” and “contents” parts, but I left them in so you can easily change things if you want.
For example you could remove all of the & and ; signs from the triggers so that “amp” would auto-complete for “&”.
That’s actually the way I would personally do it since it saves on typing the & sign to start the auto-completion and it means you don’t have to mess around with the word separator symbols.
But like I said, I thought I would leave them in so you can change it in any way you want.