diff options
Diffstat (limited to 'doc/julia-vim-L2U.txt')
-rw-r--r-- | doc/julia-vim-L2U.txt | 405 |
1 files changed, 405 insertions, 0 deletions
diff --git a/doc/julia-vim-L2U.txt b/doc/julia-vim-L2U.txt new file mode 100644 index 00000000..8f3a852c --- /dev/null +++ b/doc/julia-vim-L2U.txt @@ -0,0 +1,405 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'julia') == -1 + +*julia-vim-L2U.txt* Support for LaTeX-to-Unicode substitutions + +Author: Carlo Baldassi <carlobaldassi@gmail.com> +License: MIT license {{{ + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +}}} +CONTENTS *julia-vim-L2U* + +LaTeX-to-Unicode substitutions |julia-vim-L2U-introdction| + Via Tab key |julia-vim-L2U-tab| + As you type |julia-vim-L2U-as-you-type| + Via Keymap |julia-vim-L2U-keymap| + On different file types |julia-vim-L2U-file-types| + Enabling and disabling |julia-vim-L2U-enable-disable| +Variables |julia-vim-L2U-variables| +Functions |julia-vim-L2U-functions| + +============================================================================== +LATEX TO UNICODE *julia-vim-L2U-introduction* + +In the Julia REPL, entering a LaTeX-like sequence such as `\alpha` and pressing +the <Tab> key substitutes it with a Unicode character such as `α`. The Julia +REPL also provides partial completions, and suggestions for possible +completions upon repeated pressing of the <Tab> key. Emojis are also +available, with their names written between colons, e.g. `\:interrobang:` +produces `⁉`. + +See |julia-vim-L2U-reference| for the complete table of substitutions. + +This Vim plug-in also provides the functionality needed to convert LaTeX +input sequences into Unicode characters. There are 3 different methods +available: + + 1. The default one is the most similar to the Julia one: substitutions are + triggered by pressing the <Tab> key; if a partial match is found a list + of suggested completions is presented in a menu together with their + Unicode counterpart. The exact behaviour of this feature can be + customized, see |julia-vim-L2U-tab|. + + 2. The second one substitutes symbols on the fly as you type, but only in + |Insert| mode. See |julia-vim-L2U-as-you-type|. + + 3. The third is based on |keymap|. It also substitutes as-you-type, but it + doesn't show you the full LaTeX sequence as you're typing it, and there + is a time-out. Its main advantage over the previous one is that can be + used in more circumstances, e.g. in |Command-line| mode or when searching + for a character with |f| or |t|, as explained in |language-mapping|. See + |julia-vim-L2U-keymap|. + +All of these methods are independent and can be used together without issues. + +The default configuration is to use the first method, and it's only active +when editing Julia files. It only works in |Insert| and |Command-line| modes. + +It is possible to enable it with other file types, see +|julia-vim-L2U-file-types|, and it can be even turned on/off on the fly +regardless of the file type, see |julia-vim-L2U-enable-disable|. + +In |Command-line| mode, e.g. when searching with the |/| or |?| commands, the +default behavior is very similar to the default |Insert| mode behavior, but +slightly more limited, see |julia-vim-L2U-cmdmode|. + +These features only work as described with Vim version 7.4 or higher. Tab +completion can still be made available on lower Vim versions, see +|julia-vim-L2U-workaround|. The keymap mode might work but it hasn't been +tested. + +See |julia-vim| for the general reference about the other features of the +julia-vim plug-in. + +------------------------------------------------------------------------------ +LATEX TO UNICODE VIA TAB KEY *julia-vim-L2U-tab* + +Substitution of LaTeX sequences when pressing the <Tab> key (in |Insert| mode or +in |Command-line| modes) is active by default. Use |g:latex_to_unicode_tab| to +control it. + +When this feature is active, the julia-vim plug-in creates a mapping for the +<Tab> key (in |Insert| mode) which takes precedence on any previously defined +mapping assigned to it, such that when the <Tab> key is pressed the plug-in +looks for potential LaTeX symbol matches before the cursor, and if it fails to +find anything of interest it will fall-back to the previous mapping for <Tab> +(with default Vim settings, this means it will insert a literal <Tab>; but if +you have defined some other behavior for that key, e.g. by installing another +plug-in such as supertab (https://github.com/ervandew/supertab) than that will +be used). + +For example, entering this text in a file: +> + 1 + \alpha +< +and then pressing <Tab>, results in: +> + 1 + α +< + +This feature is associated with 'omnifunc' completion, and therefore can +always be accessed via CTRL-X CTRL-O, even when |g:latex_to_unicode_tab| is 0. + +A literal <Tab> key can always be entered by using CTRL-V before <Tab> (see +|i_CTRL-V|). + +Partial sequence recognition triggers auto-completion (performed as if the +`longest` setting was used in 'completeopt') and shows a menu of suggestions +together with their corresponding Unicode symbol (provided the `menu` setting +is included in 'completeopt', and more then one match is found). So for +example, entering `\al` and pressing <Tab> will result in the following list: +> + +-------------+ + | \aleph ℵ | + | \allequal ≌ | + | \alpha α | + +-------------+ +> +Then, pressing `p` will reduce the list to `\alpha`, pressing <Tab> will +complete it and pressing <Tab> again will perform the substitution. + +The completion menu can be disbled, and this will happen automatically if a +plug-in which is known to be incompatible with this feature is detected: see +|g:latex_to_unicode_suggestions|. + +Some LaTeX sequences can be valid both as they are and as partial matches for +other sequences, e.g. `\ne` is associated with `≠`, but it is also a partial +match for `\nequiv` (`≢`). By default, if <Tab> finds an exact match performs +the substitution, but this can be controlled by the |g:latex_to_unicode_eager| +setting. + +Command-line mode *julia-vim-L2U-cmdmode* + +In |Command-line| mode, the behavior is largely the same except that both +<Tab> and <S-Tab> are mapped by default, and the functionality is slightly +more limited. No suggestions are shown for partial completions. Pre-existing +user-defined mappings of <Tab> are overridden. In order to avoid that, the +completion can be mapped onto a defferent key combination, see +|g:latex_to_unicode_cmd_mapping|. When using <Tab>, if no matches are found +the behavior falls back to the standard Vim command-line completion. + +Vim versions lower than 7.4 *julia-vim-L2U-workaround* + +The <Tab> key remapping is not performed by default with Vim versions lower +than 7.4. However, the functionality is still available via onmicompletion, +which is accessible by the CTRL-X CTRL-O key combination. You can map some +other key combination to this by adding something like +> + inoremap <C-Tab> <C-X><C-O> +< +in your |.vimrc| file. If you'd map <Tab> directly, then you'd need to use +CTRL-V <Tab> to insert a literal <Tab>. + +The settings |g:latex_to_unicode_eager| and |g:latex_to_unicode_suggestions| +are still meaningful in this case. + +------------------------------------------------------------------------------ +LATEX TO UNICODE AS YOU TYPE *julia-vim-L2U-as-you-type* + +This feature is disabled by default, see |g:latex_to_unicode_auto|, and it is +only available with Vim version 7.4 or higher. It consists in substituting +valid LaTeX sequences with Unicode symbols automatically as the typing +progresses, as soon as the sequences is unambiguously complete. For example, +when typing: +> + \chi\^2 = 1 +< +The result is +> + χ² = 1 +< +The `\chi` is substituted right when the second backslash is entered, and the +`\^2` is substituted when the following space is entered, before the equal +sign. + +This feature does not currently work with emojis. + +This feature does not interfere with the <Tab> based substitution. + +------------------------------------------------------------------------------ +LATEX TO UNICODE VIA KEYMAP *julia-vim-L2U-keymap* + +This method is somewhat similar to the as-you-type one described above, but it +uses |keymap| to generate the mappings. This has the advantage that it works +in more circumstances, e.g. in |Command-line| mode or when searching within a +line with |f| or |t| (since it uses |language-mapping| underneath). It can +also be easily turned on or off like any other keymap (see |i_CTRL-^| and +|c_CTRL-^|). Like the as-you-type fature, it doesn't work with emojis. +The disadvantage is that you don't see the whole sequence as you're typing +it, and you can't fix mistakes with backspace, for example. +Another difference is that there is a |timeout| like for any other mapping. + +In order to use this method, set |g:latex_to_unicode_keymap| to `1`. +You can use it in parallel with the other methods, they don't interfere. For +example, typing a partial sequence and pressing <Tab> still triggers +completions and suggestions if |g:latex_to_unicode_tab| is active. + +If you use this feature, it's also useful to set |lCursor|. + +------------------------------------------------------------------------------ +LATEX TO UNICODE ON DIFFERENT FILE TYPES *julia-vim-L2U-file-types* + +By default, the LaTeX-to-Unicode substitutions are only active when editing +Julia files. However, you can use the variable |g:latex_to_unicode_file_types| +to specify for which file types this feature is active by default. The +variable must be set to a string containing a |pattern| (a regular expression) +which matches the desired file types, or to a list of such patterns. For +example, to activate the feature on all file types by default, you could put +this in your |.vimrc| file: +> + let g:latex_to_unicode_file_types = ".*" +< +To make it active only on, say, Julia and Lisp files, you could use: +> + let g:latex_to_unicode_file_types = ["julia", "lisp"] +< + +Another option, |g:latex_to_unicode_file_types_blacklist|, can be used to +exclude certain file types. For example, if you'd wish to enable the feature +in all cases except for Python and untyped files, you would use: +> + let g:latex_to_unicode_file_types = ".*" + let g:latex_to_unicode_file_types_blacklist = ["python", ""] +< + +NOTE: enabling the functionality will override the |'omnifunc'| setting, which +can be undesirable, and interfere with plug-ins for different file types. In +any case, the previous |'omnifunc'| setting is restored when the functionality +is disabled, see |julia-vim-L2U-enable-disable|. + +------------------------------------------------------------------------------ +ENABLING AND DISABLING LATEX TO UNICODE *julia-vim-L2U-enable-disable* + +The LaTeX-to-Unicode functionality can be enabled or disabled at any time, +regardless of the |'filetype'| of the file you're editing, using the functions +|LaTeXtoUnicode#Enable()|, |LaTeXtoUnicode#Disable()|, |LaTeXtoUnicode#Toggle()|. +For example, you could use a mapping like: +> + noremap <expr> <F7> LaTeXtoUnicode#Toggle() + noremap! <expr> <F7> LaTeXtoUnicode#Toggle() +< +and then use the <F7> key to quickly switch the functionality on and off as +needed (see |noremap| and |noremap!|). + +NOTE: these functions are different from the variables |g:latex_to_unicode_tab|, +|g:latex_to_unicode_auto| and |g:latex_to_unicode_keymap|: the functions +enable/disable the functionality as a whole, while the variables control +individual features (tab, auto and keymap substitution). + +============================================================================== +VARIABLES *julia-vim-L2U-variables* + + *g:latex_to_unicode_tab* +g:latex_to_unicode_tab + + Determines whether to map LaTeX-to-Unicode substitution to the + <Tab> key while in |Insert| and |Command-line| modes, see + |julia-vim-L2U-tab|. If unspecified, it is on. You can disable + the feature by default by inserting the line +> + let g:latex_to_unicode_tab = 0 +< + in your |.vimrc| file. You can change this setting at any moment + while editing, but you need to invoke |LaTeXtoUnicode#Init()| + for the change to take effect. + + *g:latex_to_unicode_suggestions* +g:latex_to_unicode_suggestions + + Determines whether the <Tab> key mapping produces suggestions + for partial matches. By default, this is set to 1 (active), + unless a plug-in which is known to be incompatible with it is + detected. Currently, known incompatible plug-ins are + YouCompleteMe (https://github.com/Valloric/YouCompleteMe), + neocomplcache (https://github.com/Shougo/neocomplcache.vim), + neocomplete (https://github.com/Shougo/neocomplete.vim) and + deoplete (https://github.com/Shougo/deoplete.nvim), + + This variable can be set at any time, changes will immediately + take effect. + + *g:latex_to_unicode_eager* +g:latex_to_unicode_eager + + Determines whether the <Tab> key mapping performs the + substitution immediately upon finding an exact match. By + default this setting is set to 1 (active), so that e.g. typing + `\ne` and pressing the <Tab> key triggers the substitution. If + this variable is set to 0, an exact match which is also a + possible partial match to some other sequence triggers the + suggestions menu first, but another <Tab> forces the + substitution, so that e.g. typing `\ne` and then <Tab> + produces a list with `\ne`, `\neg`, `\nequiv` etc., and + pressing <Tab> again performs the substitution. + + This variable can be set at any time, changes will immediately + take effect. When |g:latex_to_unicode_suggestions| is `0`, + this setting has no effect (it's like if it was always on). + + *g:latex_to_unicode_auto* +g:latex_to_unicode_auto + + Determines whether to activate LaTeX-to-Unicode substitution + on the fly as you type (in |Insert| mode), see + |julia-vim-L2U-as-you-type|. If unspecified, it is `0` (off). + You can enable the feature by default by inserting the line +> + let g:latex_to_unicode_auto = 1 +< + in your |.vimrc| file. You can change this setting at any + moment while editing, but you need to invoke + |LaTeXtoUnicode#Init()| for the change to take effect. + + + *g:latex_to_unicode_keymap* +g:latex_to_unicode_keymap + + Determines whether to activate the |keymap|-based + LaTeX-to-Unicode substitutions, see |julia-vim-L2U-keymap|. + If unspecified, it is `0` (off). You can enable the feature by + default by inserting the line +> + let g:latex_to_unicode_keymap = 1 +< + in your |.vimrc| file. You can change this setting at any + moment while editing, but you need to invoke + |LaTeXtoUnicode#Init()| for the change to take effect. + + *g:latex_to_unicode_file_types* +g:latex_to_unicode_file_types + + Contains a |pattern|, or a list of patterns, which are matched + against the |'filetype'| to determine when to enable the + LaTeX-to-Unicode functionality, see |julia-vim-L2U-file-types|. + By default, its value is `"julia"`. The patterns provided must + match the whole filetype name. See also + |g:latex_to_unicode_file_types_blacklist|. + + *g:latex_to_unicode_file_types_blacklist* +g:latex_to_unicode_file_types_blacklist + + Same as |g:latex_to_unicode_file_types|, but acts in reverse: + it disables the LaTeX-to-Unicode functionality when the + |'filetype'| matches the provided pattern (or any of the + patterns if a list is provided). By default, it contains an + unmatchable pattern, i.e. it is effectively disabled. + + *g:latex_to_unicode_cmd_mapping* +g:latex_to_unicode_cmd_mapping + + Specifies the mapping (or list of mappings) for the + substitution in |Command-line| mode. By default, it is + `['<Tab>', '<S-Tab>']`, but it can be changed to avoid + overriding other user-defined mapping, e.g. to `'<S-Tab>'` + (if your terminal suppoorts it) or `'<C-\><Tab>'`. + The `'<Tab>'` (or to be more precise the |wildchar| key) and + `'<S-Tab>'` mappings are special in that they fall back to + performing default Vim completions in case no suitable + substitutions are found. + +============================================================================== +FUNCTIONS *julia-vim-L2U-functions* + + *LaTeXtoUnicode#Init()* +LaTeXtoUnicode#Init() + + Initialize or re-initialize the LaTeX-to-Unicode substitutions + (see |julia-vim-L2U-introduction|). Must be invoked after + changing |g:latex_to_unicode_tab| or |g:latex_to_unicode_auto| + to make the changes take effect. + + *LaTeXtoUnicode#Enable()* + *LaTeXtoUnicode#Disable()* + *LaTeXtoUnicode#Toggle()* +LaTeXtoUnicode#Enable() +LaTeXtoUnicode#Disable() +LaTeXtoUnicode#Toggle() + + These functions enable/disable/toggle the LaTeX-to-Unicode + functionality, regardless of the |'filetype'| specified in + |g:latex_to_unicode_file_types| and + |g:latex_to_unicode_file_types_blacklist|. See + |julia-vim-L2U-enable-disable|. Note that LaTeXtoUnicode#Enable() + will override the |'omnifunc'| definition, if present. However, + LaTeXtoUnicode#Disable() will restore it. + These functions implicitly invoke |LaTeXtoUnicode#Init()|. + + + vim:tw=78:et:ft=help:norl: + +endif |