emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Orgmode] Embedded code


From: Ido Magal
Subject: Re: [Orgmode] Embedded code
Date: Thu, 3 Feb 2011 22:52:27 -0800



On Fri, Jan 21, 2011 at 18:05, Eric Schulte <address@hidden> wrote:

There are a variety of ways to convert lists to strings, look at the
`format' function for printing any elisp value to a string.  You can
also use something like the following to convert a list to a string

#+begin_src emacs-lisp
 (mapconcat (lambda (el) (format "%S" el)) '(1 2 3 4 5 6) "\t")
#+end_src

... 

You can use the inline code syntax for very small blocks, e.g.


I've proceeded with my little project using the dynamic block, since it seems that this is what it was designed for. I wrote the following bit of code and would appreciate answers to a couple of questions.

#+begin_src emacs-lisp :results silent
(defun flatten-string-with-links (str)
  (let* ((newstr str))
    ; find [[link][desc]] and replace with 'desc.
    (setq newstr (replace-regexp-in-string "\\[\\[[^\\[]+\\]\\[[^//[]+\\]\\]"
                (lambda (s) (save-match-data
                         (nth 2 (split-string s "[\]\[]+")))) newstr))
    ; find [[link]] and replace with 'link.
    (setq newstr (replace-regexp-in-string "\\[\\[[^\\[]+\\]\\]"
   (lambda(s) (save-match-data
     (nth 1 (split-string s "[\]\[]+")))) newstr))
  newstr))

(defun org-dblock-write:tagged (params)
  (insert (mapconcat 'identity
    (org-map-entries
     (lambda()
(let* (link desc innerlink)
 (setq desc (nth 4 (org-heading-components)))
 (setq desc (flatten-string-with-links desc))
 (setq link (concat "file:"
    (abbreviate-file-name (buffer-file-name (buffer-base-buffer)))
    "::"
    (org-make-org-heading-search-string)))
 (org-make-link-string link desc)))
(plist-get params :tag)
(plist-get params :scope))
     "\n")))
 #+end_src

* example       :links:
** not a link
** [[http://google.com][link]]
** some text.[[http://google.com][link]]
** [[http://google.com]]
** some text. [[http://google.com][link]]. more text. [[http://google.com][link]]. final text.
** [[http://www.knifecenter.com/kc_new/store_detail.html?s%3DAOBSHARP][broken link]]

#+BEGIN: tagged :tag "links"
#+END


Q1: I've tried to leverage as much built-in org functionality as possible, but deeply suspect that I'm overlooking some, since agendas do much of this work.  Is there a simpler solution than mine?

Q2: The link generated for the last item ("broken link") does not work.  Removing the "%" from the URL fixes it.  This seems to be a bug in org-make-org-heading-search-string?  Or am I misusing it?

Any help would be greatly appreciated.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]