emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* [PATCH] org-passwords.el: Improvements
@ 2014-09-01 23:06 Jorge A. Alfaro-Murillo
  2014-10-12 12:38 ` Bastien
  0 siblings, 1 reply; 4+ messages in thread
From: Jorge A. Alfaro-Murillo @ 2014-09-01 23:06 UTC (permalink / raw)
  To: emacs-orgmode

Some development in the password manager.

Best,

Jorge.

* contrib/lisp/org-passwords.el (org-passwords-default-password-size,
org-passwords-default-random-words-number): New variables.
(org-passwords-copy-username, org-passwords-copy-password): Use
org-entry-get to obtain the property value.
(org-passwords-open-url): New function.
(org-passwords): Can be called with universal argument.
(org-passwords-generate-password): Use default size given by
`org-passwords-default-password-size'.
(org-passwords-random-words): Use default number given by
`org-passwords-default-random-words-number'.
(org-passwords-concat-this-with-string): Fix bug.

The patch adds several functionality:

Open the URL property directly from the mode. URLs can be inherit.

Universal argument in org-passwords allows for longer browsing. Two
arguments is used for editing.

There is a default password size and random-words number for faster
password generating.

Fix bug in C-u M-x org-passwords-generate-password.

Commentary in file has more information.

---
 contrib/lisp/org-passwords.el | 134 +++++++++++++++++++++++++++---------------
 1 file changed, 88 insertions(+), 46 deletions(-)

diff --git a/contrib/lisp/org-passwords.el b/contrib/lisp/org-passwords.el
index 7ed8c80..b10a5f7 100644
--- a/contrib/lisp/org-passwords.el
+++ b/contrib/lisp/org-passwords.el
@@ -23,12 +23,14 @@
 ;;; Commentary:
 
 ;; This file contains the code for managing your passwords with
-;; Org-mode.
+;; Org-mode. It is part of org/contrib (see http://orgmode.org/). If
+;; you want to contribute with development, or have a problem, do it
+;; here: https://bitbucket.org/alfaromurillo/org-passwords.el
 
 ;; A basic setup needs to indicate a passwords file, and a dictionary
 ;; for the random words:
 
-;;   (require org-passwords)
+;;   (require 'org-passwords)
 ;;   (setq org-passwords-file "~/documents/passwords.gpg")
 ;;   (setq org-passwords-random-words-dictionary "/etc/dictionaries-common/words")
 
@@ -54,13 +56,12 @@
 ;;   `org-passwords-random-words-substitutions'.
 
 ;; It is also useful to set up keybindings for the functions
