emacs-orgmode
[Top][All Lists]
Advanced

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

Re: [O] idea, in-line preview link


From: Christian Moe
Subject: Re: [O] idea, in-line preview link
Date: Thu, 05 Apr 2012 13:55:09 +0200
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:11.0) Gecko/20120327 Thunderbird/11.0.1

Hi,

One of my first Lisp projects was a link type that behaves a bit like what you describe.

I don't bother with placing the snippet inline, though, I just flash it as a message in the minibuffer. But I also leave it on the kill ring, so I can C-y it into my current buffer if I like.

The following quick and dirty adaptation to your inlinefile idea comes with ABSOLUTELY NO WARRANTY.

#+BEGIN_SRC elisp
(defun my/org-inlinefile-get (file offset length)
  "Copy the line at OFFSET and LENGTH extra lines from FILE."
  (let (beg)
    (save-excursion
      (with-temp-buffer
        (insert-file-contents file)
        (forward-line (1- offset)) ; Go to beg of range
        (setq beg (point))
        (if length      
            (progn
              (goto-line (+ offset length))
              (kill-region beg (line-end-position)))
          (kill-line))
        (yank)))))

(defun my/org-inlinefile-open (path)
"Open a link by displaying the lines specified in PATH as a message and making them available for yanking."
  (let ((parts (split-string (org-no-properties path) "\\(::\\|\\+\\)"))
        file offset length beg)
    (setq file (car parts)
          offset (string-to-number (or (nth 1 parts) "0"))
          length (string-to-number (or (nth 2 parts) "0")))
    (my/org-inlinefile-get file offset length)
    (message (format "%s\n%s" path (current-kill 0)))))

(org-add-link-type "inlinefile" 'my/org-inlinefile-open (lambda (path desc format) desc))
#+END_SRC


Yours,
Christian


On 4/5/12 11:04 AM, Torsten Wagner wrote:
Hi,

recently I was wondering if org-mode could have some sort of inline
link. This would allow quick check-ups on details without having more
and more buffers open.
That is a link to another text (org-file) including text position like

[[file:~/code/main.c::255]]

However instead of open a new buffer and jump to that line, I would
like to see the line +x lines just below the link and possible only
until I move the cursor or by any other means close the link again

Thus

[[inlinefile:~/code/main.c::255+4]]

open it

[[inlinefile:~/code/main.c::255+4]]
    1. This is all code
    2. from main.c
    3. I can preview in org
    4. without switching the buffer
    5. is that useful?!

close it again and the buffer looks again like

[[inlinefile:~/code/main.c::255+4]]


Actually, I believe it is fairly easy to implement for people knowing
LISP just a bit better then me ;)

What do you think

Totti






reply via email to

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