patch 8.0.1336: cannot use imactivatefunc() unless compiled with +xim
Problem: Cannot use imactivatefunc() unless compiled with +xim.
Solution: Allow using imactivatefunc() when not compiled with +xim.
(Yasuhiro Matsumoto, closes #2349)
diff --git a/runtime/doc/mbyte.txt b/runtime/doc/mbyte.txt
index 1c3e2b1..8a25d83 100644
--- a/runtime/doc/mbyte.txt
+++ b/runtime/doc/mbyte.txt
@@ -26,8 +26,9 @@
7. Input on X11 |mbyte-XIM|
8. Input on MS-Windows |mbyte-IME|
9. Input with a keymap |mbyte-keymap|
-10. Using UTF-8 |mbyte-utf8|
-11. Overview of options |mbyte-options|
+10. Input with imactivatefunc() |mbyte-func|
+11. Using UTF-8 |mbyte-utf8|
+12. Overview of options |mbyte-options|
NOTE: This file contains UTF-8 characters. These may show up as strange
characters or boxes when using another encoding.
@@ -1254,7 +1255,35 @@
ﭏ 0xfb4f Xal alef-lamed
==============================================================================
-10. Using UTF-8 *mbyte-utf8* *UTF-8* *utf-8* *utf8*
+10. Input with imactivatefunc() *mbyte-func*
+
+Vim has |imactivatefunc()| and |imstatusfunc()|. This is useful to
+activate/deativate input method from Vim in any way, also with an external
+command. For example, fcitx provide fcitx-remote command: >
+
+ set iminsert=2
+ set imsearch=2
+ set imcmdline
+
+ set imactivatefunc=ImActivate
+ function! ImActivate(active)
+ if a:active
+ call system('fcitx-remote -o')
+ else
+ call system('fcitx-remote -c')
+ endif
+ endfunction
+
+ set imstatusfunc=ImStatus
+ function! ImStatus()
+ return system('fcitx-remote')[0] is# '2'
+ endfunction
+
+Using this script, you can activate/deactivate XIM via Vim even when it is not
+compiled with |+xim|.
+
+==============================================================================
+11. Using UTF-8 *mbyte-utf8* *UTF-8* *utf-8* *utf8*
*Unicode* *unicode*
The Unicode character set was designed to include all characters from other
character sets. Therefore it is possible to write text in any language using
@@ -1402,7 +1431,7 @@
==============================================================================
-11. Overview of options *mbyte-options*
+12. Overview of options *mbyte-options*
These options are relevant for editing multi-byte files. Check the help in
options.txt for detailed information.
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index f9acff8..d71e7f9 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -4256,8 +4256,7 @@
'imactivatefunc' 'imaf' string (default "")
global
{not in Vi}
- {only available when compiled with |+xim| and
- |+GUI_GTK|}
+ {only available when compiled with |+mbyte|}
This option specifies a function that will be called to
activate/inactivate Input Method.
@@ -4308,8 +4307,7 @@
'imcmdline' 'imc' boolean (default off)
global
{not in Vi}
- {only available when compiled with the |+xim|,
- |+multi_byte_ime| or |global-ime| features}
+ {only available when compiled with |+mbyte|}
When set the Input Method is always on when starting to edit a command
line, unless entering a search pattern (see 'imsearch' for that).
Setting this option is useful when your input method allows entering
@@ -4320,8 +4318,7 @@
'imdisable' 'imd' boolean (default off, on for some systems (SGI))
global
{not in Vi}
- {only available when compiled with the |+xim|,
- |+multi_byte_ime| or |global-ime| features}
+ {only available when compiled with |+mbyte|}
When set the Input Method is never used. This is useful to disable
the IM when it doesn't work properly.
Currently this option is on by default for SGI/IRIX machines. This
@@ -4336,8 +4333,6 @@
0 :lmap is off and IM is off
1 :lmap is ON and IM is off
2 :lmap is off and IM is ON
- 2 is available only when compiled with the |+multi_byte_ime|, |+xim|
- or |global-ime|.
To always reset the option to zero when leaving Insert mode with <Esc>
this can be used: >
:inoremap <ESC> <ESC>:set iminsert=0<CR>
@@ -4350,6 +4345,10 @@
The value 0 may not work correctly with Athena and Motif with some XIM
methods. Use 'imdisable' to disable XIM then.
+ You can set 'imactivatefunc' and 'imstatusfunc' to handle IME/XIM
+ via external command if vim is not compiled with the |+xim|,
+ |+multi_byte_ime| or |global-ime|.
+
*'imsearch'* *'ims'*
'imsearch' 'ims' number (default -1)
local to buffer
@@ -4372,8 +4371,7 @@
'imstatusfunc' 'imsf' string (default "")
global
{not in Vi}
- {only available when compiled with |+xim| and
- |+GUI_GTK|}
+ {only available when compiled with |+mbyte|}
This option specifies a function that is called to obtain the status
of Input Method. It must return a positive number when IME is active.