ソースを参照

Bug fix: Also jump to last remember note in narrowed buffer.

Report by Bernt Hansen.
Carsten Dominik 17 年 前
コミット
94bddfe621
3 ファイル変更41 行追加8 行削除
  1. 9 0
      lisp/ChangeLog
  2. 19 8
      lisp/org-remember.el
  3. 13 0
      lisp/org.el

+ 9 - 0
lisp/ChangeLog

@@ -1,3 +1,12 @@
+2008-05-20  Carsten Dominik  <dominik@science.uva.nl>
+
+	* org-remember.el (org-remember-last-stored-marker): New variable.
+	(org-remember-goto-last-stored): Use `org-goto-marker-or-bmk'.
+	(org-remember-handler): Also use marker to remember
+	last-stored position.
+
+	* org.el (org-goto-marker-or-bmk): New function.
+
 2008-05-19  Carsten Dominik  <dominik@science.uva.nl>
 
 	* org.el (org-file-properties): Renamed from `org-local-properties'.

+ 19 - 8
lisp/org-remember.el

@@ -542,10 +542,14 @@ associated with a template in `org-remember-templates'."
 	  (org-do-remember (buffer-substring (point) (mark)))
 	(org-do-remember))))))
 
+(defvar org-remember-last-stored-marker (make-marker)
+  "Marker pointing to the entry most recently stored with `org-remember'.")
+
 (defun org-remember-goto-last-stored ()
   "Go to the location where the last remember note was stored."
   (interactive)
-  (bookmark-jump "org-remember-last-stored")
+  (org-goto-marker-or-bmk org-remember-last-stored-marker
+			  "org-remember-last-stored")
   (message "This is the last note stored by remember"))
 
 (defun org-go-to-remember-target (&optional template-key)
@@ -732,17 +736,20 @@ See also the variable `org-reverse-note-order'."
 			       (beginning-of-line 2)
 			     (end-of-line 1)
 			     (insert "\n"))))
+		     (org-paste-subtree (org-get-valid-level level 1) txt)
 		     (bookmark-set "org-remember-last-stored")
-		     (org-paste-subtree (org-get-valid-level level 1) txt))
+		     (move-marker org-remember-last-stored-marker (point)))
 		    ((eq exitcmd 'left)
 		     ;; before current
+		     (org-paste-subtree level txt)
 		     (bookmark-set "org-remember-last-stored")
-		     (org-paste-subtree level txt))
+		     (move-marker org-remember-last-stored-marker (point)))
 		    ((eq exitcmd 'right)
 		     ;; after current
 		     (org-end-of-subtree t)
+		     (org-paste-subtree level txt)
 		     (bookmark-set "org-remember-last-stored")
-		     (org-paste-subtree level txt))
+		     (move-marker org-remember-last-stored-marker (point)))
 		    (t (error "This should not happen"))))
 
 		  ((and (bobp) (not reversed))
@@ -751,8 +758,9 @@ See also the variable `org-reverse-note-order'."
 		     (widen)
 		     (goto-char (point-max))
 		     (if (not (bolp)) (newline))
+		     (org-paste-subtree (org-get-valid-level 1 1) txt)
 		     (bookmark-set "org-remember-last-stored")
-		     (org-paste-subtree (org-get-valid-level 1 1) txt)))
+		     (move-marker org-remember-last-stored-marker (point))))
 
 		  ((and (bobp) reversed)
 		   ;; Put it at the start, as level 1
@@ -761,15 +769,18 @@ See also the variable `org-reverse-note-order'."
 		     (goto-char (point-min))
 		     (re-search-forward "^\\*+ " nil t)
 		     (beginning-of-line 1)
+		     (org-paste-subtree 1 txt)
 		     (bookmark-set "org-remember-last-stored")
-		     (org-paste-subtree 1 txt)))
+		     (move-marker org-remember-last-stored-marker (point))))
 		  (t
 		   ;; Put it right there, with automatic level determined by
 		   ;; org-paste-subtree or from prefix arg
-		   (bookmark-set "org-remember-last-stored")
 		   (org-paste-subtree
 		    (if (numberp current-prefix-arg) current-prefix-arg)
-		    txt)))
+		    txt)
+		   (bookmark-set "org-remember-last-stored")
+		   (move-marker org-remember-last-stored-marker (point))))
+
 	    (when remember-save-after-remembering
 	      (save-buffer)
 	      (if (and (not visiting)

+ 13 - 0
lisp/org.el

@@ -13105,6 +13105,19 @@ With optional NODE, go directly to that node."
       (display-buffer buf)
       (sit-for 0))))
 
+(defun org-goto-marker-or-bmk (marker &optional bookmark)
+  "Go to MARKER, widen if necesary.  When marker is not live, try BOOKMARK."
+  (if (and marker (marker-buffer marker)
+	   (buffer-live-p (marker-buffer marker)))
+      (progn
+	(switch-to-buffer (marker-buffer marker))
+	(if (or (> marker (point-max)) (< marker (point-min)))
+	    (widen))
+	(goto-char marker))
+    (if bookmark.
+	(bookmark-jump bookmark-jump)
+      (error "Cannot find location"))))
+
 (defun org-quote-csv-field (s)
   "Quote field for inclusion in CSV material."
   (if (string-match "[\",]" s)