--- /dev/null
+{
+ "t/*.vader" : {
+ "type" : "test",
+ "alternate" : [ "autoload/{}.vim", "ftplugin/{}.vim" ]
+ },
+ "autoload/*.vim" : {
+ "type" : "autoload",
+ "alternate" : "t/pass.vader"
+ },
+ "ftplugin/*.vim" : {
+ "type" : "plugin",
+ "alternate" : "t/{}.vader"
+ },
+ ".scratch/*.vim" : {
+ "type" : "scratch",
+ "alternate" : "{}"
+ }
+}
-" setup known state
-if exists('did_password_store')
- " || &compatible
- " || version < 700}
- finish
-endif
-let g:did_password_store = '1'
-let s:save_cpo = &cpoptions
-set compatible&vim
-"echo 'main code'}}
-" Return vim to users choice
function! password_store#generate() abort
if executable('pwgen')
let l:result = systemlist('pwgen -N1 ' . password_store#setting('pw_length') )
endif
endfunction
-let &cpoptions = s:save_cpo
+function! password_store#get_highight(group, key) abort
+ let l:hl_line = execute( 'highlight ' . a:group)
+ let l:key = matchstr(l:hl_line, a:key . '=\zs\S*')
+ return l:key
+endfunction
-" detect password-store files
-if exists('did_pass') || &compatible || version < 700
- finish
-endif
-let g:did_pass = 'did_pass'
-let s:save_cpo = &cpoptions
-set compatible&vim
-
-" this is straight from Tom Ryders plugin
-
+" this is mostly from Tom Ryders plugin
+" with deleyed obfuscation syntax
autocmd VimEnter
\ /dev/shm/pass.?*/?*.txt
\,/dev/shm/gopass-edit*/secret
\,/tmp/pass.?*/?*.txt
\ setlocal filetype=pass |
\ if password_store#setting('enable_syntax') ==# 'true' | setlocal syntax=pass.obfuscated | endif
-
-" Cleanup at end
-let &cpoptions = s:save_cpo
endif
let g:did_pass = 'did_pass_ftplugin'
let s:save_cpo = &cpoptions
-set compatible&vim
+set cpoptions&vim
nmap <buffer> <Plug>rotate_password :call password_store#replace()<Cr>
if ! hasmapto( '\<Plug>rotate_password', 'n')
call s:CheckArgsRedact()
function! s:reveal_pass() abort
- highlight! link password_store_password Comment
+ setlocal syntax=pass
endfunction
command! Reveal call <SID>reveal_pass()
function! s:conceal_pass() abort
- highlight! password_store_password guifg=DarkGray guibg=DarkGray ctermfg=8 ctermbg=8
+ setlocal syntax=pass.obfuscated
endfunction
command! Conceal call <SID>conceal_pass()
normal! GG
-augroup password_settings_late_load
- autocmd!
- autocmd FileReadPost if &filetype == 'pass' | echom 'autocmd triggered' | let b:load_pass_syntax = 1 | source 'syntax/pass.vim' | endif
-augroup end
" Cleanup at end
let &cpoptions = s:save_cpo
if exists('b:current_syntax') | finish| endif
+if execute('highlight CursorLine') =~# 'xxx term=underline cterm=underline guibg=Grey40'
+ echohl WarningMsg
+ echo 'cursorline expected for obfuscation, manually setting'
+ echohl None
+ highlight CursorLine term=underline ctermbg=gray guibg=Grey40
+endif
+
setlocal cursorline
" set redacted colors from colorscheme
-let s:error_highlight_str = execute( 'highlight Error' )
-let s:error_fg = matchstr(s:error_highlight_str, 'guifg=\zs\S*')
+" regular passwords are Comment
+let s:comment_guifg = password_store#get_highight('Comment', 'guifg')
+let s:comment_ctermfg = password_store#get_highight('Comment', 'ctermfg')
-let s:comment_highlight_str = execute( 'highlight Comment' )
-let s:comment_fg = matchstr(s:comment_highlight_str, 'guifg=\zs\S*')
+" short passwords are Error
+let s:error_guifg = password_store#get_highight('Error', 'guifg')
+let s:error_ctermfg = password_store#get_highight('Error', 'ctermfg')
execute 'highlight password_store_password ' .
- \ ' guibg=' . s:comment_fg .
- \ ' guifg=' . s:comment_fg .
- \ ' ctermfg=1 ctermbg=1'
+ \ ' guibg=' . s:comment_guifg .
+ \ ' guifg=' . s:comment_guifg .
+ \ ' ctermfg=' . s:comment_ctermfg
+ \ 'ctermbg=' . s:comment_ctermfg
execute 'highlight password_store_password_short ' .
- \ ' guibg=' . s:error_fg .
- \ ' guifg=' . s:error_fg .
- \ ' ctermfg=1 ctermbg=1'
-
+ \ ' guibg=' . s:error_guifg .
+ \ ' guifg=' . s:error_guifg .
+ \ ' ctermfg=' . s:error_ctermfg
+ \ 'ctermbg=' . s:error_ctermfg
" first line (by convention always a single pasword)
syntax match password_store_password /\%1l.*/
-highlight link password_store_password Comment
+highlight! link password_store_password Comment
" highlight short passwords
syntax match password_store_password_short /\%1l.\{,6\}$/
-highlight link password_store_password_short Error
+highlight! link password_store_password_short Error
" colon field value is the suggested path for additional information
syntax match password_store_header '\v^[^:]+:'
AssertEqual password_store#setting('enable_syntax'), 'false'
AssertEqual len( password_store#generate() ), 16
+Execute (test highlight group parsing):
+ Assert password_store#get_highight('Comment', 'guifg') =~# '\v#[0-9a-f]{6}'
+ Assert password_store#get_highight('Comment', 'not_a_real_group') =~# ''