[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[O] [PATCH] org-protocol: Allow optional port specification
From: |
Sacha Chua |
Subject: |
[O] [PATCH] org-protocol: Allow optional port specification |
Date: |
Wed, 02 Dec 2015 11:02:49 -0500 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (gnu/linux) |
I was trying to get org-protocol to work on KDE Plasma 5.4.2. I set up
my ~/.kde/share/kde4/services/org.protocol, but the standard
org-protocol sample syntax:
org-protocol://store-link://URL/TITLE
resulted in the error:
Malformed URL
Port field was empty; source was "..."; scheme = "org-protocol",
host = "store-link", path = "// ..."
Modifying my Javascript to create links of the form:
org-protocol://store-link:0//URL/TITLE
made org-protocol correctly pass the link to emacsclient KDE 5.4.2. This
patch allows the optional specification of a port in the URI. What do
you think?
>From 0533b2e76a9cb965ea8f4ea5b3804d17c2bd3b5d Mon Sep 17 00:00:00 2001
From: Sacha Chua <address@hidden>
Date: Wed, 2 Dec 2015 10:53:07 -0500
Subject: [PATCH] org-protocol: Allow optional port specification
* lisp/org-protocol.el (org-protocol-check-filename-for-protocol):
Recognize and ignore ports specified as part of the protocol or
sub-protocol. This seems to be necessary to avoid "Port field was
empty" errors in newer versions of KDE.
* testing/lisp/test-org-protocol.el: New file with a test for
`org-protocol-check-filename-for-protocol'.
---
lisp/org-protocol.el | 2 +-
testing/lisp/test-org-protocol.el | 39 +++++++++++++++++++++++++++++++++++++++
2 files changed, 40 insertions(+), 1 deletion(-)
create mode 100644 testing/lisp/test-org-protocol.el
diff --git a/lisp/org-protocol.el b/lisp/org-protocol.el
index 339f2b7..150f458 100644
--- a/lisp/org-protocol.el
+++ b/lisp/org-protocol.el
@@ -532,7 +532,7 @@ as filename."
(when (string-match the-protocol fname)
(dolist (prolist sub-protocols)
(let ((proto (concat the-protocol
- (regexp-quote (plist-get (cdr prolist)
:protocol)) ":/+")))
+ (regexp-quote (plist-get (cdr prolist)
:protocol)) ":[^/]*/+")))
(when (string-match proto fname)
(let* ((func (plist-get (cdr prolist) :function))
(greedy (plist-get (cdr prolist) :greedy))
diff --git a/testing/lisp/test-org-protocol.el
b/testing/lisp/test-org-protocol.el
new file mode 100644
index 0000000..94be520
--- /dev/null
+++ b/testing/lisp/test-org-protocol.el
@@ -0,0 +1,39 @@
+;;; test-org-protocol.el --- tests for org-protocol.el
+
+;; Copyright (c) Sacha Chua
+;; Authors: Sacha Chua
+
+;; This file is not part of GNU Emacs.
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Code:
+
+(ert-deftest test-org-protocol/org-protocol-check-filename-for-protocol ()
+ "Test `org-protocol-check-filename-for-protocol' specifications."
+ ;; Store link
+ (let ((uri "/some/directory/org-protocol:/store-link:/URL/TITLE"))
+ (should (null (org-protocol-check-filename-for-protocol uri (list uri)
nil))))
+ (should (equal (car org-stored-links) '("URL" "TITLE")))
+ ;; Handle multiple slashes
+ (let ((uri "/some/directory/org-protocol://store-link://URL2//TITLE2"))
+ (should (null (org-protocol-check-filename-for-protocol uri (list uri)
nil))))
+ (should (equal (car org-stored-links) '("URL2" "TITLE2")))
+ ;; Ignore port - useful for KDE
+ (let ((uri "/some/directory/org-protocol:/store-link:0//URL3//TITLE3"))
+ (should (null (org-protocol-check-filename-for-protocol uri (list uri)
nil))))
+ (should (equal (car org-stored-links) '("URL3" "TITLE3"))))
+
+
+;;; test-org-protocol.el ends here
--
2.6.3
(Copyright papers are on file.)
Sacha
- [O] [PATCH] org-protocol: Allow optional port specification,
Sacha Chua <=
- Re: [O] [PATCH] org-protocol: Allow optional port specification, Rasmus, 2015/12/02
- Re: [O] [PATCH] org-protocol: Allow optional port specification, Aaron Ecay, 2015/12/03
- [O] [PATCH] org-protocol: Allow key=val&key2=value2-style URLs, Sacha Chua, 2015/12/04
- Re: [O] [PATCH] org-protocol: Allow key=val&key2=value2-style URLs, Aaron Ecay, 2015/12/05
- Re: [O] [PATCH] org-protocol: Allow key=val&key2=value2-style URLs, Sacha Chua, 2015/12/07
- Re: [O] [PATCH] org-protocol: Allow key=val&key2=value2-style URLs, Sacha Chua, 2015/12/07
- Re: [O] [PATCH] org-protocol: Allow key=val&key2=value2-style URLs, Sacha Chua, 2015/12/18
- Re: [O] [PATCH] org-protocol: Allow key=val&key2=value2-style URLs, Nicolas Goaziou, 2015/12/20
- Re: [O] [PATCH] org-protocol: Allow key=val&key2=value2-style URLs, Sacha Chua, 2015/12/21
- Re: [O] [PATCH] org-protocol: Allow key=val&key2=value2-style URLs, Nicolas Goaziou, 2015/12/22