Wednesday, July 1, 2020

Re: [typing Russian characters in vim with vim-LaTeX]

Am 27.06.2020 um 16:59 schrieb Maxim Abalenkov:
> Dear all,
>
> I hope all is well with you. This is my first post to the vim mailing
> list. I use vim for a long time and would consider myself a power
> user. Occasionally, I need to type documents in Russian in LaTeX
> format. To use Russian in vim I follow the guidelines from this Habr
> post (https://habr.com/ru/post/98393/). In short I have the following
> settings in my .vimrc file:
>
> set keymap=russian-jcukenmac
> set iminsert=0
> set imsearch=0
> highlight lCursor guifg=NONE guibg=Cyan
>
> With these settings in place I can use "Ctrl+^" to switch between
> English and Russian languages in vim insert mode. For convenient
> typing of LaTeX commands in vim I use the Vim-LaTeX distribution
> (https://sourceforge.net/projects/vim-latex/). The configuration
> commands relevant to vim-LaTeX in my .vimrc are:
>
> " envoke LaTeX-Suite on TeX file open
> filetype plugin on
>
> " load filetype-specific indent files
> filetype indent on
>
> " load vim-latex for empty TeX files
> let g:tex_flavor='latex'
>
> All is nice and well and I'm satisfied with this setup. However, there
> is one small problem that makes my life miserable. One of the Russian
> letters, the small letter «ю», is not typed correctly. When I press
> the relevant key on the keyboard I get a full stop symbol «.» instead
> of the small letter «ю». On the other hand, the capital letter «Ю»
> (when pressing the Shift key) is produced correctly. Would you please
> be so kind to help me debug the problem? Maybe I have some option
> clashes with the vim-LaTeX? Thank you and have a good day ahead!
>
> —
> Best wishes,
> Maxim
>
> Maxim Abalenkov \\ maxim.abalenkov@gmail.com <mailto:maxim.abalenkov@gmail.com>
> +44 7 486 486 505 \\ http://mabalenk.gitlab.io

This assumes vim-latex-1.10 ...


The keymap's (buffer-local) language mapping for `.' is overruled by a
buffer-local Insert mode mapping.


To show the problem: in a LaTeX (ft=tex) buffer:
:imap <buffer> .
(or just)
:imap .
shows something like (depending on g:Tex_SmartKeyDot)
<C-R>=<SNR>20_SmartDots()<CR>
or <C-R>=<SNR>12_LookupCharacter(".")<CR>


You can remove the Insert mode mapping after it gets defined:

Create a file
after/ftplugin/tex.vim
containing the line

iunmap <buffer> .

for example the file ~/.vim/after/ftplugin/tex.vim where
~/.vim/after must occur in the 'runtimepath'.

--------------------------------------------------------------
You can ignore what follows.

An alternative is to

put in the vimrc:
:let g:Tex_SmartKeyDot = 0

and to put in the after/ftplugin/tex.vim file:

" :echo IMAP_list_all('.')
" tex: "`. => "`.
" tex: \`. => \`.
" tex: ``. => ``.
" tex: `. => \cdot

if exists('*IUNMAP') && maparg('.', 'i') =~# '<SNR>\d\+_LookupCharacter("\.")'
call IUNMAP('"`.', 'tex')
call IUNMAP('\`.', 'tex')
call IUNMAP('``.', 'tex')
call IUNMAP('`.', 'tex')
endif


Would have been cleaner if there was an IUNMAP_ALL('.', 'tex') function ...

And not sure about the exact consequences ... the mapping for `.' is
created per buffer, but IMAP() creates internal data structures per
filetype.

--
Andy

--
--
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

---
You received this message because you are subscribed to the Google Groups "vim_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email to vim_use+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/vim_use/5EFCBA7C.9060602%40yahoo.de.

No comments:

Post a Comment