[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [O] org-goto-local-search-headings usage?
From: |
Myles English |
Subject: |
Re: [O] org-goto-local-search-headings usage? |
Date: |
Wed, 16 May 2012 11:30:41 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/23.4 (gnu/linux) |
>> On Tue, 15 May 2012 17:44:29 -0400, Nick Dokos said:
> Nick Dokos wrote:
>> Myles English wrote:
>>
>> > >> On Tue, 15 May 2012 11:48:55 -0400, Nick Dokos said:
>> >
>> > > Myles English wrote:
>> > >>
>> > >> Hi,
>> > >>
>> > >> Can anyone see what I am doing wrong here? I just want to open a
file
>> > >> ~/tmp/gtd.org and goto the heading "* My workflow". So, starting
like
>> > >> this:
>> > >>
>> > >> emacs -Q -l ~/tmp/gtd
>> > >>
>> > >> with ~/tmp/gtd:
>> > >>
>> > >> (add-to-list 'load-path
>> > >> "~/.emacs.d/plugins/org-mode/lisp")
>> > >> (require 'org-install) ;; to use the emacs-org-mode rather than the
one
>> > >> ;; installed with emacs
>> > >>
>> > >> (defun gtd()
>> > >> (interactive)
>> > >> (find-file "~/tmp/gtd.org")
>> > >> (goto-char (point-min))
>> > >> (setq wf "My workflow")
>> > >> (org-goto-local-search-headings wf nil nil)
>> > >> )
>> > >>
>> > >> and ~/tmp/gtd.org:
>> > >>
>> > >> * My workflow
>> > >>
>> > >> then I do:
>> > >>
>> > >> M-x gtd
>> > >>
>> > >> and get the message:
>> > >>
>> > >> byte-code: Search failed: "My workflow"
>> > >>
>> >
>> > > Works for me: the cursor is placed at the end of the headline.
>> > > I tried both with just the one headline and also with half a
>> > > dozen.
>> >
>> > Thanks for taking a look Nick. My real usage also uses a much bigger
>> > file and sometimes it works when the .emacs file is open or if I have
>> > been working in the gtd.org file but I haven't been able to track down
>> > when it works or doesn't. Hence this MWE.
>> >
>> > > Maybe M-x toggle-debug-on-error and try again to get a backtrace?
>> > > Or add
>> >
>> > > (setq debug-on-error t)
>> >
>> > > to your initialization file.
>> >
>> > Adding (setq debug-on-error t) to the top of the file gtd then
>> > proceeding as before gives me the *Backtrace*:
>> >
>> > org-goto-local-search-headings("My workflow" nil nil)
>> > gtd()
>> > call-interactively(gtd t nil)
>> > execute-extended-command(nil)
>> > call-interactively(execute-extended-command nil nil)
>> >
>> > which doesn't even really look like an error, does it?
>> >
>>
>> No, but there are missing stack frames: it fails on the search-backward
>> that org-goto-local-search-headings does. In the best "let's cure the
>> symptom, not the disease" manner, try changing the point-min to
>> point-max in the definition of gtd.
>>
> I meant to comment on the use of isearch-forward inside
> org-goto-local-search-headings. I'm not sure how it changes value (but
> it does), and I really don't understand why org-glsh uses it at all. The
> point is however that depending on the value of isearch-forward and
> where you start in the buffer (min or max), you will get the error if
> the variable is the "wrong" direction for your starting point.
> IOW, you probably don't want to use the org-glsh function: define your
> own that always goes in one direction (forward) and start at min.
> Usual disclaimers apply,
> Nick
Thanks for the advice, I ended up using bit of org-element.el instead of
org-goto-local-search-headings and doing this:
#+BEGIN_SRC elisp
(defun gotoWF(hl)
(let ((title (car (org-element-property :title hl))))
(if (and (stringp title)
(string= title "My workflow"))
(progn (goto-char (org-element-property :begin hl))
(org-show-entry)
(org-show-subtree))
nil)))
(require 'org-element)
(defun gtd()
(interactive)
(org-element-map (org-element-parse-buffer) 'headline 'gotoWF nil t)
(org-agenda-list))
#+END_SRC
--
`--[ Myles ]