Closed tsuyoshicho closed 5 years ago
cli startup variable miss...?
以下は成功 testvimrc.vim.txt
$ vim -u testvimrc.vim
そもそもgit時だけNGなのが不明、...WindowsはC:\windows\vim.bat
もしくはC:\Program Files\vim\vim81\vim.bat
などを使うから?
https://github.com/tsuyoshicho/vim-pass/commit/ffa5d7868dc1228ca026c5d5a46d584ad80bede5 版
日本語メッセージ翻訳/監修: 村岡 太郎 <koron.kaoriya@gmail.com>
"D:/repo/vim-pass/.git/COMMIT_EDITMSG" [unix] 27L, 817C
function pass#resolve_startup[1]..pass#startup#resolve[8]..<SNR>6_resolver の処理中にエラーが検出されました:
行 4:
E121: 未定義の変数です: d
1つだけになったのは、passphraseがキャッシュされるようになったから、と思われる
以下を埋め込み
function! s:resolver(scope,set_variable, entry, keywords) abort
let value = pass#get#entry_value(a:entry, a:keywords)
if v:null == a:scope
echomsg "resolver: entry" . a:entry . " var:" . a:set_variable . " value:" . value
call execute('let ' . a:set_variable . '=' . "'" . value . "'")
else
let a:scope[a:set_variable] = value
endif
endfunction
日本語メッセージ翻訳/監修: 村岡 太郎 <koron.kaoriya@gmail.com>
"D:/repo/vim-pass/.git/COMMIT_EDITMSG" [unix] 27L, 817C
resolver: entryDevelop/Pixela var:g:pixela_username value:
resolver: entryDevelop/Pixela var:g:pixela_token value:gpg: keyblock resource '/d/repo/vim-pass/C:\Users\9004050383\.gnupg/pubring.kbx': No such file or directory
function pass#resolve_startup[1]..pass#startup#resolve[8]..<SNR>9_resolver の処理中にエラーが検出されました:
行 5:
E121: 未定義の変数です: d
パス解決に問題がある
いろいろ確認した結果
日本語メッセージ翻訳/監修: 村岡 太郎 <koron.kaoriya@gmail.com>
"D:/repo/vim-pass/.git/COMMIT_EDITMSG" [unix] 27L, 817C
pass cmd req ,id:95E823E6A359A5967AB30E0D55526347D4D76A9F,path:C:/Users/9004050383/.password-store/Develop/Pixela.gpg,pass:
pass cmd exec:gpg --no-verbose --quiet --batch --decrypt --local-user 95E823E6A359A5967AB30E0D55526347D4D76A9F --output - C:/Users/9004050383/.password-store/Develop/Pixela.gpg
pass env: which gpg:C:\Program Files\Git\usr\bin\gpg.EXE GNUPGHOME:C:\Users\9004050383\.gnupg
pass env: pwd:D:/repo/vim-pass
gnupg home:C:\Users\9004050383\.gnupg
resolver: entry:Develop/Pixela var:g:pixela_username value:
pass cmd req ,id:95E823E6A359A5967AB30E0D55526347D4D76A9F,path:C:/Users/9004050383/.password-store/Develop/Pixela.gpg,pass:
pass cmd exec:gpg --no-verbose --quiet --batch --decrypt --local-user 95E823E6A359A5967AB30E0D55526347D4D76A9F --output - C:/Users/9004050383/.password-store/Develop/Pixela.gpg
pass env: which gpg:C:\Program Files\Git\usr\bin\gpg.EXE GNUPGHOME:C:\Users\9004050383\.gnupg
pass env: pwd:D:/repo/vim-pass
gnupg home:C:\Users\9004050383\.gnupg
resolver: entry:Develop/Pixela var:g:pixela_token value:gpg: keyblock resource '/d/repo/vim-pass/C:\Users\9004050383\.gnupg/pubring.kbx': No such file or directory
function pass#resolve_startup[1]..pass#startup#resolve[8]..<SNR>9_resolver の処理中にエラーが検出されました:
行 6:
E121: 未定義の変数です: d
GIT_EDITOR=c:\windows\vim.bat
によるnative vim起動今となってはGit for Windowsにもgpg v2.2がついている(が、gpg-agentを考えると使いたくない) のだが、GNUPGHOMEとの整合性の問題もある...
環境をよく考えてみる
問題発生は
Git for Windowsで(bashrcでケアせずに) gpg が使えない環境
だと発生する、といえる
MSYS2_PATH_TYPE=inherit
すると、gitのaliasの各コマンドの挙動が期待したものにならないのでまずい
一番確実なのは、gitのgpgを封印すること g:pass_gpg_pathをフルパスにする?
このようにしてfix
[[plugins]]
repo = 'tsuyoshicho/vim-pass'
depends = ['ctrlp']
hook_add = '''
let g:ctrlp_extensions = get(g:, 'ctrlp_extensions', [])
\ + ['pass']
" support windows
let is_windows = has('win32') || has('win64') " later as historical ==|| has('win16') || has('win95')==
let is_cygwin = has('win32unix')
if is_windows
if !is_cygwin
" Windows native not MSYS(cygwin) work
" need native gpg (not /usr/bin/gpg)
let gpg_32 = exepath('C:\Program Files (x86)\GnuPG\bin\gpg.exe')
let gpg_native = exepath('C:\Program Files\GnuPG\bin\gpg.exe')
if executable(gpg_32)
let g:pass_gpg_path = gpg_32
elseif executable(gpg_native)
let g:pass_gpg_path = gpg_native
endif
endif
endif
'''
like git commit time