Explorar el Código

New optional argument: Merge user table with default table

* org.el (org-link-escape): New optional argument.  Merge user table
with default table.
David Maus hace 15 años
padre
commit
27915744a2
Se han modificado 1 ficheros con 11 adiciones y 3 borrados
  1. 11 3
      lisp/org.el

+ 11 - 3
lisp/org.el

@@ -8614,14 +8614,22 @@ This is the list that is used for internal purposes.")
   "List of escapes for characters that are problematic in links.
   "List of escapes for characters that are problematic in links.
 This is the list that is used before handing over to the browser.")
 This is the list that is used before handing over to the browser.")
 
 
-(defun org-link-escape (text &optional table)
+(defun org-link-escape (text &optional table merge)
   "Return percent escaped representation of TEXT.
   "Return percent escaped representation of TEXT.
 TEXT is a string with the text to escape.
 TEXT is a string with the text to escape.
 Optional argument TABLE is a list with characters that should be
 Optional argument TABLE is a list with characters that should be
-escaped.  When nil, `org-link-escape-chars' is used."
+escaped.  When nil, `org-link-escape-chars' is used.
+If optional argument MERGE is set, merge TABLE into
+`org-link-escape-chars'."
   (if (and org-url-encoding-use-url-hexify (not table))
   (if (and org-url-encoding-use-url-hexify (not table))
       (url-hexify-string text)
       (url-hexify-string text)
-    (setq table (or table org-link-escape-chars))
+    (cond
+     ((and table merge)
+      (mapc (lambda (defchr)
+	      (unless (member defchr table)
+		(setq table (cons defchr table)))) org-link-escape-chars))
+     ((null table)
+      (setq table org-link-escape-chars)))
     (mapconcat
     (mapconcat
      (lambda (char)
      (lambda (char)
        (if (or (member char table)
        (if (or (member char table)