[emacs-berlin] Magic magit

Rasmus rasmus at gmx.us
Sun Oct 4 20:47:07 UTC 2015


Hi,

Tilmann Singer <tils at tils.net> writes:

> If I understand correctly, the org-capture approach would be either to
> create a capture template for each possible target org file - with that
> there would be no pre-guessing - or create a single capture template
> that uses a custom function to select the target file. With this, it
> wouldn't be possible to change the suggested guess though. Maybe this is
> not a big deal anyway and I should just use that approach, I'll think
> about it.

To the best of my knowledge this is incorrect.  org-capture-templates
supports a function target cf. the docstring.

       (function function-finding-location)
          Most general way, write your own function to find both
          file and location

I haven’t used this, and you may have to Use The Source, to figure how the
functions is supposed to work.  Here’s an example of a file+function
target:

("j" "article" item 
           (file+function "~/documents/papers.org"
                          (lambda ()
                            (org-goto-local-search-headings
                             (ido-completing-read
                              "File note to: "
                              (org-element-map
                                  (org-element-parse-buffer)
                                  'headline
                                (lambda (hl)
                                  (and (= (org-element-property :level hl) 1)
                                       (org-element-property :title hl)))))
                             nil nil)
                            (forward-line 1)
                            (insert "\n"))
            :prepend t
            :empty-lines-after 1)
           "%U: %?\n")

>>  0. What's wrong with (insert "* TODO " link " :mail:") ?  You could get
>>     the relative level with (org-outline-level).
>
> Nothing wrong with insert, I just thought it would be good practice to
> use org specific functions when doing things inside org-mode.

As you prefer; IMO it’s over-complicating.

> this also doesn't indent it properly. It seems to be related to
> inserting a link - with normal text inserted it works. This reproduces
> it:
>
> (with-current-buffer (find-file-noselect "/tmp/test.org")
>   (save-excursion
>     (end-of-buffer)
>     (insert "* TODO " "[[file:~/.emacs.d/notmuch-stuff.el][This is a test]]")
>     (org-set-tags-to ":mail:")
>     (when org-auto-align-tags (org-align-tags-here org-tags-column))))

I see the same.  Something funky is going on, though I’m not sure what.
Try to put it into a function and run it through edebug.  Then it works...

As you suggests, this probably has something to do with invisibility of
the link...  I don’t have a satisfactory answer to this.


>> (insert "\n") ? 
>
> Right, (org-return) is over the top. Maybe even (newline) ?

Yeah.  Org return is magic in headlines (TODOs and tags are preserved
since 8.3 I think) and tables.

Rasmus

-- 
I hear there's rumors on the, uh, Internets. . .


More information about the emacs-berlin mailing list