]> git.madduck.net Git - etc/vim.git/commitdiff

madduck's git repository

Every one of the projects in this repository is available at the canonical URL git://git.madduck.net/madduck/pub/<projectpath> — see each project's metadata for the exact URL.

All patches and comments are welcome. Please squash your changes to logical commits before using git-format-patch and git-send-email to patches@git.madduck.net. If you'd read over the Git project's submission guidelines and adhered to them, I'd be especially grateful.

SSH access, as well as push access can be individually arranged.

If you use my repositories frequently, consider adding the following snippet to ~/.gitconfig and using the third clone URL listed for each project:

[url "git://git.madduck.net/madduck/"]
  insteadOf = madduck:

Add password rotation
authorJosef Fortier <fortier@augsburg.edu>
Sat, 23 Feb 2019 04:31:14 +0000 (22:31 -0600)
committerJosef Fortier <fortier@augsburg.edu>
Sat, 23 Feb 2019 04:31:14 +0000 (22:31 -0600)
password-store uses pwgen when called as pass generate. This is not
easily available afterward. Mapping a pwgen password to
increment/decrement

autoload/password_store.vim [new file with mode: 0644]
doc/vim-password-store.txt
ftplugin/pass.vim

diff --git a/autoload/password_store.vim b/autoload/password_store.vim
new file mode 100644 (file)
index 0000000..b5eaf90
--- /dev/null
@@ -0,0 +1,22 @@
+" 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')
+        return systemlist('pwgen -N1 ' . g:password_store_pw_length )[0]
+    endif
+endfunction
+
+function! password_store#replace() abort
+    execute 's/\<.*\>/' . password_store#generate() . '/'
+endfunction
+
+let &cpoptions = s:save_cpo
index 03a42c07f8fea159fadbc9f6298dcb1c76d6e16e..eca22ab8da7083513ad300494ed507ab1e777312 100644 (file)
@@ -29,17 +29,37 @@ The plugin automatically loads when it sees the appropriate file paths
 for password-store. This is Tom Ryders 
 
 There are two functions:
-
+>
   :Conceal
   :Reveal
-
+<
 That apply syntax highlighting to obscure and un-obscure the password.
 By default the pass file loads in obscured mode, however when the cursor is on
-the file it's quite likely readable and editable.
-
-This offers minor "shoulder surfing" protection, facilitating editing of
-metadata, such as adding URLs etc.
-
+the word it should readable and editable. This offers minor "shoulder surfing"
+protection, facilitating editing of metadata, such as adding URLs etc.
+
+There's minor feedback for short passwords, with Error highlighting for
+passwords 6 or less characters long.
+
+Password store also adds password generation support via pwgen. Since
+password-store already leverages pwgen, this is a fairly safe assumption.
+There is a Plug mapping *<Plug>rotate_password*
+by default this is mapped to <C-X> and <C-A> but can be overridden via setting
+an alternate plug mapping
+>
+  nnoremap >M-a> <Plug>rotate_password
+<
+The mapped sequence will generate a random password. As neither decrement nor
+increment mean anything in this context, buth are mapped to the same plug.
+The default length of the password is 10 character, but
+modifiable by altering the global g:password_store_pwlength
+>
+  let g:password_store_pwlength = 20
+<
+This is also available via the function call(s)
+>
+   password_store#replace()
+<
 4. Licence                                            *password-store-licence*
 
 This plugin is licensed under the same terms as vim itself (see
index f728b00b7dbe0dcf79d552888622d8ab42c1637f..13737784b0fec8d96534759dc4c9377c75cb999e 100644 (file)
@@ -1,4 +1,4 @@
-if exists('did_pass_ftplugin') || &compatible  || version < 700
+if exists('did_pass_ftplugin') || &compatible  || v:version < 700
     finish
 endif
 let g:did_pass = 'did_pass_ftplugin'
@@ -6,6 +6,15 @@ let s:save_cpo = &cpoptions
 set compatible&vim
 
 
+if ! exists('g:password_store_pw_length')
+    let g:password_store_pw_length = 12
+endif
+
+nmap <buffer> <Plug>rotate_password :call password_store#replace()<Cr>
+if ! hasmapto( '\<Plug>rotate_password', 'n')
+    nmap <C-X> <Plug>rotate_password
+endif
+
 setlocal nospell
 
 
@@ -44,7 +53,7 @@ function! s:conceal_pass() abort
     highlight! password_store_password guifg=DarkGray guibg=DarkGray ctermfg=8 ctermbg=8
 endfunction
 command! Conceal call <SID>conceal_pass()
-normal GG
+normal! GG
 
 " Cleanup at end
 let &cpoptions = s:save_cpo