emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: "Óscar Fuentes" <ofv@wanadoo.es>
To: emacs-orgmode@gnu.org
Subject: [PATCH] Wash output of org-encrypt-entry, take 3
Date: Fri, 18 Mar 2011 23:25:11 +0100	[thread overview]
Message-ID: <87bp182hiw.fsf@wanadoo.es> (raw)

[-- 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

             reply	other threads:[~2011-03-18 22:30 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-03-18 22:25 Óscar Fuentes [this message]
2011-03-20 20:34 ` [PATCH] Wash output of org-encrypt-entry, take 3 Bernt Hansen
2011-03-20 21:10 ` Bernt Hansen
2011-03-21 13:54 ` Julien Danjou
2011-04-10 20:08   ` David Maus

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87bp182hiw.fsf@wanadoo.es \
    --to=ofv@wanadoo.es \
    --cc=emacs-orgmode@gnu.org \


* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).