From 6b07b1e7289003641b060e6def1c80f08024e006 Mon Sep 17 00:00:00 2001 From: lilydjwg Date: Fri, 27 Jul 2012 00:00:00 +0000 Subject: [PATCH] Version 1.2 support to specify fcitx socket file by environment variable $FCITX_SOCKET --- README | 2 +- plugin/fcitx.vim | 32 +++++++++++++++++-------------- so/fcitx.vim | 49 ------------------------------------------------ 3 files changed, 19 insertions(+), 64 deletions(-) delete mode 100644 so/fcitx.vim diff --git a/README b/README index e70e982..9ec9912 100644 --- a/README +++ b/README @@ -12,7 +12,6 @@ Warning: 1, It will be faster and better with Python (3 or 2) enabled Vim. But some old version Vim enabled both Python 2 & 3 may have some issues. 2, If you use Vim in terminal, to avoid the Esc delay, please set 'ttimeoutlen' to 100 or some other value. And check screen's 'maptimeout' or tmux's 'escape-time' option if you use it too. - 在离开或重新进入插入模式时自动记录和恢复每个缓冲区各自的输入法状态,以便在普通模式下始终是英文输入模式,切换回插入模式时恢复离开前的输入法输入模式。 要求: fcitx 版本 3.6 以上,建议 fcitx 4.0 以上。 @@ -21,3 +20,4 @@ Warning: 1. Vim 如有 Python 3或2 支持可以获得更快更好的效果。但对于较旧的 Vim 版本,如果同时编译了 Python 2 & 3 支持,因为此 Vim 不能同时运行两个版本的 Python,而本脚本首先检查 Python 3,所以会导致出错或者 Python 2 不可用。 2. 终端下请设置 Vim 'ttimeoutlen' 选项为较小值(如100),否则退出插入模式时会有较严重的延迟。同样会造成延迟的还有 screen 的 maptimeout 选项以及 tmux 的 escape-time 选项。 +如果你需要跨主机使用 fcitx.vim,请参考此文: http://lilydjwg.is-programmer.com/2012/7/27/using-fcitx-remote-interface-remotely-via-socat.34729.html diff --git a/plugin/fcitx.vim b/plugin/fcitx.vim index e477704..295ede2 100644 --- a/plugin/fcitx.vim +++ b/plugin/fcitx.vim @@ -1,11 +1,11 @@ scriptencoding utf-8 " fcitx.vim remember fcitx's input state for each buffer " Author: lilydjwg -" Version: 1.1 +" Version: 1.2 " URL: http://www.vim.org/scripts/script.php?script_id=3764 " --------------------------------------------------------------------- " Load Once: -if &cp || exists("g:loaded_fcitx") || !exists('$DISPLAY') || exists('$SSH_TTY') +if &cp || exists("g:loaded_fcitx") || !exists('$DISPLAY') || exists('$SSH_TTY') || has('gui_macvim') finish endif if has("python3") @@ -19,18 +19,22 @@ endif let s:keepcpo = &cpo set cpo&vim " this is quicker than expand() -let s:fcitxsocketfile = '/tmp/fcitx-socket-' . $DISPLAY -if !filewritable(s:fcitxsocketfile) "try again - if strridx(s:fcitxsocketfile, '.') > 0 - let s:fcitxsocketfile = strpart(s:fcitxsocketfile, 0, - \ strridx(s:fcitxsocketfile, '.')) - else - let s:fcitxsocketfile = s:fcitxsocketfile . '.0' - if !filewritable(s:fcitxsocketfile) - echohl WarningMsg - echomsg "socket file of fcitx not found, fcitx.vim not loaded." - echohl None - finish +if exists('$FCITX_SOCKET') + let s:fcitxsocketfile = $FCITX_SOCKET +else + let s:fcitxsocketfile = '/tmp/fcitx-socket-' . $DISPLAY + if !filewritable(s:fcitxsocketfile) "try again + if strridx(s:fcitxsocketfile, '.') > 0 + let s:fcitxsocketfile = strpart(s:fcitxsocketfile, 0, + \ strridx(s:fcitxsocketfile, '.')) + else + let s:fcitxsocketfile = s:fcitxsocketfile . '.0' + if !filewritable(s:fcitxsocketfile) + echohl WarningMsg + echomsg "socket file of fcitx not found, fcitx.vim not loaded." + echohl None + finish + endif endif endif endif diff --git a/so/fcitx.vim b/so/fcitx.vim deleted file mode 100644 index 507fb4a..0000000 --- a/so/fcitx.vim +++ /dev/null @@ -1,49 +0,0 @@ -" fcitx.vim 记住插入模式小企鹅输入法的状态 -" Author: lilydjwg -" Maintainer: lilydjwg -" Last Change: 2010-11-18 -" Note: 另有使用 Python3 接口的新版本 -" --------------------------------------------------------------------- -" Load Once: -if (has("win32") || has("win95") || has("win64") || has("win16")) - " Windows 下不要载入 - finish -endif -if !exists('$DISPLAY') - " 没有 X,不要载入 - finish -endif -if &cp || exists("g:loaded_fcitx") || !executable("fcitx-remote") - finish -endif -let s:keepcpo = &cpo -let g:loaded_fcitx = 1 -set cpo&vim -" --------------------------------------------------------------------- -" Functions: -function Fcitx2en() - let inputstatus = system("fcitx-remote") - if inputstatus == 2 - let b:inputtoggle = 1 - call system("fcitx-remote -c") - endif -endfunction -function Fcitx2zh() - try - if b:inputtoggle == 1 - call system("fcitx-remote -o") - let b:inputtoggle = 0 - endif - catch /inputtoggle/ - let b:inputtoggle = 0 - endtry -endfunction -" --------------------------------------------------------------------- -" Autocmds: -au InsertLeave * call Fcitx2en() -au InsertEnter * call Fcitx2zh() -" --------------------------------------------------------------------- -" Restoration And Modelines: -let &cpo=s:keepcpo -unlet s:keepcpo -" vim:fdm=expr:fde=getline(v\:lnum-1)=~'\\v"\\s*-{20,}'?'>1'\:1