Estoy tratando de crear una plantilla de captura que convierta una URL a un enlace de modo orgánico con el <title>
como nombre del enlace.org-mode capture with sexp
Mi función de conversión es el siguiente:
(defun get-page-title (url)
"Get title of web page, whose url can be found in the current line"
;; Get title of web page, with the help of functions in url.el
(with-current-buffer (url-retrieve-synchronously url)
;; find title by grep the html code
(goto-char 0)
(re-search-forward "<title>\\([^<]*\\)</title>" nil t 1)
(setq web_title_str (match-string 1))
;; find charset by grep the html code
(goto-char 0)
;; find the charset, assume utf-8 otherwise
(if (re-search-forward "charset=\\([-0-9a-zA-Z]*\\)" nil t 1)
(setq coding_charset (downcase (match-string 1)))
(setq coding_charset "utf-8")
;; decode the string of title.
(setq web_title_str (decode-coding-string web_title_str (intern
coding_charset)))
)
(concat "[[" url "][" web_title_str "]]")
))
cuando se llama desde emacs normales Lisp código devuelve el resultado correcto. Pero cuando se usa en este org-capture-template
, solo devuelve bad url
.
setq org-capture-templates
(quote
(("l" "Link" entry (file+headline "" "Links")
"* \"%c\" %(get-page-title \"%c\")"))))
es el orden de expansión diferente? ¿Debo escapar de la cadena de manera diferente? ¿Magia? El primer %c
es solo para depurar la cadena y, de hecho, se está imprimiendo como "url".
Por favor, ni se moleste en señalar que analizar XML con expresiones regulares es el enfoque equivocado. Cthulhu es que ya me persigue y esto no va a empeorar las cosas.
¿Por qué no es una respuesta aceptada? –
@LeVieuxGildas Aceptar mis propias respuestas siempre es un poco doloroso. Lo actualicé y lo acepté. – pmr
La forma en que leo la [página del manual] (http://orgmode.org/manual/Template-expansion.html#Template-expansion) dice que debería funcionar al revés: "Evalúe Elisp sexp y reemplácelo por el resultado". conveniencia,%: palabra clave (ver a continuación) los marcadores de posición dentro de la expresión se expandirán antes de esto. " Pero estoy de acuerdo en que lo que describes es lo que parece estar sucediendo. – studgeek