From mboxrd@z Thu Jan 1 00:00:00 1970 From: Keith David Bershatsky Subject: bug#16265: 24.3.50; re-search-forward (error "Invalid search bound (wrong side of point)") Date: Sat, 28 Dec 2013 12:44:20 -0800 Message-ID: References: Mime-Version: 1.0 (generated by - "") Content-Type: text/plain; charset=US-ASCII Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:34919) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Vx0ku-0007FQ-Bk for emacs-orgmode@gnu.org; Sat, 28 Dec 2013 15:45:13 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Vx0ko-0007oI-RA for emacs-orgmode@gnu.org; Sat, 28 Dec 2013 15:45:08 -0500 Received: from debbugs.gnu.org ([140.186.70.43]:35056) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Vx0ko-0007nE-IN for emacs-orgmode@gnu.org; Sat, 28 Dec 2013 15:45:02 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1Vx0kn-0003Lp-Sv for emacs-orgmode@gnu.org; Sat, 28 Dec 2013 15:45:01 -0500 In-Reply-To: Sender: "Debbugs-submit" Resent-Message-ID: List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Nicolas Richard Cc: 16265@debbugs.gnu.org Nicolas: This example demonstrates the problem caused when `org-capture` damages the line numbers in the `org-agenda-files`, making it impossible to go to the bottom of the buffer with (goto-char (point-max)) -- consequently, re-search-backward fails -- other functions fail also, e.g., `org-sort-entries`. (defun example () (interactive) (let* ( (org-todo-keywords '((sequence "Active(a)" "Next Action(n)" "Reference(r)" "Someday(s)" "Delegated(d)" "|" "None(N)") )) (sample-todo (concat "* TASKS\n\n" "** Active [#A] smith @ drawer-one (fishing) | drawer-two (tennis). :lawlist:\n" " DEADLINE: <2013-12-21 Sat 17:00> SCHEDULED: <2013-12-21 Sat>\n" " :PROPERTIES:\n" " :DRAWER-ONE: fishing\n" " :DRAWER-TWO: tennis\n" " :END:\n\n" "** Next-Action [#B] doe @ drawer-one (football) | drawer-two (bowling). :fred:\n" " DEADLINE: <2013-12-22 Sun 08:30> SCHEDULED: <2013-12-22 Sun>\n" " :PROPERTIES:\n" " :DRAWER-ONE: football\n" " :DRAWER-TWO: bowling\n" " :END:\n\n" "* EVENTS\n\n" "** Reference [#C] john @ drawer-one (fishing) | drawer-two (sky-diving). :george:\n" " DEADLINE: <2013-12-23 Mon 10:15> SCHEDULED: <2013-12-23 Mon>\n" " :PROPERTIES:\n" " :DRAWER-ONE: fishing\n" " :DRAWER-TWO: sky-diving\n" " :END:\n\n" "* UNDATED\n\n" "** Someday [#D] jane @ drawer-one (basket-ball) | drawer-two (bowling). :sam:\n" " DEADLINE: <2013-12-24 Tues 12:00> SCHEDULED: <2013-12-24 Tues>\n" " :PROPERTIES:\n" " :DRAWER-ONE: basket-ball\n" " :DRAWER-TWO: bowling\n" " :END:"))) (if (get-buffer "foo.org") (progn (switch-to-buffer "foo.org") (erase-buffer) (delete-other-windows)) (switch-to-buffer (get-buffer-create "foo.org"))) (org-mode) (linum-mode 1) (insert sample-todo) (goto-char (point-min)) (or (y-or-n-p (format "For this example work, you must save this buffer as a file. Proceed with example?")) (error "Canceled.")) (write-file "~/Desktop/foo.org" t) (let* ( (filename (buffer-file-name)) (org-agenda-files (list filename)) (org-capture-templates '(("n" "Next Action" entry (file+headline filename "TASKS") "** Next Action [#A] %?\n DEADLINE: <%<%Y-%m-%d %a>>\n :PROPERTIES:\n :ToodledoID:\n :ToodledoFolder: TASKS\n :Hash:\n :END:" :empty-lines 1)))) (search-backward-example) (org-capture nil "n") (message "-----------------------------") (message "Here we can see that the line numbers in 'foo.org' got messed up.") (sit-for 5) (insert "Hello World! :lawlist:") (org-capture-finalize) (search-backward-example) (message "-----------------------------") (message "Here is where things really went wrong. It's searching the WRONG todo.") (message "-----------------------------") (switch-to-buffer "*Messages*")))) (defun search-backward-example () (require 'org-element) (let* (element todo-state title deadline scheduled day month year (org-todo-keywords '((sequence "Active(a)" "Next Action(n)" "Reference(r)" "Someday(s)" "Delegated(d)" "|" "None(N)") ))) (goto-char (point-max)) (while (re-search-backward "^\*\* \\(Reference\\)" nil t) (setq element (org-element-at-point)) (setq todo-state (org-element-property :todo-keyword element)) (setq title (org-element-property :title element)) (setq deadline (ignore-errors (org-element-property :deadline element) )) (setq scheduled (ignore-errors (org-element-property :scheduled element) )) (setq day (ignore-errors (org-element-property :day-start scheduled))) (setq month (ignore-errors (org-element-property :month-start scheduled))) (setq year (ignore-errors (org-element-property :year-start scheduled))) (message "-----------------------------") (message "todo-state: %s" todo-state) (message "deadline: %s" deadline) (message "scheduled: %s" scheduled) (message "title: %s" title) (message "day: %s" day) (message "month: %s" month) (message "year: %s" year) (message "-----------------------------") )))