Mercurial > index.cgi > dotfiles
annotate .vim/plugin/gnupg.vim @ 92:fa4f783acc35
New version of gnupg.vim
author | Steve Huston <huston@srhuston.net> |
---|---|
date | Tue, 30 Jul 2013 17:17:32 -0400 |
parents | 2bea356b1032 |
children | ab30008c9e93 |
rev | line source |
---|---|
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1 " Name: gnupg.vim |
92 | 2 " Last Change: 2012 May 31 |
3 " Maintainer: James McCoy <vega.james@gmail.com> | |
4 " Original Author: Markus Braun <markus.braun@krawel.de> | |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
5 " Summary: Vim plugin for transparent editing of gpg encrypted files. |
92 | 6 " License: This program is free software; you can redistribute it and/or |
7 " modify it under the terms of the GNU General Public License | |
8 " as published by the Free Software Foundation; either version | |
9 " 2 of the License, or (at your option) any later version. | |
10 " See http://www.gnu.org/copyleft/gpl-2.0.txt | |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
11 " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
12 " Section: Documentation {{{1 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
13 " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
14 " Description: {{{2 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
15 " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
16 " This script implements transparent editing of gpg encrypted files. The |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
17 " filename must have a ".gpg", ".pgp" or ".asc" suffix. When opening such |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
18 " a file the content is decrypted, when opening a new file the script will |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
19 " ask for the recipients of the encrypted file. The file content will be |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
20 " encrypted to all recipients before it is written. The script turns off |
92 | 21 " viminfo, swapfile, and undofile to increase security. |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
22 " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
23 " Installation: {{{2 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
24 " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
25 " Copy the gnupg.vim file to the $HOME/.vim/plugin directory. |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
26 " Refer to ':help add-plugin', ':help add-global-plugin' and ':help |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
27 " runtimepath' for more details about Vim plugins. |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
28 " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
29 " From "man 1 gpg-agent": |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
30 " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
31 " ... |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
32 " You should always add the following lines to your .bashrc or whatever |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
33 " initialization file is used for all shell invocations: |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
34 " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
35 " GPG_TTY=`tty` |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
36 " export GPG_TTY |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
37 " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
38 " It is important that this environment variable always reflects the out‐ |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
39 " put of the tty command. For W32 systems this option is not required. |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
40 " ... |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
41 " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
42 " Most distributions provide software to ease handling of gpg and gpg-agent. |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
43 " Examples are keychain or seahorse. |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
44 " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
45 " Commands: {{{2 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
46 " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
47 " :GPGEditRecipients |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
48 " Opens a scratch buffer to change the list of recipients. Recipients that |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
49 " are unknown (not in your public key) are highlighted and have |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
50 " a prepended "!". Closing the buffer makes the changes permanent. |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
51 " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
52 " :GPGViewRecipients |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
53 " Prints the list of recipients. |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
54 " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
55 " :GPGEditOptions |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
56 " Opens a scratch buffer to change the options for encryption (symmetric, |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
57 " asymmetric, signing). Closing the buffer makes the changes permanent. |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
58 " WARNING: There is no check of the entered options, so you need to know |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
59 " what you are doing. |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
60 " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
61 " :GPGViewOptions |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
62 " Prints the list of options. |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
63 " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
64 " Variables: {{{2 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
65 " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
66 " g:GPGExecutable |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
67 " If set used as gpg executable, otherwise the system chooses what is run |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
68 " when "gpg" is called. Defaults to "gpg". |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
69 " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
70 " g:GPGUseAgent |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
71 " If set to 0 a possible available gpg-agent won't be used. Defaults to 1. |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
72 " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
73 " g:GPGPreferSymmetric |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
74 " If set to 1 symmetric encryption is preferred for new files. Defaults to 0. |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
75 " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
76 " g:GPGPreferArmor |
92 | 77 " If set to 1 armored data is preferred for new files. Defaults to 0 |
78 " unless a "*.asc" file is being edited. | |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
79 " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
80 " g:GPGPreferSign |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
81 " If set to 1 signed data is preferred for new files. Defaults to 0. |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
82 " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
83 " g:GPGDefaultRecipients |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
84 " If set, these recipients are used as defaults when no other recipient is |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
85 " defined. This variable is a Vim list. Default is unset. |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
86 " |
92 | 87 " g:GPGUsePipes |
88 " If set to 1, use pipes instead of temporary files when interacting with | |
89 " gnupg. When set to 1, this can cause terminal-based gpg agents to not | |
90 " display correctly when prompting for passwords. Defaults to 0. | |
91 " | |
92 " g:GPGHomedir | |
93 " If set, specifies the directory that will be used for GPG's homedir. | |
94 " This corresponds to gpg's --homedir option. This variable is a Vim | |
95 " string. | |
96 " | |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
97 " Known Issues: {{{2 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
98 " |
92 | 99 " In some cases gvim can't decrypt files |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
100 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
101 " This is caused by the fact that a running gvim has no TTY and thus gpg is |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
102 " not able to ask for the passphrase by itself. This is a problem for Windows |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
103 " and Linux versions of gvim and could not be solved unless a "terminal |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
104 " emulation" is implemented for gvim. To circumvent this you have to use any |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
105 " combination of gpg-agent and a graphical pinentry program: |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
106 " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
107 " - gpg-agent only: |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
108 " you need to provide the passphrase for the needed key to gpg-agent |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
109 " in a terminal before you open files with gvim which require this key. |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
110 " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
111 " - pinentry only: |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
112 " you will get a popup window every time you open a file that needs to |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
113 " be decrypted. |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
114 " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
115 " - gpgagent and pinentry: |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
116 " you will get a popup window the first time you open a file that |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
117 " needs to be decrypted. |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
118 " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
119 " Credits: {{{2 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
120 " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
121 " - Mathieu Clabaut for inspirations through his vimspell.vim script. |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
122 " - Richard Bronosky for patch to enable ".pgp" suffix. |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
123 " - Erik Remmelzwaal for patch to enable windows support and patient beta |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
124 " testing. |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
125 " - Lars Becker for patch to make gpg2 working. |
92 | 126 " - Thomas Arendsen Hein for patch to convert encoding of gpg output. |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
127 " - Karl-Heinz Ruskowski for patch to fix unknown recipients and trust model |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
128 " and patient beta testing. |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
129 " - Giel van Schijndel for patch to get GPG_TTY dynamically. |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
130 " - Sebastian Luettich for patch to fix issue with symmetric encryption an set |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
131 " recipients. |
92 | 132 " - Tim Swast for patch to generate signed files. |
133 " - James Vega for patches for better '*.asc' handling, better filename | |
134 " escaping and better handling of multiple keyrings. | |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
135 " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
136 " Section: Plugin header {{{1 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
137 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
138 " guard against multiple loads {{{2 |
92 | 139 if (exists("g:loaded_gnupg") || &cp || exists("#GnuPG")) |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
140 finish |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
141 endif |
92 | 142 let g:loaded_gnupg = '2.5' |
143 let s:GPGInitRun = 0 | |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
144 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
145 " check for correct vim version {{{2 |
92 | 146 if (v:version < 702) |
147 echohl ErrorMsg | echo 'plugin gnupg.vim requires Vim version >= 7.2' | echohl None | |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
148 finish |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
149 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
150 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
151 " Section: Autocmd setup {{{1 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
152 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
153 augroup GnuPG |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
154 autocmd! |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
155 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
156 " do the decryption |
92 | 157 autocmd BufReadCmd *.\(gpg\|asc\|pgp\) call s:GPGInit(1) |
158 autocmd BufReadCmd *.\(gpg\|asc\|pgp\) call s:GPGDecrypt(1) | |
159 autocmd BufReadCmd *.\(gpg\|asc\|pgp\) call s:GPGBufReadPost() | |
160 autocmd FileReadCmd *.\(gpg\|asc\|pgp\) call s:GPGInit(0) | |
161 autocmd FileReadCmd *.\(gpg\|asc\|pgp\) call s:GPGDecrypt(0) | |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
162 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
163 " convert all text to encrypted text before writing |
92 | 164 autocmd BufWriteCmd *.\(gpg\|asc\|pgp\) call s:GPGBufWritePre() |
165 autocmd BufWriteCmd,FileWriteCmd *.\(gpg\|asc\|pgp\) call s:GPGInit(0) | |
166 autocmd BufWriteCmd,FileWriteCmd *.\(gpg\|asc\|pgp\) call s:GPGEncrypt() | |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
167 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
168 " cleanup on leaving vim |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
169 autocmd VimLeave *.\(gpg\|asc\|pgp\) call s:GPGCleanup() |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
170 augroup END |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
171 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
172 " Section: Constants {{{1 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
173 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
174 let s:GPGMagicString = "\t \t" |
92 | 175 let s:keyPattern = '\%(0x\)\=[[:xdigit:]]\{8,16}' |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
176 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
177 " Section: Highlight setup {{{1 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
178 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
179 highlight default link GPGWarning WarningMsg |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
180 highlight default link GPGError ErrorMsg |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
181 highlight default link GPGHighlightUnknownRecipient ErrorMsg |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
182 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
183 " Section: Functions {{{1 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
184 |
92 | 185 " Function: s:GPGInit(bufread) {{{2 |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
186 " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
187 " initialize the plugin |
92 | 188 " The bufread argument specifies whether this was called due to BufReadCmd |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
189 " |
92 | 190 function s:GPGInit(bufread) |
191 call s:GPGDebug(3, printf(">>>>>>>> Entering s:GPGInit(%d)", a:bufread)) | |
192 | |
193 " For FileReadCmd, we're reading the contents into another buffer. If that | |
194 " buffer is also destined to be encrypted, then these settings will have | |
195 " already been set, otherwise don't set them since it limits the | |
196 " functionality of the cleartext buffer. | |
197 if a:bufread | |
198 " we don't want a swap file, as it writes unencrypted data to disk | |
199 setl noswapfile | |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
200 |
92 | 201 " if persistent undo is present, disable it for this buffer |
202 if exists('+undofile') | |
203 setl noundofile | |
204 endif | |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
205 |
92 | 206 " first make sure nothing is written to ~/.viminfo while editing |
207 " an encrypted file. | |
208 set viminfo= | |
209 endif | |
210 | |
211 " the rest only has to be run once | |
212 if s:GPGInitRun | |
213 return | |
214 endif | |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
215 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
216 " check what gpg command to use |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
217 if (!exists("g:GPGExecutable")) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
218 let g:GPGExecutable = "gpg --trust-model always" |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
219 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
220 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
221 " check if gpg-agent is allowed |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
222 if (!exists("g:GPGUseAgent")) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
223 let g:GPGUseAgent = 1 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
224 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
225 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
226 " check if symmetric encryption is preferred |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
227 if (!exists("g:GPGPreferSymmetric")) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
228 let g:GPGPreferSymmetric = 0 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
229 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
230 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
231 " check if armored files are preferred |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
232 if (!exists("g:GPGPreferArmor")) |
92 | 233 " .asc files should be armored as that's what the extension is used for |
234 if expand('<afile>') =~ '\.asc$' | |
235 let g:GPGPreferArmor = 1 | |
236 else | |
237 let g:GPGPreferArmor = 0 | |
238 endif | |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
239 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
240 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
241 " check if signed files are preferred |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
242 if (!exists("g:GPGPreferSign")) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
243 let g:GPGPreferSign = 0 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
244 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
245 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
246 " start with empty default recipients if none is defined so far |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
247 if (!exists("g:GPGDefaultRecipients")) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
248 let g:GPGDefaultRecipients = [] |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
249 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
250 |
92 | 251 " prefer not to use pipes since it can garble gpg agent display |
252 if (!exists("g:GPGUsePipes")) | |
253 let g:GPGUsePipes = 0 | |
254 endif | |
255 | |
256 " allow alternate gnupg homedir | |
257 if (!exists('g:GPGHomedir')) | |
258 let g:GPGHomedir = '' | |
259 endif | |
260 | |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
261 " print version |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
262 call s:GPGDebug(1, "gnupg.vim ". g:loaded_gnupg) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
263 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
264 " determine if gnupg can use the gpg-agent |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
265 if (exists("$GPG_AGENT_INFO") && g:GPGUseAgent == 1) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
266 if (!exists("$GPG_TTY") && !has("gui_running")) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
267 let $GPG_TTY = system("tty") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
268 if (v:shell_error) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
269 let $GPG_TTY = "" |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
270 echohl GPGError |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
271 echom "The GPG_TTY is not set and no TTY could be found using the `tty` command!" |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
272 echom "gpg-agent might not work." |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
273 echohl None |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
274 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
275 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
276 let s:GPGCommand = g:GPGExecutable . " --use-agent" |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
277 else |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
278 let s:GPGCommand = g:GPGExecutable . " --no-use-agent" |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
279 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
280 |
92 | 281 " don't use tty in gvim except for windows: we get their a tty for free. |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
282 " FIXME find a better way to avoid an error. |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
283 " with this solution only --use-agent will work |
92 | 284 if (has("gui_running") && !has("gui_win32")) |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
285 let s:GPGCommand = s:GPGCommand . " --no-tty" |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
286 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
287 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
288 " setup shell environment for unix and windows |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
289 let s:shellredirsave = &shellredir |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
290 let s:shellsave = &shell |
92 | 291 let s:shelltempsave = &shelltemp |
292 " noshelltemp isn't currently supported on Windows, but it doesn't cause any | |
293 " errors and this future proofs us against requiring changes if Windows | |
294 " gains noshelltemp functionality | |
295 let s:shelltemp = !g:GPGUsePipes | |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
296 if (has("unix")) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
297 " unix specific settings |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
298 let s:shellredir = ">%s 2>&1" |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
299 let s:shell = '/bin/sh' |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
300 let s:stderrredirnull = '2>/dev/null' |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
301 let s:GPGCommand = "LANG=C LC_ALL=C " . s:GPGCommand |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
302 else |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
303 " windows specific settings |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
304 let s:shellredir = '>%s' |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
305 let s:shell = &shell |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
306 let s:stderrredirnull = '2>nul' |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
307 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
308 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
309 call s:GPGDebug(3, "shellredirsave: " . s:shellredirsave) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
310 call s:GPGDebug(3, "shellsave: " . s:shellsave) |
92 | 311 call s:GPGDebug(3, "shelltempsave: " . s:shelltempsave) |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
312 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
313 call s:GPGDebug(3, "shell: " . s:shell) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
314 call s:GPGDebug(3, "shellcmdflag: " . &shellcmdflag) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
315 call s:GPGDebug(3, "shellxquote: " . &shellxquote) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
316 call s:GPGDebug(3, "shellredir: " . s:shellredir) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
317 call s:GPGDebug(3, "stderrredirnull: " . s:stderrredirnull) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
318 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
319 call s:GPGDebug(3, "shell implementation: " . resolve(s:shell)) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
320 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
321 " find the supported algorithms |
92 | 322 let output = s:GPGSystem({ 'level': 2, 'args': '--version' }) |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
323 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
324 let s:GPGPubkey = substitute(output, ".*Pubkey: \\(.\\{-}\\)\n.*", "\\1", "") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
325 let s:GPGCipher = substitute(output, ".*Cipher: \\(.\\{-}\\)\n.*", "\\1", "") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
326 let s:GPGHash = substitute(output, ".*Hash: \\(.\\{-}\\)\n.*", "\\1", "") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
327 let s:GPGCompress = substitute(output, ".*Compress.\\{-}: \\(.\\{-}\\)\n.*", "\\1", "") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
328 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
329 call s:GPGDebug(2, "public key algorithms: " . s:GPGPubkey) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
330 call s:GPGDebug(2, "cipher algorithms: " . s:GPGCipher) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
331 call s:GPGDebug(2, "hashing algorithms: " . s:GPGHash) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
332 call s:GPGDebug(2, "compression algorithms: " . s:GPGCompress) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
333 call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGInit()") |
92 | 334 let s:GPGInitRun = 1 |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
335 endfunction |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
336 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
337 " Function: s:GPGCleanup() {{{2 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
338 " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
339 " cleanup on leaving vim |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
340 " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
341 function s:GPGCleanup() |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
342 call s:GPGDebug(3, ">>>>>>>> Entering s:GPGCleanup()") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
343 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
344 " wipe out screen |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
345 new +only |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
346 redraw! |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
347 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
348 call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGCleanup()") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
349 endfunction |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
350 |
92 | 351 " Function: s:GPGDecrypt(bufread) {{{2 |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
352 " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
353 " decrypt the buffer and find all recipients of the encrypted file |
92 | 354 " The bufread argument specifies whether this was called due to BufReadCmd |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
355 " |
92 | 356 function s:GPGDecrypt(bufread) |
357 call s:GPGDebug(3, printf(">>>>>>>> Entering s:GPGDecrypt(%d)", a:bufread)) | |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
358 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
359 " get the filename of the current buffer |
92 | 360 let filename = expand("<afile>:p") |
361 | |
362 " clear GPGRecipients and GPGOptions | |
363 let b:GPGRecipients = g:GPGDefaultRecipients | |
364 let b:GPGOptions = [] | |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
365 |
92 | 366 " File doesn't exist yet, so nothing to decrypt |
367 if empty(glob(filename)) | |
368 return | |
369 endif | |
370 | |
371 " Only let this if the file actually exists, otherwise GPG functionality | |
372 " will be disabled when editing a buffer that doesn't yet have a backing | |
373 " file | |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
374 let b:GPGEncrypted = 0 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
375 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
376 " find the recipients of the file |
92 | 377 let cmd = { 'level': 3 } |
378 let cmd.args = '--verbose --decrypt --list-only --dry-run --batch --no-use-agent --logger-fd 1 ' . shellescape(filename) | |
379 let output = s:GPGSystem(cmd) | |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
380 |
92 | 381 " Suppress the "N more lines" message when editing a file, not when reading |
382 " the contents of a file into a buffer | |
383 let silent = a:bufread ? 'silent ' : '' | |
384 | |
385 let asymmPattern = 'gpg: public key is ' . s:keyPattern | |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
386 " check if the file is symmetric/asymmetric encrypted |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
387 if (match(output, "gpg: encrypted with [[:digit:]]\\+ passphrase") >= 0) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
388 " file is symmetric encrypted |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
389 let b:GPGEncrypted = 1 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
390 call s:GPGDebug(1, "this file is symmetric encrypted") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
391 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
392 let b:GPGOptions += ["symmetric"] |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
393 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
394 " find the used cipher algorithm |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
395 let cipher = substitute(output, ".*gpg: \\([^ ]\\+\\) encrypted data.*", "\\1", "") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
396 if (match(s:GPGCipher, "\\<" . cipher . "\\>") >= 0) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
397 let b:GPGOptions += ["cipher-algo " . cipher] |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
398 call s:GPGDebug(1, "cipher-algo is " . cipher) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
399 else |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
400 echohl GPGWarning |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
401 echom "The cipher " . cipher . " is not known by the local gpg command. Using default!" |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
402 echo |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
403 echohl None |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
404 endif |
92 | 405 elseif (match(output, asymmPattern) >= 0) |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
406 " file is asymmetric encrypted |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
407 let b:GPGEncrypted = 1 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
408 call s:GPGDebug(1, "this file is asymmetric encrypted") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
409 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
410 let b:GPGOptions += ["encrypt"] |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
411 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
412 " find the used public keys |
92 | 413 let start = match(output, asymmPattern) |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
414 while (start >= 0) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
415 let start = start + strlen("gpg: public key is ") |
92 | 416 let recipient = matchstr(output, s:keyPattern, start) |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
417 call s:GPGDebug(1, "recipient is " . recipient) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
418 let name = s:GPGNameToID(recipient) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
419 if (strlen(name) > 0) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
420 let b:GPGRecipients += [name] |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
421 call s:GPGDebug(1, "name of recipient is " . name) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
422 else |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
423 let b:GPGRecipients += [recipient] |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
424 echohl GPGWarning |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
425 echom "The recipient \"" . recipient . "\" is not in your public keyring!" |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
426 echohl None |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
427 end |
92 | 428 let start = match(output, asymmPattern, start) |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
429 endwhile |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
430 else |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
431 " file is not encrypted |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
432 let b:GPGEncrypted = 0 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
433 call s:GPGDebug(1, "this file is not encrypted") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
434 echohl GPGWarning |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
435 echom "File is not encrypted, all GPG functions disabled!" |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
436 echohl None |
92 | 437 exe printf('%sr %s', silent, fnameescape(filename)) |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
438 call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGDecrypt()") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
439 return |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
440 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
441 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
442 " check if the message is armored |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
443 if (match(output, "gpg: armor header") >= 0) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
444 call s:GPGDebug(1, "this file is armored") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
445 let b:GPGOptions += ["armor"] |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
446 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
447 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
448 " finally decrypt the buffer content |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
449 " since even with the --quiet option passphrase typos will be reported, |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
450 " we must redirect stderr (using shell temporarily) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
451 call s:GPGDebug(1, "decrypting file") |
92 | 452 let cmd = { 'level': 1, 'ex': silent . 'r !' } |
453 let cmd.args = '--quiet --decrypt ' . shellescape(filename, 1) | |
454 call s:GPGExecute(cmd) | |
455 | |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
456 if (v:shell_error) " message could not be decrypted |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
457 echohl GPGError |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
458 let blackhole = input("Message could not be decrypted! (Press ENTER)") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
459 echohl None |
92 | 460 " Only wipeout the buffer if we were creating one to start with. |
461 " FileReadCmd just reads the content into the existing buffer | |
462 if a:bufread | |
463 silent bwipeout! | |
464 endif | |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
465 call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGDecrypt()") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
466 return |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
467 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
468 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
469 " refresh screen |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
470 redraw! |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
471 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
472 call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGDecrypt()") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
473 endfunction |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
474 |
92 | 475 " Function: s:GPGBufReadPost() {{{2 |
476 " | |
477 " Handle functionality specific to opening a file for reading rather than | |
478 " reading the contents of a file into a buffer | |
479 " | |
480 function s:GPGBufReadPost() | |
481 call s:GPGDebug(3, ">>>>>>>> Entering s:GPGBufReadPost()") | |
482 " In order to make :undo a no-op immediately after the buffer is read, | |
483 " we need to do this dance with 'undolevels'. Actually discarding the undo | |
484 " history requires performing a change after setting 'undolevels' to -1 and, | |
485 " luckily, we have one we need to do (delete the extra line from the :r | |
486 " command) | |
487 let levels = &undolevels | |
488 set undolevels=-1 | |
489 silent 1delete | |
490 let &undolevels = levels | |
491 " call the autocommand for the file minus .gpg$ | |
492 silent execute ':doautocmd BufReadPost ' . fnameescape(expand('<afile>:r')) | |
493 call s:GPGDebug(2, 'called autocommand for ' . fnameescape(expand('<afile>:r'))) | |
494 call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGBufReadPost()") | |
495 endfunction | |
496 | |
497 " Function: s:GPGBufWritePre() {{{2 | |
498 " | |
499 " Handle functionality specific to saving an entire buffer to a file rather | |
500 " than saving a partial buffer | |
501 " | |
502 function s:GPGBufWritePre() | |
503 call s:GPGDebug(3, ">>>>>>>> Entering s:GPGBufWritePre()") | |
504 " call the autocommand for the file minus .gpg$ | |
505 silent execute ':doautocmd BufWritePre ' . fnameescape(expand('<afile>:r')) | |
506 call s:GPGDebug(2, 'called autocommand for ' . fnameescape(expand('<afile>:r'))) | |
507 call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGBufWritePre()") | |
508 endfunction | |
509 | |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
510 " Function: s:GPGEncrypt() {{{2 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
511 " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
512 " encrypts the buffer to all previous recipients |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
513 " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
514 function s:GPGEncrypt() |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
515 call s:GPGDebug(3, ">>>>>>>> Entering s:GPGEncrypt()") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
516 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
517 " store encoding and switch to a safe one |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
518 if (&fileencoding != &encoding) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
519 let s:GPGEncoding = &encoding |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
520 let &encoding = &fileencoding |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
521 call s:GPGDebug(2, "encoding was \"" . s:GPGEncoding . "\", switched to \"" . &encoding . "\"") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
522 else |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
523 let s:GPGEncoding = "" |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
524 call s:GPGDebug(2, "encoding and fileencoding are the same (\"" . &encoding . "\"), not switching") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
525 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
526 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
527 " guard for unencrypted files |
92 | 528 if (exists("b:GPGEncrypted") && b:GPGEncrypted == 0) |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
529 echohl GPGError |
92 | 530 let blackhole = input("Message could not be encrypted! (Press ENTER)") |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
531 echohl None |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
532 call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGEncrypt()") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
533 return |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
534 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
535 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
536 " initialize GPGOptions if not happened before |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
537 if (!exists("b:GPGOptions") || len(b:GPGOptions) == 0) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
538 let b:GPGOptions = [] |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
539 if (exists("g:GPGPreferSymmetric") && g:GPGPreferSymmetric == 1) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
540 let b:GPGOptions += ["symmetric"] |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
541 let b:GPGRecipients = [] |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
542 else |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
543 let b:GPGOptions += ["encrypt"] |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
544 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
545 if (exists("g:GPGPreferArmor") && g:GPGPreferArmor == 1) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
546 let b:GPGOptions += ["armor"] |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
547 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
548 if (exists("g:GPGPreferSign") && g:GPGPreferSign == 1) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
549 let b:GPGOptions += ["sign"] |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
550 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
551 call s:GPGDebug(1, "no options set, so using default options: " . string(b:GPGOptions)) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
552 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
553 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
554 " built list of options |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
555 let options = "" |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
556 for option in b:GPGOptions |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
557 let options = options . " --" . option . " " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
558 endfor |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
559 |
92 | 560 if (!exists('b:GPGRecipients')) |
561 let b:GPGRecipients = [] | |
562 endif | |
563 | |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
564 " check here again if all recipients are available in the keyring |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
565 let [ recipients, unknownrecipients ] = s:GPGCheckRecipients(b:GPGRecipients) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
566 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
567 " check if there are unknown recipients and warn |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
568 if (len(unknownrecipients) > 0) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
569 echohl GPGWarning |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
570 echom "Please use GPGEditRecipients to correct!!" |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
571 echo |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
572 echohl None |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
573 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
574 " Let user know whats happend and copy known_recipients back to buffer |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
575 let dummy = input("Press ENTER to quit") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
576 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
577 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
578 " built list of recipients |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
579 if (len(recipients) > 0) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
580 for gpgid in recipients |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
581 let options = options . " -r " . gpgid |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
582 endfor |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
583 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
584 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
585 " encrypt the buffer |
92 | 586 let destfile = tempname() |
587 let cmd = { 'level': 1, 'ex': "'[,']w !" } | |
588 let cmd.args = '--quiet --no-encrypt-to ' . options | |
589 let cmd.redirect = '>' . shellescape(destfile, 1) | |
590 call s:GPGExecute(cmd) | |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
591 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
592 " restore encoding |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
593 if (s:GPGEncoding != "") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
594 let &encoding = s:GPGEncoding |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
595 call s:GPGDebug(2, "restored encoding \"" . &encoding . "\"") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
596 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
597 |
92 | 598 if (v:shell_error) " message could not be encrypted |
599 " Command failed, so clean up the tempfile | |
600 call delete(destfile) | |
601 echohl GPGError | |
602 let blackhole = input("Message could not be encrypted! (Press ENTER)") | |
603 echohl None | |
604 call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGEncrypt()") | |
605 return | |
606 endif | |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
607 |
92 | 608 call rename(destfile, resolve(expand('<afile>'))) |
609 setl nomodified | |
610 call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGEncrypt()") | |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
611 endfunction |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
612 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
613 " Function: s:GPGViewRecipients() {{{2 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
614 " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
615 " echo the recipients |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
616 " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
617 function s:GPGViewRecipients() |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
618 call s:GPGDebug(3, ">>>>>>>> Entering s:GPGViewRecipients()") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
619 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
620 " guard for unencrypted files |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
621 if (exists("b:GPGEncrypted") && b:GPGEncrypted == 0) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
622 echohl GPGWarning |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
623 echom "File is not encrypted, all GPG functions disabled!" |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
624 echohl None |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
625 call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGViewRecipients()") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
626 return |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
627 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
628 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
629 let [ recipients, unknownrecipients ] = s:GPGCheckRecipients(b:GPGRecipients) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
630 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
631 echo 'This file has following recipients (Unknown recipients have a prepended "!"):' |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
632 " echo the recipients |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
633 for name in recipients |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
634 let name = s:GPGIDToName(name) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
635 echo name |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
636 endfor |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
637 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
638 " echo the unknown recipients |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
639 echohl GPGWarning |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
640 for name in unknownrecipients |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
641 let name = "!" . name |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
642 echo name |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
643 endfor |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
644 echohl None |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
645 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
646 " check if there is any known recipient |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
647 if (len(recipients) == 0) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
648 echohl GPGError |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
649 echom 'There are no known recipients!' |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
650 echohl None |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
651 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
652 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
653 call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGViewRecipients()") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
654 endfunction |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
655 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
656 " Function: s:GPGEditRecipients() {{{2 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
657 " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
658 " create a scratch buffer with all recipients to add/remove recipients |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
659 " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
660 function s:GPGEditRecipients() |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
661 call s:GPGDebug(3, ">>>>>>>> Entering s:GPGEditRecipients()") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
662 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
663 " guard for unencrypted files |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
664 if (exists("b:GPGEncrypted") && b:GPGEncrypted == 0) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
665 echohl GPGWarning |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
666 echom "File is not encrypted, all GPG functions disabled!" |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
667 echohl None |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
668 call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGEditRecipients()") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
669 return |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
670 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
671 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
672 " only do this if it isn't already a GPGRecipients_* buffer |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
673 if (match(bufname("%"), "^\\(GPGRecipients_\\|GPGOptions_\\)") != 0 && match(bufname("%"), "\.\\(gpg\\|asc\\|pgp\\)$") >= 0) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
674 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
675 " save buffer name |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
676 let buffername = bufname("%") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
677 let editbuffername = "GPGRecipients_" . buffername |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
678 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
679 " check if this buffer exists |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
680 if (!bufexists(editbuffername)) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
681 " create scratch buffer |
92 | 682 execute 'silent! split ' . fnameescape(editbuffername) |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
683 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
684 " add a autocommand to regenerate the recipients after a write |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
685 autocmd BufHidden,BufUnload,BufWriteCmd <buffer> call s:GPGFinishRecipientsBuffer() |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
686 else |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
687 if (bufwinnr(editbuffername) >= 0) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
688 " switch to scratch buffer window |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
689 execute 'silent! ' . bufwinnr(editbuffername) . "wincmd w" |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
690 else |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
691 " split scratch buffer window |
92 | 692 execute 'silent! sbuffer ' . fnameescape(editbuffername) |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
693 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
694 " add a autocommand to regenerate the recipients after a write |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
695 autocmd BufHidden,BufUnload,BufWriteCmd <buffer> call s:GPGFinishRecipientsBuffer() |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
696 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
697 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
698 " empty the buffer |
92 | 699 silent %delete |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
700 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
701 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
702 " Mark the buffer as a scratch buffer |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
703 setlocal buftype=acwrite |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
704 setlocal bufhidden=hide |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
705 setlocal noswapfile |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
706 setlocal nowrap |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
707 setlocal nobuflisted |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
708 setlocal nonumber |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
709 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
710 " so we know for which other buffer this edit buffer is |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
711 let b:GPGCorrespondingTo = buffername |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
712 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
713 " put some comments to the scratch buffer |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
714 silent put ='GPG: ----------------------------------------------------------------------' |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
715 silent put ='GPG: Please edit the list of recipients, one recipient per line.' |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
716 silent put ='GPG: Unknown recipients have a prepended \"!\".' |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
717 silent put ='GPG: Lines beginning with \"GPG:\" are removed automatically.' |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
718 silent put ='GPG: Data after recipients between and including \"(\" and \")\" is ignored.' |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
719 silent put ='GPG: Closing this buffer commits changes.' |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
720 silent put ='GPG: ----------------------------------------------------------------------' |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
721 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
722 " get the recipients |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
723 let [ recipients, unknownrecipients ] = s:GPGCheckRecipients(getbufvar(b:GPGCorrespondingTo, "GPGRecipients")) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
724 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
725 " if there are no known or unknown recipients, use the default ones |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
726 if (len(recipients) == 0 && len(unknownrecipients) == 0) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
727 if (type(g:GPGDefaultRecipients) == type([])) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
728 let [ recipients, unknownrecipients ] = s:GPGCheckRecipients(g:GPGDefaultRecipients) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
729 else |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
730 echohl GPGWarning |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
731 echom "g:GPGDefaultRecipients is not a Vim list, please correct this in your vimrc!" |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
732 echohl None |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
733 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
734 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
735 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
736 " put the recipients in the scratch buffer |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
737 for name in recipients |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
738 let name = s:GPGIDToName(name) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
739 silent put =name |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
740 endfor |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
741 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
742 " put the unknown recipients in the scratch buffer |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
743 let syntaxPattern = "\\(nonexxistinwordinthisbuffer" |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
744 for name in unknownrecipients |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
745 let name = "!" . name |
92 | 746 let syntaxPattern = syntaxPattern . "\\|" . fnameescape(name) |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
747 silent put =name |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
748 endfor |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
749 let syntaxPattern = syntaxPattern . "\\)" |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
750 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
751 " define highlight |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
752 if (has("syntax") && exists("g:syntax_on")) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
753 execute 'syntax match GPGUnknownRecipient "' . syntaxPattern . '"' |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
754 highlight clear GPGUnknownRecipient |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
755 highlight link GPGUnknownRecipient GPGHighlightUnknownRecipient |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
756 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
757 syntax match GPGComment "^GPG:.*$" |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
758 execute 'syntax match GPGComment "' . s:GPGMagicString . '.*$"' |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
759 highlight clear GPGComment |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
760 highlight link GPGComment Comment |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
761 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
762 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
763 " delete the empty first line |
92 | 764 silent 1delete |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
765 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
766 " jump to the first recipient |
92 | 767 silent $ |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
768 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
769 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
770 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
771 call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGEditRecipients()") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
772 endfunction |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
773 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
774 " Function: s:GPGFinishRecipientsBuffer() {{{2 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
775 " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
776 " create a new recipient list from RecipientsBuffer |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
777 " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
778 function s:GPGFinishRecipientsBuffer() |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
779 call s:GPGDebug(3, ">>>>>>>> Entering s:GPGFinishRecipientsBuffer()") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
780 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
781 " guard for unencrypted files |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
782 if (exists("b:GPGEncrypted") && b:GPGEncrypted == 0) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
783 echohl GPGWarning |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
784 echom "File is not encrypted, all GPG functions disabled!" |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
785 echohl None |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
786 call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGFinishRecipientsBuffer()") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
787 return |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
788 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
789 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
790 " go to buffer before doing work |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
791 if (bufnr("%") != expand("<abuf>")) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
792 " switch to scratch buffer window |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
793 execute 'silent! ' . bufwinnr(expand("<afile>")) . "wincmd w" |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
794 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
795 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
796 " delete the autocommand |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
797 autocmd! * <buffer> |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
798 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
799 " get the recipients from the scratch buffer |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
800 let recipients = [] |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
801 let lines = getline(1,"$") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
802 for recipient in lines |
92 | 803 let matches = matchlist(recipient, '^\(.\{-}\)\%(' . s:GPGMagicString . '(ID:\s\+\(' . s:keyPattern . '\)\s\+.*\)\=$') |
804 | |
805 let recipient = matches[2] ? matches[2] : matches[1] | |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
806 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
807 " delete all spaces at beginning and end of the recipient |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
808 " also delete a '!' at the beginning of the recipient |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
809 let recipient = substitute(recipient, "^[[:space:]!]*\\(.\\{-}\\)[[:space:]]*$", "\\1", "") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
810 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
811 " delete comment lines |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
812 let recipient = substitute(recipient, "^GPG:.*$", "", "") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
813 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
814 " only do this if the line is not empty |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
815 if (strlen(recipient) > 0) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
816 let gpgid = s:GPGNameToID(recipient) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
817 if (strlen(gpgid) > 0) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
818 if (match(recipients, gpgid) < 0) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
819 let recipients += [gpgid] |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
820 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
821 else |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
822 if (match(recipients, recipient) < 0) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
823 let recipients += [recipient] |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
824 echohl GPGWarning |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
825 echom "The recipient \"" . recipient . "\" is not in your public keyring!" |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
826 echohl None |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
827 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
828 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
829 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
830 endfor |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
831 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
832 " write back the new recipient list to the corresponding buffer and mark it |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
833 " as modified. Buffer is now for sure a encrypted buffer. |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
834 call setbufvar(b:GPGCorrespondingTo, "GPGRecipients", recipients) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
835 call setbufvar(b:GPGCorrespondingTo, "&mod", 1) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
836 call setbufvar(b:GPGCorrespondingTo, "GPGEncrypted", 1) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
837 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
838 " check if there is any known recipient |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
839 if (len(recipients) == 0) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
840 echohl GPGError |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
841 echom 'There are no known recipients!' |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
842 echohl None |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
843 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
844 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
845 " reset modified flag |
92 | 846 setl nomodified |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
847 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
848 call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGFinishRecipientsBuffer()") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
849 endfunction |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
850 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
851 " Function: s:GPGViewOptions() {{{2 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
852 " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
853 " echo the recipients |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
854 " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
855 function s:GPGViewOptions() |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
856 call s:GPGDebug(3, ">>>>>>>> Entering s:GPGViewOptions()") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
857 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
858 " guard for unencrypted files |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
859 if (exists("b:GPGEncrypted") && b:GPGEncrypted == 0) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
860 echohl GPGWarning |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
861 echom "File is not encrypted, all GPG functions disabled!" |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
862 echohl None |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
863 call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGViewOptions()") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
864 return |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
865 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
866 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
867 if (exists("b:GPGOptions")) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
868 echo 'This file has following options:' |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
869 " echo the options |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
870 for option in b:GPGOptions |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
871 echo option |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
872 endfor |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
873 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
874 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
875 call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGViewOptions()") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
876 endfunction |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
877 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
878 " Function: s:GPGEditOptions() {{{2 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
879 " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
880 " create a scratch buffer with all recipients to add/remove recipients |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
881 " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
882 function s:GPGEditOptions() |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
883 call s:GPGDebug(3, ">>>>>>>> Entering s:GPGEditOptions()") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
884 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
885 " guard for unencrypted files |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
886 if (exists("b:GPGEncrypted") && b:GPGEncrypted == 0) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
887 echohl GPGWarning |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
888 echom "File is not encrypted, all GPG functions disabled!" |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
889 echohl None |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
890 call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGEditOptions()") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
891 return |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
892 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
893 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
894 " only do this if it isn't already a GPGOptions_* buffer |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
895 if (match(bufname("%"), "^\\(GPGRecipients_\\|GPGOptions_\\)") != 0 && match(bufname("%"), "\.\\(gpg\\|asc\\|pgp\\)$") >= 0) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
896 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
897 " save buffer name |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
898 let buffername = bufname("%") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
899 let editbuffername = "GPGOptions_" . buffername |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
900 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
901 " check if this buffer exists |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
902 if (!bufexists(editbuffername)) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
903 " create scratch buffer |
92 | 904 execute 'silent! split ' . fnameescape(editbuffername) |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
905 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
906 " add a autocommand to regenerate the options after a write |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
907 autocmd BufHidden,BufUnload,BufWriteCmd <buffer> call s:GPGFinishOptionsBuffer() |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
908 else |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
909 if (bufwinnr(editbuffername) >= 0) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
910 " switch to scratch buffer window |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
911 execute 'silent! ' . bufwinnr(editbuffername) . "wincmd w" |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
912 else |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
913 " split scratch buffer window |
92 | 914 execute 'silent! sbuffer ' . fnameescape(editbuffername) |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
915 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
916 " add a autocommand to regenerate the options after a write |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
917 autocmd BufHidden,BufUnload,BufWriteCmd <buffer> call s:GPGFinishOptionsBuffer() |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
918 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
919 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
920 " empty the buffer |
92 | 921 silent %delete |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
922 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
923 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
924 " Mark the buffer as a scratch buffer |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
925 setlocal buftype=nofile |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
926 setlocal noswapfile |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
927 setlocal nowrap |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
928 setlocal nobuflisted |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
929 setlocal nonumber |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
930 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
931 " so we know for which other buffer this edit buffer is |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
932 let b:GPGCorrespondingTo = buffername |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
933 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
934 " put some comments to the scratch buffer |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
935 silent put ='GPG: ----------------------------------------------------------------------' |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
936 silent put ='GPG: THERE IS NO CHECK OF THE ENTERED OPTIONS!' |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
937 silent put ='GPG: YOU NEED TO KNOW WHAT YOU ARE DOING!' |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
938 silent put ='GPG: IF IN DOUBT, QUICKLY EXIT USING :x OR :bd.' |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
939 silent put ='GPG: Please edit the list of options, one option per line.' |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
940 silent put ='GPG: Please refer to the gpg documentation for valid options.' |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
941 silent put ='GPG: Lines beginning with \"GPG:\" are removed automatically.' |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
942 silent put ='GPG: Closing this buffer commits changes.' |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
943 silent put ='GPG: ----------------------------------------------------------------------' |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
944 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
945 " put the options in the scratch buffer |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
946 let options = getbufvar(b:GPGCorrespondingTo, "GPGOptions") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
947 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
948 for option in options |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
949 silent put =option |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
950 endfor |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
951 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
952 " delete the empty first line |
92 | 953 silent 1delete |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
954 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
955 " jump to the first option |
92 | 956 silent $ |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
957 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
958 " define highlight |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
959 if (has("syntax") && exists("g:syntax_on")) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
960 syntax match GPGComment "^GPG:.*$" |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
961 highlight clear GPGComment |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
962 highlight link GPGComment Comment |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
963 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
964 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
965 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
966 call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGEditOptions()") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
967 endfunction |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
968 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
969 " Function: s:GPGFinishOptionsBuffer() {{{2 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
970 " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
971 " create a new option list from OptionsBuffer |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
972 " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
973 function s:GPGFinishOptionsBuffer() |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
974 call s:GPGDebug(3, ">>>>>>>> Entering s:GPGFinishOptionsBuffer()") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
975 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
976 " guard for unencrypted files |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
977 if (exists("b:GPGEncrypted") && b:GPGEncrypted == 0) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
978 echohl GPGWarning |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
979 echom "File is not encrypted, all GPG functions disabled!" |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
980 echohl None |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
981 call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGFinishOptionsBuffer()") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
982 return |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
983 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
984 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
985 " go to buffer before doing work |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
986 if (bufnr("%") != expand("<abuf>")) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
987 " switch to scratch buffer window |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
988 execute 'silent! ' . bufwinnr(expand("<afile>")) . "wincmd w" |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
989 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
990 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
991 " clear options and unknownOptions |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
992 let options = [] |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
993 let unknownOptions = [] |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
994 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
995 " delete the autocommand |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
996 autocmd! * <buffer> |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
997 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
998 " get the options from the scratch buffer |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
999 let lines = getline(1, "$") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1000 for option in lines |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1001 " delete all spaces at beginning and end of the option |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1002 " also delete a '!' at the beginning of the option |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1003 let option = substitute(option, "^[[:space:]!]*\\(.\\{-}\\)[[:space:]]*$", "\\1", "") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1004 " delete comment lines |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1005 let option = substitute(option, "^GPG:.*$", "", "") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1006 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1007 " only do this if the line is not empty |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1008 if (strlen(option) > 0 && match(options, option) < 0) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1009 let options += [option] |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1010 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1011 endfor |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1012 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1013 " write back the new option list to the corresponding buffer and mark it |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1014 " as modified |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1015 call setbufvar(b:GPGCorrespondingTo, "GPGOptions", options) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1016 call setbufvar(b:GPGCorrespondingTo, "&mod", 1) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1017 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1018 " reset modified flag |
92 | 1019 setl nomodified |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1020 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1021 call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGFinishOptionsBuffer()") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1022 endfunction |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1023 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1024 " Function: s:GPGCheckRecipients(tocheck) {{{2 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1025 " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1026 " check if recipients are known |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1027 " Returns: two lists recipients and unknownrecipients |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1028 " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1029 function s:GPGCheckRecipients(tocheck) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1030 call s:GPGDebug(3, ">>>>>>>> Entering s:GPGCheckRecipients()") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1031 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1032 let recipients = [] |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1033 let unknownrecipients = [] |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1034 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1035 if (type(a:tocheck) == type([])) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1036 for recipient in a:tocheck |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1037 let gpgid = s:GPGNameToID(recipient) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1038 if (strlen(gpgid) > 0) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1039 if (match(recipients, gpgid) < 0) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1040 let recipients += [gpgid] |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1041 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1042 else |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1043 if (match(unknownrecipients, recipient) < 0) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1044 let unknownrecipients += [recipient] |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1045 echohl GPGWarning |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1046 echom "The recipient \"" . recipient . "\" is not in your public keyring!" |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1047 echohl None |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1048 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1049 end |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1050 endfor |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1051 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1052 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1053 call s:GPGDebug(2, "recipients are: " . string(recipients)) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1054 call s:GPGDebug(2, "unknown recipients are: " . string(unknownrecipients)) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1055 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1056 call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGCheckRecipients()") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1057 return [ recipients, unknownrecipients ] |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1058 endfunction |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1059 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1060 " Function: s:GPGNameToID(name) {{{2 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1061 " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1062 " find GPG key ID corresponding to a name |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1063 " Returns: ID for the given name |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1064 " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1065 function s:GPGNameToID(name) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1066 call s:GPGDebug(3, ">>>>>>>> Entering s:GPGNameToID()") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1067 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1068 " ask gpg for the id for a name |
92 | 1069 let cmd = { 'level': 2 } |
1070 let cmd.args = '--quiet --with-colons --fixed-list-mode --list-keys ' . shellescape(a:name) | |
1071 let output = s:GPGSystem(cmd) | |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1072 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1073 " when called with "--with-colons" gpg encodes its output _ALWAYS_ as UTF-8, |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1074 " so convert it, if necessary |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1075 if (&encoding != "utf-8") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1076 let output = iconv(output, "utf-8", &encoding) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1077 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1078 let lines = split(output, "\n") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1079 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1080 " parse the output of gpg |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1081 let pubseen = 0 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1082 let counter = 0 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1083 let gpgids = [] |
92 | 1084 let duplicates = {} |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1085 let choices = "The name \"" . a:name . "\" is ambiguous. Please select the correct key:\n" |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1086 for line in lines |
92 | 1087 |
1088 " check if this line has already been processed | |
1089 if !has_key(duplicates, line) | |
1090 let duplicates[line] = 1 | |
1091 | |
1092 let fields = split(line, ":") | |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1093 |
92 | 1094 " search for the next uid |
1095 if pubseen | |
1096 if (fields[0] == "uid") | |
1097 let choices = choices . " " . fields[9] . "\n" | |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1098 else |
92 | 1099 let pubseen = 0 |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1100 endif |
92 | 1101 " search for the next pub |
1102 else | |
1103 if (fields[0] == "pub") | |
1104 " Ignore keys which are not usable for encryption | |
1105 if fields[11] !~? 'e' | |
1106 continue | |
1107 endif | |
1108 | |
1109 let identity = fields[4] | |
1110 let gpgids += [identity] | |
1111 if exists("*strftime") | |
1112 let choices = choices . counter . ": ID: 0x" . identity . " created at " . strftime("%c", fields[5]) . "\n" | |
1113 else | |
1114 let choices = choices . counter . ": ID: 0x" . identity . "\n" | |
1115 endif | |
1116 let counter = counter+1 | |
1117 let pubseen = 1 | |
1118 endif | |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1119 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1120 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1121 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1122 endfor |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1123 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1124 " counter > 1 means we have more than one results |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1125 let answer = 0 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1126 if (counter > 1) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1127 let choices = choices . "Enter number: " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1128 let answer = input(choices, "0") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1129 while (answer == "") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1130 let answer = input("Enter number: ", "0") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1131 endwhile |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1132 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1133 |
92 | 1134 call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGNameToID()") |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1135 return get(gpgids, answer, "") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1136 endfunction |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1137 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1138 " Function: s:GPGIDToName(identity) {{{2 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1139 " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1140 " find name corresponding to a GPG key ID |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1141 " Returns: Name for the given ID |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1142 " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1143 function s:GPGIDToName(identity) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1144 call s:GPGDebug(3, ">>>>>>>> Entering s:GPGIDToName()") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1145 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1146 " TODO is the encryption subkey really unique? |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1147 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1148 " ask gpg for the id for a name |
92 | 1149 let cmd = { 'level': 2 } |
1150 let cmd.args = '--quiet --with-colons --fixed-list-mode --list-keys ' . a:identity | |
1151 let output = s:GPGSystem(cmd) | |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1152 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1153 " when called with "--with-colons" gpg encodes its output _ALWAYS_ as UTF-8, |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1154 " so convert it, if necessary |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1155 if (&encoding != "utf-8") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1156 let output = iconv(output, "utf-8", &encoding) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1157 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1158 let lines = split(output, "\n") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1159 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1160 " parse the output of gpg |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1161 let pubseen = 0 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1162 let uid = "" |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1163 for line in lines |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1164 let fields = split(line, ":") |
92 | 1165 |
1166 if !pubseen " search for the next pub | |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1167 if (fields[0] == "pub") |
92 | 1168 " Ignore keys which are not usable for encryption |
1169 if fields[11] !~? 'e' | |
1170 continue | |
1171 endif | |
1172 | |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1173 let pubseen = 1 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1174 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1175 else " search for the next uid |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1176 if (fields[0] == "uid") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1177 let pubseen = 0 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1178 if exists("*strftime") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1179 let uid = fields[9] . s:GPGMagicString . "(ID: 0x" . a:identity . " created at " . strftime("%c", fields[5]) . ")" |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1180 else |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1181 let uid = fields[9] . s:GPGMagicString . "(ID: 0x" . a:identity . ")" |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1182 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1183 break |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1184 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1185 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1186 endfor |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1187 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1188 call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGIDToName()") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1189 return uid |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1190 endfunction |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1191 |
92 | 1192 function s:GPGPreCmd() |
1193 let &shellredir = s:shellredir | |
1194 let &shell = s:shell | |
1195 let &shelltemp = s:shelltemp | |
1196 endfunction | |
1197 | |
1198 function s:GPGPostCmd() | |
1199 let &shellredir = s:shellredirsave | |
1200 let &shell = s:shellsave | |
1201 let &shelltemp = s:shelltempsave | |
1202 endfunction | |
1203 | |
1204 " Function: s:GPGSystem(dict) {{{2 | |
1205 " | |
1206 " run g:GPGCommand using system(), logging the commandline and output | |
1207 " Recognized keys are: | |
1208 " level - Debug level at which the commandline and output will be logged | |
1209 " args - Arguments to be given to g:GPGCommand | |
1210 " | |
1211 " Returns: command output | |
1212 " | |
1213 function s:GPGSystem(dict) | |
1214 let commandline = printf('%s %s', s:GPGCommand, a:dict.args) | |
1215 if (!empty(g:GPGHomedir)) | |
1216 let commandline .= ' --homedir ' . shellescape(g:GPGHomedir) | |
1217 endif | |
1218 let commandline .= ' ' . s:stderrredirnull | |
1219 call s:GPGDebug(a:dict.level, "command: ". commandline) | |
1220 | |
1221 call s:GPGPreCmd() | |
1222 let output = system(commandline) | |
1223 call s:GPGPostCmd() | |
1224 | |
1225 call s:GPGDebug(a:dict.level, "output: ". output) | |
1226 return output | |
1227 endfunction | |
1228 | |
1229 " Function: s:GPGExecute(dict) {{{2 | |
1230 " | |
1231 " run g:GPGCommand using :execute, logging the commandline | |
1232 " Recognized keys are: | |
1233 " level - Debug level at which the commandline will be logged | |
1234 " args - Arguments to be given to g:GPGCommand | |
1235 " ex - Ex command which will be :executed | |
1236 " redirect - Shell redirect to use, if needed | |
1237 " | |
1238 function s:GPGExecute(dict) | |
1239 let commandline = printf('%s%s %s', a:dict.ex, s:GPGCommand, a:dict.args) | |
1240 if (!empty(g:GPGHomedir)) | |
1241 let commandline .= ' --homedir ' . shellescape(g:GPGHomedir, 1) | |
1242 endif | |
1243 if (has_key(a:dict, 'redirect')) | |
1244 let commandline .= ' ' . a:dict.redirect | |
1245 endif | |
1246 let commandline .= ' ' . s:stderrredirnull | |
1247 call s:GPGDebug(a:dict.level, "command: " . commandline) | |
1248 | |
1249 call s:GPGPreCmd() | |
1250 execute commandline | |
1251 call s:GPGPostCmd() | |
1252 endfunction | |
1253 | |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1254 " Function: s:GPGDebug(level, text) {{{2 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1255 " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1256 " output debug message, if this message has high enough importance |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1257 " only define function if GPGDebugLevel set at all |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1258 " |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1259 function s:GPGDebug(level, text) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1260 if exists("g:GPGDebugLevel") && g:GPGDebugLevel >= a:level |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1261 if exists("g:GPGDebugLog") |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1262 execute "redir >> " . g:GPGDebugLog |
92 | 1263 silent echom "GnuPG: " . a:text |
41
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1264 redir END |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1265 else |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1266 echom "GnuPG: " . a:text |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1267 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1268 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1269 endfunction |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1270 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1271 " Section: Commands {{{1 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1272 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1273 command! GPGViewRecipients call s:GPGViewRecipients() |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1274 command! GPGEditRecipients call s:GPGEditRecipients() |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1275 command! GPGViewOptions call s:GPGViewOptions() |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1276 command! GPGEditOptions call s:GPGEditOptions() |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1277 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1278 " Section: Menu {{{1 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1279 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1280 if (has("menu")) |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1281 amenu <silent> Plugin.GnuPG.View\ Recipients :GPGViewRecipients<CR> |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1282 amenu <silent> Plugin.GnuPG.Edit\ Recipients :GPGEditRecipients<CR> |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1283 amenu <silent> Plugin.GnuPG.View\ Options :GPGViewOptions<CR> |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1284 amenu <silent> Plugin.GnuPG.Edit\ Options :GPGEditOptions<CR> |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1285 endif |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1286 |
2bea356b1032
* Added default screenrc from Linux (and the Screen installation) to .screenrc
huston@80426f53-59d1-405d-934b-f07cd76f4a1a
parents:
diff
changeset
|
1287 " vim600: set foldmethod=marker foldlevel=0 : |