8
votes

Capture de mode org avec SEXP

J'essaie de créer un modèle de capture qui convertit une URL en mode Org en mode org avec le code> comme nom de lien.

Ma fonction de conversion ressemble à ceci: P>

setq org-capture-templates
    (quote
     (("l" "Link" entry (file+headline "" "Links")
       "* \"%c\" %(get-page-title \"%c\")"))))


0 commentaires

3 Réponses :


7
votes

Le problème est l'ordre d'expansion des paramètres de modèle. Les modèles simples % sont développés après l'évaluation du SEXP. Le message d'erreur d'origine contient toujours un modèle et est donc étendu au contenu du presse-papiers et que le message d'erreur ne contient pas la chaîne qui a été transmise à l'origine à get-page-titre .

La solution est d'accéder à la bague Kill de l'intérieur du SEXP: xxx

edit Ce comportement est maintenant documenté en mode org.


3 commentaires

@ Desvieuxgildas acceptant mes propres réponses est toujours un peu douloureux. Je l'ai mis à jour et l'accepté.


La façon dont j'ai lu le Page manuelle Il dit qu'il devrait fonctionner le contraire - "Évaluez ELISP SEXP et remplacer par le résultat. Pour plus de commodité,%: mot-clé (voir ci-dessous) Les espaces réservés dans l'expression seront élargis avant cela." Mais j'accepte ce que vous décrivez est ce qui semble se produire.


@Studgeek C'est très spécifique de la version. La partie sur la commodité a été ajoutée après avoir réparé la DOC pour mentionner la commande. Vérifiez votre version Org-Mode et vérifiez les résultats.



6
votes

La solution ne serait-elle pas à utiliser org-protocol.el? http://orgmode.org/worg/org-contrib/org-protocol.html

Je viens de le tester avec le modèle suivant (ajouter un sous-titre pour le titre souhaité comme titre). p>

Modèle: P>

** Testing for StackExchange
*** org-protocol.el - Intercept calls from emacsclient to trigger custom actions

  Source: [2011-08-05 Fri], [[http://orgmode.org/worg/org-contrib/org-protocol.html]
  [org-protocol.el - Intercept calls from emacsclient to trigger custom actions]]

    org-protocol intercepts calls from emacsclient to trigger custom actions
    without external dependencies.


5 commentaires

Belle solution. Je ne savais pas comment utiliser l'org-protocole préalablement, mais cela a certainement une légère convivialité que mon approche.


Je reviens ce que j'ai dit. Après avoir touché GConf et toutes ces autres choses non compatibles à l'envers, j'ai rampé dans mon tout emacs monde. C'est très confortable ici et je n'ai pas à supporter cette merde.


@PMR Cela pourrait peut-être avoir la peine d'être intéressé à la liste de diffusion de voir si quelqu'un a une méthode pour résoudre ce problème. Sinon, le plus proche, je peux venir voir quelque part, vous pourriez être en mesure de résoudre ce serait des lignes 8487-8498 d'Org.el qui font référence à la capture de W3 et W3M (devraient pouvoir ajouter au lien Org-store les accessoires d'inclure le titre)


Eh bien, tout fonctionne sur le côté Emacs et appelant manuellement EmacsClient avec des œuvres d'org-protocole. Convaincre l'un des outils bizarres GCONF à faire tout ce qui est dit est une autre histoire. ;)


@PMR Je ne l'avais pas encore testé sur Linux, j'avais fait le travail sur une machine XP et cela a bien fonctionné. Quand j'ai essayé sur ma boîte à une arche pendant le week-end, je suis venu au même problème que vous aviez, aucun gnome sur la boîte, donc aucun outil GCONF pour faire le correctif. Cependant, l'opéra était toujours en mesure de le faire fonctionner (peut configurer des protocoles personnalisés, pas seulement de la carte pour les valeurs par défaut). Je demanderai à la liste de diffusion dans laquelle je devrais regarder pour configurer le protocole lorsque les outils GCONF ne sont pas disponibles.



4
votes

@Aboabo a partagé une variable sans papiers dans https://stackoverflow.com/a/21080770/255961 qui fournit un Solution plus générale au sujet de la question de savoir comment utiliser Sexp avec des valeurs de mots clés dans un modèle (au-delà de la bague de tuer). La variable org-store-link-plist stocke toutes les informations transmises à la capture. Vous pouvez donc accéder à ses valeurs directement à partir d'une fonction comme celle-ci: xxx

ps, selon le page manuelle (citation ci-dessous) Cela me semble que votre approche à la question doit également fonctionner. Mais je conviens ce que vous décrivez est ce qui semble être réellement se produire - cela semble être un bug par rapport au manuel.

% (SEXP) Évaluez SEXP SEXP et remplacer par le résultat. Pour plus de commodité, %: Mot-clé (voir ci-dessous) Les espaces réservés dans l'expression seront élargi avant cela.


1 commentaires

Comme je l'ai déjà dit en réponse à votre commentaire: Assurez-vous que votre version org correspond à l'un des manuels en ligne. Votre approche semble fonctionner joliment bien que je n'aime pas goûter à des variables sans papiers pour des raisons évidentes.