* 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
* Re: More wiki-like behaviour
2009-02-05 19:48 More wiki-like behaviour Paul Sexton
@ 2010-08-07 6:27 ` Carsten Dominik
0 siblings, 0 replies; 2+ messages in thread
From: Carsten Dominik @ 2010-08-07 6:27 UTC (permalink / raw)
To: Paul Sexton; +Cc: emacs-orgmode
On Feb 5, 2009, at 8:48 PM, Paul Sexton wrote:
> 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.
I have just pushed a change which does the following:
1. It makes a link like [[Find this text]] only match if there is an
exact headline like this. The fuzzy text search that used to
result from such a link at least I never use in Org files
2. If there is no match, it offers to create this headline.
Let me know if this works for you. Also: does this break
things for anyone else?
- Carsten
>
> 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
>
>
> _______________________________________________
> 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
- Carsten
^ 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).