emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* More wiki-like behaviour
@ 2009-02-05 19:48 Paul Sexton
  2010-08-07  6:27 ` Carsten Dominik
  0 siblings, 1 reply; 2+ messages in thread
From: Paul Sexton @ 2009-02-05 19:48 UTC (permalink / raw)
  To: emacs-orgmode


[-- Attachment #1.1: Type: text/plain, Size: 2021 bytes --]

Hi,
I am interested in using Org mode to create a personal wiki (along the
lines of Wikidpad: http://wikidpad.sourceforge.net/ ), treating top
level headings (one star) as wiki topics.
 
To do this, I have added 2 behaviours to Org-mode.
 
1. Always narrow to subtree after following an internal link (ideally I
would like to only narrow to the relevant one-star heading).
Added to .emacs:
 
(add-hook 'org-follow-link-hook (lambda () (org-narrow-to-subtree)))

2. More difficult: create a new wikiword if the internal link is not
found.
 
In .emacs, add a new function to create the new topic:
 
(defun org-create-new-wikiword (word)
  (interactive "s")
  (widen)
  (end-of-buffer)
  (newline 2)
  (insert (format "* <<<%s>>>" word))  ; create as radio link
  (backward-char 4)
  (org-update-radio-target-regexp)
  (newline 2)
  (org-narrow-to-subtree))
 
 
 
Modification to the (VERY long) function org-open-at-point in org.el:
 
 
       ((string= type "thisfile")
         (if in-emacs
             (switch-to-buffer-other-window
               (org-get-buffer-for-internal-link (current-buffer)))
           (org-mark-ring-push))
        (let ((cmd `(org-link-search
                   ,path
                   ,(cond ((equal in-emacs '(4)) 'occur)
                           ((equal in-emacs '(16)) 'org-occur)
                           (t nil))
                   ,pos)))
           (condition-case nil (eval cmd)
             (error (progn (widen)
             ;; BEGIN CHANGE
                         (condition-case nil (eval cmd)
                           (error
                            (when (yes-or-no-p
                            (format "Topic '%s' not found; create?"
                             path))
                              (org-create-new-wikiword path)))))))))
             ;; END CHANGE
 
I am not the greatest emacs-lisp orgrammer. Is there an easier way to do
this? If not, is it possible to create a 'link-not-found' hook so that I
don't need to modify org.el?
 
Thanks
 
Paul
 
 

[-- Attachment #1.2: Type: text/html, Size: 6721 bytes --]

[-- Attachment #2: Type: text/plain, Size: 204 bytes --]

_______________________________________________
Emacs-orgmode mailing list
Remember: use `Reply All' to send replies to the list.
Emacs-orgmode@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-orgmode

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2010-08-08 17:36 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-02-05 19:48 More wiki-like behaviour Paul Sexton
2010-08-07  6:27 ` Carsten Dominik

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).