-;; `org-passwords-copy-username' and
-;; `org-passwords-copy-password' in the
-;; `org-passwords-mode', to easily make the passwords and usernames
-;; available to the facility for pasting text of the window system
-;; (clipboard on X and MS-Windows, pasteboard on Nextstep/Mac OS,
-;; etc.), without inserting them in the kill-ring. You can set for
-;; example:
+;; `org-passwords-copy-username', `org-passwords-copy-password' and
+;; `org-passwords-open-url' in the `org-passwords-mode', to easily
+;; make the passwords and usernames available to the facility for
+;; pasting text of the window system (clipboard on X and MS-Windows,
+;; pasteboard on Nextstep/Mac OS, etc.), without inserting them in the
+;; kill-ring. You can set for example:
 
 ;;   (eval-after-load "org-passwords"
 ;;     '(progn
@@ -69,12 +70,15 @@
 ;; 	 'org-passwords-copy-username)
 ;;        (define-key org-passwords-mode-map
 ;; 	 (kbd "C-c p")
-;; 	 'org-passwords-copy-password)))
+;; 	 'org-passwords-copy-password)
+;; 	 (kbd "C-c o")
+;; 	 'org-passwords-open-url)))
 
-;; Finally, to enter new passwords, you can use `org-capture' and a minimal template like:
+;; Finally, to enter new passwords, you can use `org-capture' and a
+;; minimal template like:
 
 ;;   ("p" "password" entry (file "~/documents/passwords.gpg")
-;;    "* %^{Title}\n  %^{PASSWORD}p %^{USERNAME}p")
+;;    "* %^{Title}\n  %^{URL}p %^{USERNAME}p %^{PASSWORD}p")
 
 ;; When asked for the password you can then call either
 ;; `org-passwords-generate-password' or `org-passwords-random-words'.
@@ -87,6 +91,7 @@
 
 (require 'org)
 
+;;;###autoload
 (define-derived-mode org-passwords-mode org-mode
   "org-passwords-mode"
   "Mode for storing passwords"
@@ -97,12 +102,17 @@
   :group 'org)
 
 (defcustom org-passwords-password-property "PASSWORD"
-  "Name of the property for password entry password."
+  "Name of the property for password entry."
   :type 'string
   :group 'org-passwords)
 
 (defcustom org-passwords-username-property "USERNAME"
-  "Name of the property for password entry user name."
+  "Name of the property for user name entry."
+  :type 'string
+  :group 'org-passwords)
+
+(defcustom org-passwords-url-property "URL"
+  "Name of the property for URL entry."
   :type 'string
   :group 'org-passwords)
 
@@ -117,6 +127,12 @@ string, a number followed by units."
   :type 'str
   :group 'org-passwords)
 
+(defcustom org-passwords-default-password-size "20"
+  "Default number of characters to use in
+org-passwords-generate-password. It has to be a string."
+  :type 'str
+  :group 'org-passwords)
+
 (defcustom org-passwords-random-words-dictionary nil
   "Default file name for the file that contains a dictionary of
 words for `org-passwords-random-words'. Each non-empty line in
@@ -124,6 +140,12 @@ the file is considered a word."
   :type 'file
   :group 'org-passwords)
 
+(defcustom org-passwords-default-random-words-number "5"
+  "Default number of words to use in org-passwords-random-words.
+It has to be a string."
+  :type 'str
+  :group 'org-passwords)
+
 (defvar org-passwords-random-words-separator "-"
   "A string to separate words in `org-passwords-random-words'.")
 
@@ -143,16 +165,9 @@ facility for pasting text of the window system (clipboard on X
 and MS-Windows, pasteboard on Nextstep/Mac OS, etc.), without
 putting it in the kill ring."
   (interactive)
-  (save-excursion
-    (search-backward-regexp "^\\*")
-    (search-forward-regexp (concat "^[[:space:]]*:"
-				   org-passwords-password-property
-				   ":[[:space:]]*"))
-    (funcall interprogram-cut-function
-	     (buffer-substring-no-properties (point)
-					     (funcall (lambda ()
-							(end-of-line)
-							(point)))))))
+  (funcall interprogram-cut-function
+           (org-entry-get (point)
+			  org-passwords-password-property)))
 
 (defun org-passwords-copy-username ()
   "Makes the password available to other programs. Puts the
@@ -161,25 +176,33 @@ facility for pasting text of the window system (clipboard on X
 and MS-Windows, pasteboard on Nextstep/Mac OS, etc.), without
 putting it in the kill ring."
   (interactive)
-  (save-excursion
-    (search-backward-regexp "^\\*")
-    (search-forward-regexp (concat "^[[:space:]]*:"
-				   org-passwords-username-property
-				   ":[[:space:]]*"))
-    (funcall interprogram-cut-function
-	     (buffer-substring-no-properties (point)
-					     (funcall (lambda ()
-							(end-of-line)
-							(point)))))))
-
-(defun org-passwords ()
+  (funcall interprogram-cut-function
+           (org-entry-get (point)
+			  org-passwords-username-property
+			  t)))
+
+(defun org-passwords-open-url ()
+  "Browse the URL associated with the entry at the location of
+the cursor."
+  (interactive)
+  (browse-url (org-entry-get (point)
+			    org-passwords-url-property
+			    t)))
+
+;;;###autoload
+(defun org-passwords (&optional arg)
   "Open the password file. Open the password file defined by the
 variable `org-password-file' in read-only mode and kill that
 buffer later according to the value of the variable
 `org-passwords-time-opened'. It also adds the `org-password-file'
 to the auto-mode-alist so that it is opened with its mode being
-`org-passwords-mode'."
-  (interactive)
+`org-passwords-mode'.
+
+With prefix arg ARG, the command does not set up a timer to kill the buffer.
+
+With a double prefix arg \\[universal-argument] \\[universal-argument], open the file for editing.
+"
+  (interactive "P")
   (if org-passwords-file
       (progn
 	(add-to-list 'auto-mode-alist
@@ -187,8 +210,13 @@ to the auto-mode-alist so that it is opened with its mode being
 		      (regexp-quote
 		       (expand-file-name org-passwords-file))
 		      'org-passwords-mode))
-	(find-file-read-only org-passwords-file)
-	(org-passwords-set-up-kill-password-buffer))
+	(if (equal arg '(4))
+	    (find-file-read-only org-passwords-file)
+	  (if (equal arg '(16))
+	      (find-file org-passwords-file)
+	    (progn
+	      (find-file-read-only org-passwords-file)
+	      (org-passwords-set-up-kill-password-buffer)))))
     (minibuffer-message "No default password file defined. Set the variable `org-password-file'.")))
 
 (defun org-passwords-set-up-kill-password-buffer ()
@@ -211,8 +239,15 @@ Password has a random string of numbers, lowercase letters, and
 uppercase letters.  Argument ARG include symbols."
   (interactive "P")
   (let ((number-of-chars
-	 (string-to-number
-	  (read-from-minibuffer "Number of Characters: "))))
+	 (read-from-minibuffer
+	  (concat "Number of characters (default "
+		  org-passwords-default-password-size
+		  "): ")
+	  nil
+	  nil
+	  t
+	  nil
+	  org-passwords-default-password-size)))
     (if arg
 	(insert (org-passwords-generate-password-with-symbols "" number-of-chars))
 	(insert (org-passwords-generate-password-without-symbols "" number-of-chars)))))
@@ -269,8 +304,15 @@ the words as defined by
   (interactive "P")
   (if org-passwords-random-words-dictionary
       (let ((number-of-words
-	     (string-to-number
-	      (read-from-minibuffer "Number of words: ")))
+	     (read-from-minibuffer
+	      (concat "Number of words (default "
+		      org-passwords-default-random-words-number
+		      "): ")
+	      nil
+	      nil
+	      t
+	      nil
+	      org-passwords-default-random-words-number))
 	    (list-of-words
 	     (with-temp-buffer
 	       (insert-file-contents
@@ -333,8 +375,8 @@ Substitutions are made in order of the list, so for example:
       (concat (car list-of-strings)
 	      this
 	      (org-passwords-concat-this-with-string
-	       (cdr list-of-strings)
-	       this))
+	       this
+	       (cdr list-of-strings)))
     (car list-of-strings)))
 
 (provide 'org-passwords)
-- 
2.1.0

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

* Re: [PATCH] org-passwords.el: Improvements
  2014-09-01 23:06 [PATCH] org-passwords.el: Improvements Jorge A. Alfaro-Murillo
@ 2014-10-12 12:38 ` Bastien
  2014-10-12 20:25   ` Jorge A. Alfaro-Murillo
  0 siblings, 1 reply; 4+ messages in thread
From: Bastien @ 2014-10-12 12:38 UTC (permalink / raw)
  To: Jorge A. Alfaro-Murillo; +Cc: emacs-orgmode

Hi Jorge,

jorge.alfaro-murillo@yale.edu (Jorge A. Alfaro-Murillo) writes:

> Some development in the password manager.

Can you resend the patch as an attachment?

If you have commit access, feel free to push your commit directly.

Thanks!

-- 
 Bastien

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

* Re: [PATCH] org-passwords.el: Improvements
  2014-10-12 12:38 ` Bastien
@ 2014-10-12 20:25   ` Jorge A. Alfaro-Murillo
  2014-10-12 22:33     ` Bastien
  0 siblings, 1 reply; 4+ messages in thread
From: Jorge A. Alfaro-Murillo @ 2014-10-12 20:25 UTC (permalink / raw)
  To: emacs-orgmode

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

Bastien writes: 

> Can you resend the patch as an attachment?

Sure, it is attached. 
 
> If you have commit access, feel free to push your commit 
> directly.

I do not have commit access.

Best, 
--  Jorge.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Improve-functionality-of-org-passwords.el.patch --]
[-- Type: text/x-diff, Size: 10729 bytes --]

From 4b1b7f291af29b94919620f9a824c2da1ce09458 Mon Sep 17 00:00:00 2001
From: "Jorge A. Alfaro Murillo" <jorge@jabberwocky>
Date: Sun, 12 Oct 2014 16:14:34 -0400
Subject: [PATCH] Improve functionality of org-passwords.el

* contrib/lisp/org-passwords.el (org-passwords-default-password-size):
  New variable.
(org-passwords-default-random-words-number): New variable.
(org-passwords-copy-username, org-passwords-copy-password): Use
`org-entry-get' to obtain the property value.
(org-passwords-open-url): New function.
(org-passwords): Can be called with universal argument.
(org-passwords-generate-password): Use default size given by
`org-passwords-default-password-size'.
(org-passwords-random-words): Use default number given by
`org-passwords-default-random-words-number'.
(org-passwords-concat-this-with-string): Fix bug.

The patch adds several functionality:

Open the URL property directly from the mode. URLs can be inherit.

Universal argument in org-passwords allows for longer browsing. Two
arguments is used for editing.

There is a default password size and random-words number for faster
password generating.

Fix bug in C-u M-x org-passwords-generate-password.

Commentary in file has more information.
---
 contrib/lisp/org-passwords.el | 144 +++++++++++++++++++++++++++---------------
 1 file changed, 93 insertions(+), 51 deletions(-)

diff --git a/contrib/lisp/org-passwords.el b/contrib/lisp/org-passwords.el
index 9c3a916..4ebd5a6 100644
--- a/contrib/lisp/org-passwords.el
+++ b/contrib/lisp/org-passwords.el
@@ -23,12 +23,14 @@
 ;;; Commentary:
 
 ;; This file contains the code for managing your passwords with
-;; Org-mode.
+;; Org-mode. It is part of org/contrib (see http://orgmode.org/). If
+;; you want to contribute with development, or have a problem, do it
+;; here: https://bitbucket.org/alfaromurillo/org-passwords.el
 
 ;; A basic setup needs to indicate a passwords file, and a dictionary
 ;; for the random words:
 
-;;   (require org-passwords)
+;;   (require 'org-passwords)
 ;;   (setq org-passwords-file "~/documents/passwords.gpg")
 ;;   (setq org-passwords-random-words-dictionary "/etc/dictionaries-common/words")
 
@@ -54,13 +56,12 @@
 ;;   `org-passwords-random-words-substitutions'.
 
 ;; It is also useful to set up keybindings for the functions
-;; `org-passwords-copy-username' and
-;; `org-passwords-copy-password' in the
-;; `org-passwords-mode', to easily make the passwords and usernames
-;; available to the facility for pasting text of the window system
-;; (clipboard on X and MS-Windows, pasteboard on Nextstep/Mac OS,
-;; etc.), without inserting them in the kill-ring. You can set for
-;; example:
+;; `org-passwords-copy-username', `org-passwords-copy-password' and
+;; `org-passwords-open-url' in the `org-passwords-mode', to easily
+;; make the passwords and usernames available to the facility for
+;; pasting text of the window system (clipboard on X and MS-Windows,
+;; pasteboard on Nextstep/Mac OS, etc.), without inserting them in the
+;; kill-ring. You can set for example:
 
 ;;   (eval-after-load "org-passwords"
 ;;     '(progn
@@ -69,12 +70,15 @@
 ;; 	 'org-passwords-copy-username)
 ;;        (define-key org-passwords-mode-map
 ;; 	 (kbd "C-c p")
-;; 	 'org-passwords-copy-password)))
+;; 	 'org-passwords-copy-password)
+;; 	 (kbd "C-c o")
+;; 	 'org-passwords-open-url)))
 
-;; Finally, to enter new passwords, you can use `org-capture' and a minimal template like:
+;; Finally, to enter new passwords, you can use `org-capture' and a
+;; minimal template like:
 
 ;;   ("p" "password" entry (file "~/documents/passwords.gpg")
-;;    "* %^{Title}\n  %^{PASSWORD}p %^{USERNAME}p")
+;;    "* %^{Title}\n  %^{URL}p %^{USERNAME}p %^{PASSWORD}p")
 
 ;; When asked for the password you can then call either
 ;; `org-passwords-generate-password' or `org-passwords-random-words'.
@@ -87,6 +91,7 @@
 
 (require 'org)
 
+;;;###autoload
 (define-derived-mode org-passwords-mode org-mode
   "org-passwords-mode"
   "Mode for storing passwords"
@@ -97,12 +102,17 @@
   :group 'org)
 
 (defcustom org-passwords-password-property "PASSWORD"
-  "Name of the property for password entry password."
+  "Name of the property for password entry."
   :type 'string
   :group 'org-passwords)
 
 (defcustom org-passwords-username-property "USERNAME"
-  "Name of the property for password entry user name."
+  "Name of the property for user name entry."
+  :type 'string
+  :group 'org-passwords)
+
+(defcustom org-passwords-url-property "URL"
+  "Name of the property for URL entry."
   :type 'string
   :group 'org-passwords)
 
@@ -117,6 +127,12 @@ string, a number followed by units."
   :type 'str
   :group 'org-passwords)
 
+(defcustom org-passwords-default-password-size "20"
+  "Default number of characters to use in
+org-passwords-generate-password. It has to be a string."
+  :type 'str
+  :group 'org-passwords)
+
 (defcustom org-passwords-random-words-dictionary nil
   "Default file name for the file that contains a dictionary of
 words for `org-passwords-random-words'. Each non-empty line in
@@ -124,6 +140,12 @@ the file is considered a word."
   :type 'file
   :group 'org-passwords)
 
+(defcustom org-passwords-default-random-words-number "5"
+  "Default number of words to use in org-passwords-random-words.
+It has to be a string."
+  :type 'str
+  :group 'org-passwords)
+
 (defvar org-passwords-random-words-separator "-"
   "A string to separate words in `org-passwords-random-words'.")
 
@@ -143,16 +165,9 @@ facility for pasting text of the window system (clipboard on X
 and MS-Windows, pasteboard on Nextstep/Mac OS, etc.), without
 putting it in the kill ring."
   (interactive)
-  (save-excursion
-    (search-backward-regexp "^\\*")
-    (search-forward-regexp (concat "^[[:space:]]*:"
-				   org-passwords-password-property
-				   ":[[:space:]]*"))
-    (funcall interprogram-cut-function
-	     (buffer-substring-no-properties (point)
-					     (funcall (lambda ()
-							(end-of-line)
-							(point)))))))
+  (funcall interprogram-cut-function
+           (org-entry-get (point)
+			  org-passwords-password-property)))
 
 (defun org-passwords-copy-username ()
   "Makes the password available to other programs. Puts the
@@ -161,25 +176,33 @@ facility for pasting text of the window system (clipboard on X
 and MS-Windows, pasteboard on Nextstep/Mac OS, etc.), without
 putting it in the kill ring."
   (interactive)
-  (save-excursion
-    (search-backward-regexp "^\\*")
-    (search-forward-regexp (concat "^[[:space:]]*:"
-				   org-passwords-username-property
-				   ":[[:space:]]*"))
-    (funcall interprogram-cut-function
-	     (buffer-substring-no-properties (point)
-					     (funcall (lambda ()
-							(end-of-line)
-							(point)))))))
-
-(defun org-passwords ()
+  (funcall interprogram-cut-function
+           (org-entry-get (point)
+			  org-passwords-username-property
+			  t)))
+
+(defun org-passwords-open-url ()
+  "Browse the URL associated with the entry at the location of
+the cursor."
+  (interactive)
+  (browse-url (org-entry-get (point)
+			    org-passwords-url-property
+			    t)))
+
+;;;###autoload
+(defun org-passwords (&optional arg)
   "Open the password file. Open the password file defined by the
 variable `org-password-file' in read-only mode and kill that
 buffer later according to the value of the variable
 `org-passwords-time-opened'. It also adds the `org-password-file'
 to the auto-mode-alist so that it is opened with its mode being
-`org-passwords-mode'."
-  (interactive)
+`org-passwords-mode'.
+
+With prefix arg ARG, the command does not set up a timer to kill the buffer.
+
+With a double prefix arg \\[universal-argument] \\[universal-argument], open the file for editing.
+"
+  (interactive "P")
   (if org-passwords-file
       (progn
 	(add-to-list 'auto-mode-alist
@@ -187,8 +210,13 @@ to the auto-mode-alist so that it is opened with its mode being
 		      (regexp-quote
 		       (expand-file-name org-passwords-file))
 		      'org-passwords-mode))
-	(find-file-read-only org-passwords-file)
-	(org-passwords-set-up-kill-password-buffer))
+	(if (equal arg '(4))
+	    (find-file-read-only org-passwords-file)
+	  (if (equal arg '(16))
+	      (find-file org-passwords-file)
+	    (progn
+	      (find-file-read-only org-passwords-file)
+	      (org-passwords-set-up-kill-password-buffer)))))
     (minibuffer-message "No default password file defined. Set the variable `org-password-file'.")))
 
 (defun org-passwords-set-up-kill-password-buffer ()
@@ -211,8 +239,15 @@ Password has a random string of numbers, lowercase letters, and
 uppercase letters.  Argument ARG include symbols."
   (interactive "P")
   (let ((number-of-chars
-	 (string-to-number
-	  (read-from-minibuffer "Number of Characters: "))))
+	 (read-from-minibuffer
+	  (concat "Number of characters (default "
+		  org-passwords-default-password-size
+		  "): ")
+	  nil
+	  nil
+	  t
+	  nil
+	  org-passwords-default-password-size)))
     (if arg
 	(insert (org-passwords-generate-password-with-symbols "" number-of-chars))
 	(insert (org-passwords-generate-password-without-symbols "" number-of-chars)))))
@@ -222,11 +257,11 @@ uppercase letters.  Argument ARG include symbols."
 NUMS-OF-CHARS random characters."
   (if (eq nums-of-chars 0) previous-string
     (org-passwords-generate-password-with-symbols
-	     (concat previous-string
-		     (char-to-string
-		      ;; symbols, letters, numbers are from 33 to 126
-		      (+ (random (- 127 33)) 33)))
-	     (1- nums-of-chars))))
+     (concat previous-string
+	     (char-to-string
+	      ;; symbols, letters, numbers are from 33 to 126
+	      (+ (random (- 127 33)) 33)))
+     (1- nums-of-chars))))
 
 (defun org-passwords-generate-password-without-symbols (previous-string nums-of-chars)
   "Return string consisting of PREVIOUS-STRING and NUMS-OF-CHARS
@@ -269,8 +304,15 @@ the words as defined by
   (interactive "P")
   (if org-passwords-random-words-dictionary
       (let ((number-of-words
-	     (string-to-number
-	      (read-from-minibuffer "Number of words: ")))
+	     (read-from-minibuffer
+	      (concat "Number of words (default "
+		      org-passwords-default-random-words-number
+		      "): ")
+	      nil
+	      nil
+	      t
+	      nil
+	      org-passwords-default-random-words-number))
 	    (list-of-words
 	     (with-temp-buffer
 	       (insert-file-contents
@@ -333,8 +375,8 @@ Substitutions are made in order of the list, so for example:
       (concat (car list-of-strings)
 	      this
 	      (org-passwords-concat-this-with-string
-	       (cdr list-of-strings)
-	       this))
+	       this
+	       (cdr list-of-strings)))
     (car list-of-strings)))
 
 (provide 'org-passwords)
-- 
2.1.0


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

* Re: [PATCH] org-passwords.el: Improvements
  2014-10-12 20:25   ` Jorge A. Alfaro-Murillo
@ 2014-10-12 22:33     ` Bastien
  0 siblings, 0 replies; 4+ messages in thread
From: Bastien @ 2014-10-12 22:33 UTC (permalink / raw)
  To: Jorge A. Alfaro-Murillo; +Cc: emacs-orgmode

Hi Jorge,

jorge.alfaro-murillo@yale.edu (Jorge A. Alfaro-Murillo) writes:

> Bastien writes: 
>
>> Can you resend the patch as an attachment?
>
> Sure, it is attached.

Applied, thanks!

>> If you have commit access, feel free to push your commit directly.
>
> I do not have commit access.

Please send me your public key if you want commit access.

Best,

-- 
 Bastien

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

end of thread, other threads:[~2014-10-12 22:33 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-09-01 23:06 [PATCH] org-passwords.el: Improvements Jorge A. Alfaro-Murillo
2014-10-12 12:38 ` Bastien
2014-10-12 20:25   ` Jorge A. Alfaro-Murillo
2014-10-12 22:33     ` Bastien

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

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

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).