|
From: | Carsten Dominik |
Subject: | Re: [Orgmode] possible bug in org-goto-local-search-headings |
Date: | Fri, 13 Nov 2009 23:30:51 +0100 |
On Nov 13, 2009, at 1:24 AM, Lee Hinman wrote:
Carsten, I admit I could be using the function inappropriately. Please let me know if am.I have a little function I wrote to help me maintain a journal, I didn'tlike the formatting I got using remember. Here is the function. (defun lee-journal-entry () "Create a new journal entry for today or append to existing month." (interactive) (switch-to-buffer (find-file lee-journal-file)) (widen) (let ((today (format-time-string "%Y.%m"))) (unless (org-goto-local-search-headings today nil t) ((lambda () (beginning-of-buffer) (org-insert-heading) (insert today)))) (show-children) (end-of-line) (insert "\n") (org-insert-heading) (org-do-demote) (org-insert-time-stamp (current-time)) (insert " "))) So I'm using org-goto-local-search-heading to find the correct heading to start my new journal entry in.
Hi Lee,it is OK to call such a function, but then you need to provide the correct
environment. In this case, it is probably enough to add (isearch-forward t) to the let bindings in the function. - Carsten
-- Lee Carsten Dominik <address@hidden> writes:Hi Lee, I do not understand. Why would you call this function? It is being called by the internals of isearch, and when that happens, isearch.el is obviously loaded. What am I missing here? - Carsten On Nov 12, 2009, at 8:04 PM, Lee Hinman wrote:I noticed some interesting behavior with the org-goto-local-search-headings function in Emacs 23.1.1.If you call the function before doing an incremental search, searchingforward fails. If you call it after doing an incremental search thefunction will search forward. A quick look at the code showed that itonly does a forward search if isearch-forward is defined. This is both a variable and a function in isearch.el, and the variable isearch-forward is set to nil until you do a search.The following patch against the current orgmode removes the dependencyon isearch-forward and will now search forward first, if it doesn't findanything will search backward from the original point. I *think* thisis the behavior that was intended. diff --git a/lisp/org.el b/lisp/org.el index dd34816..1e9aad3 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -5801,8 +5801,7 @@ or nil." (defun org-goto-local-search-headings (string bound noerror) "Search and make sure that any matches are in headlines." (catch 'return - (while (if isearch-forward - (search-forward string bound noerror) + (while (or (search-forward string bound t) (search-backward string bound noerror)) (when (let ((context (mapcar 'car (save-match-data (org- context))))) (and (member :headline context) -- Lee Hinman _______________________________________________ Emacs-orgmode mailing list Remember: use `Reply All' to send replies to the list. address@hidden http://lists.gnu.org/mailman/listinfo/emacs-orgmode- Carsten-- Lee Hinman address@hidden _______________________________________________ Emacs-orgmode mailing list Remember: use `Reply All' to send replies to the list. address@hidden http://lists.gnu.org/mailman/listinfo/emacs-orgmode
- Carsten
[Prev in Thread] | Current Thread | [Next in Thread] |