emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* [PATCH] Wash output of org-encrypt-entry, take 3
@ 2011-03-18 22:25 Óscar Fuentes
  2011-03-20 20:34 ` Bernt Hansen
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Óscar Fuentes @ 2011-03-18 22:25 UTC (permalink / raw)
  To: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 1528 bytes --]

Sorry, clicked on Send before the patch was attached.

With a gpg executable with default settings, org-encrypt-entry produces
output like this:

 Version: GnuPG v1.4.10 (GNU/Linux)

 -----END PGP MESSAGE-----

The first line (Version:...) can change from machine to machine and over
time (as gpg is updated with a new version.) This is problematic when
the file is stored under version control, because as you decrypt and
encrypt an entry that line will change and create differences among the
file on the workspace and the file stored on VC.

Second, the empty line just wastes space and it is plain ugly once we
remove the first one with the Version text.

Finally, on some systems (mostly Windows) depending on how your Emacs
and gpg are configured, ^M characters may appear at the end of every
line of gpg output once it is inserted on the Emacs buffer. This happens
when the buffer uses Unix line-endings but gpg uses DOS line-endings.

The patch removes all that junk from the encrypted text just before it
is inserted on the buffer.

I'm assuming that the transformations made by this patch are
uncontroversial and desirable. If anyone actually prefers to keep that
noise on his encrypted org entries, an alternative implementation that
uses a configurable list of regexps is trivial to implement, but then
every user would have to do some job for achieving the same result.

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: wash-crypt-string.patch --]
[-- Type: text/x-diff, Size: 1123 bytes --]

diff --git a/lisp/org-crypt.el b/lisp/org-crypt.el
index b649e39..308628e 100644
--- a/lisp/org-crypt.el
+++ b/lisp/org-crypt.el
@@ -112,6 +112,15 @@ This setting can also be overridden in the CRYPTKEY property."
     (let ((epg-context (epg-make-context nil t t)))
       (epg-encrypt-string epg-context str (epg-list-keys epg-context crypt-key)))))
+(defun org-crypt-wash-encrypted-string (str)
+  "Remove superfluos and annoying text from the encrypted string."
+  (with-temp-buffer
+    (insert str)
+    (goto-char (point-min))
+    (while (re-search-forward "^Version:.*$\\|\^M\\|^\n" nil t)
+      (replace-match ""))
+    (buffer-string)))
 (defun org-encrypt-entry ()
   "Encrypt the content of the current headline."
@@ -132,6 +141,7 @@ This setting can also be overridden in the CRYPTKEY property."
           (setq end (point)
 		(org-encrypt-string (buffer-substring beg end) crypt-key))
+	  (setq encrypted-text (org-crypt-wash-encrypted-string encrypted-text))
           (delete-region beg end)
           (insert encrypted-text)
           (when folded

^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2011-04-10 20:08 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-03-18 22:25 [PATCH] Wash output of org-encrypt-entry, take 3 Óscar Fuentes
2011-03-20 20:34 ` Bernt Hansen
2011-03-20 21:10 ` Bernt Hansen
2011-03-21 13:54 ` Julien Danjou
2011-04-10 20:08   ` David Maus

Code repositories for project(s) associated with this public inbox


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).