Forráskód Böngészése

Version 5.7.4 or org-index.el

Marc Ihm 7 éve
szülő
commit
8f3156c945
1 módosított fájl, 20 hozzáadás és 18 törlés
  1. 20 18
      contrib/lisp/org-index.el

+ 20 - 18
contrib/lisp/org-index.el

@@ -3,7 +3,7 @@
 ;; Copyright (C) 2011-2018 Free Software Foundation, Inc.
 ;; Copyright (C) 2011-2018 Free Software Foundation, Inc.
 
 
 ;; Author: Marc Ihm <org-index@2484.de>
 ;; Author: Marc Ihm <org-index@2484.de>
-;; Version: 5.7.2
+;; Version: 5.7.4
 ;; Keywords: outlines index
 ;; Keywords: outlines index
 
 
 ;; This file is not part of GNU Emacs.
 ;; This file is not part of GNU Emacs.
@@ -97,7 +97,7 @@
 (require 'widget)
 (require 'widget)
 
 
 ;; Version of this package
 ;; Version of this package
-(defvar org-index-version "5.7.2" "Version of `org-index', format is major.minor.bugfix, where \"major\" are incompatible changes and \"minor\" are new features.")
+(defvar org-index-version "5.7.4" "Version of `org-index', format is major.minor.bugfix, where \"major\" are incompatible changes and \"minor\" are new features.")
 
 
 ;; customizable options
 ;; customizable options
 (defgroup org-index nil
 (defgroup org-index nil
@@ -321,7 +321,7 @@ for its index table.
 To start building up your index, use subcommands 'add', 'ref' and
 To start building up your index, use subcommands 'add', 'ref' and
 'yank' to create entries and use 'occur' to find them.
 'yank' to create entries and use 'occur' to find them.
 
 
-This is version 5.7.2 of org-index.el.
+This is version 5.7.4 of org-index.el.
 
 
 
 
 The function `org-index' is the only interactive function of this
 The function `org-index' is the only interactive function of this
@@ -681,7 +681,7 @@ interactive calls."
 
 
         (let ((moved-up 0) id info reached-top done)
         (let ((moved-up 0) id info reached-top done)
 
 
-          (unless (string= major-mode "org-mode") (error "No node at point"))
+          (unless (string= major-mode "org-mode") (error "Not in org-mode"))
           ;; take id from current node or reference
           ;; take id from current node or reference
           (setq id (if search-ref
           (setq id (if search-ref
                        (org-index--id-from-ref search-ref)
                        (org-index--id-from-ref search-ref)
@@ -1032,7 +1032,7 @@ Optional argument KEYS-VALUES specifies content of new line."
 (defun org-index--goto-focus ()
 (defun org-index--goto-focus ()
   "Goto focus node, one after the other."
   "Goto focus node, one after the other."
   (if org-index--ids-focused-nodes
   (if org-index--ids-focused-nodes
-      (let (target-id following-id last-id again explain marker
+      (let (again last-id following-id in-last-id target-id explain marker
                     (repeat-clause "") (bottom-clause "") (heading-is-clause ""))
                     (repeat-clause "") (bottom-clause "") (heading-is-clause ""))
         (setq again (and (eq this-command last-command)
         (setq again (and (eq this-command last-command)
                          (eq org-index--this-command org-index--last-command)))
                          (eq org-index--this-command org-index--last-command)))
@@ -1042,8 +1042,9 @@ Optional argument KEYS-VALUES specifies content of new line."
                                                       (append org-index--ids-focused-nodes
                                                       (append org-index--ids-focused-nodes
                                                               org-index--ids-focused-nodes)))
                                                               org-index--ids-focused-nodes)))
                                     org-index--ids-focused-nodes)))
                                     org-index--ids-focused-nodes)))
+        (setq in-last-id (string= (ignore-errors (org-id-get)) last-id))
 
 
-        (setq target-id (if again following-id last-id))
+        (setq target-id (if (or again in-last-id) following-id last-id))
         
         
         (set-transient-map (let ((map (make-sparse-keymap)))
         (set-transient-map (let ((map (make-sparse-keymap)))
                              (define-key map (vector ?f)
                              (define-key map (vector ?f)
@@ -1078,15 +1079,16 @@ Optional argument KEYS-VALUES specifies content of new line."
 
 
           (pop-to-buffer-same-window (marker-buffer marker))
           (pop-to-buffer-same-window (marker-buffer marker))
           (goto-char (marker-position marker))
           (goto-char (marker-position marker))
+          (org-index--unfold-buffer)
           (move-marker marker nil)
           (move-marker marker nil)
           (when org-index-goto-bottom-after-focus
           (when org-index-goto-bottom-after-focus
             (setq bottom-clause "bottom of ")
             (setq bottom-clause "bottom of ")
             (setq heading-is-clause (format ", heading is '%s'" (propertize (org-get-heading t t t t) 'face 'org-todo)))
             (setq heading-is-clause (format ", heading is '%s'" (propertize (org-get-heading t t t t) 'face 'org-todo)))
-            (org-index--end-of-focused-node))
-	  (org-index--unfold-buffer)
-	  (if org-index-goto-bottom-after-focus (recenter -1)))
+            (org-index--end-of-focused-node)
+            (org-reveal)
+            (recenter -1)))
 
 
-        (if again
+        (if (or again in-last-id)
             (setq explain (format "Jumped to %snext" bottom-clause))
             (setq explain (format "Jumped to %snext" bottom-clause))
           (setq explain (format "Jumped back to %scurrent" bottom-clause)))
           (setq explain (format "Jumped back to %scurrent" bottom-clause)))
         
         
@@ -1096,7 +1098,7 @@ Optional argument KEYS-VALUES specifies content of new line."
           (setq org-index--after-focus-timer
           (setq org-index--after-focus-timer
                 (run-at-time org-index--after-focus-delay nil
                 (run-at-time org-index--after-focus-delay nil
                              (lambda ()
                              (lambda ()
-                               (when org-index--after-focus-context
+                               (when (string= org-index--after-focus-context (ignore-errors (org-id-get)))
                                  (save-window-excursion
                                  (save-window-excursion
                                    (save-excursion
                                    (save-excursion
                                      (org-id-goto org-index--after-focus-context)
                                      (org-id-goto org-index--after-focus-context)
@@ -1118,7 +1120,7 @@ Optional argument KEYS-VALUES specifies content of new line."
 
 
 (defun org-index--end-of-focused-node ()
 (defun org-index--end-of-focused-node ()
   "Goto end of focused nodes, ignoring inline-tasks but stopping at first child."
   "Goto end of focused nodes, ignoring inline-tasks but stopping at first child."
-  (let (level next (pos (point)))
+  (let (level (pos (point)))
     (when (ignore-errors (org-with-limited-levels (org-back-to-heading)))
     (when (ignore-errors (org-with-limited-levels (org-back-to-heading)))
       (setq level (outline-level))
       (setq level (outline-level))
       (forward-char 1)
       (forward-char 1)
@@ -1160,7 +1162,6 @@ Optional argument KEYS-VALUES specifies content of new line."
             (setq id (org-id-get-create))
             (setq id (org-id-get-create))
             (unless (member id org-index--ids-focused-nodes)
             (unless (member id org-index--ids-focused-nodes)
               ;; remove any children, that are already in list of focused nodes
               ;; remove any children, that are already in list of focused nodes
-              (setq org-index--ids-focused-nodes-saved org-index--ids-focused-nodes)
               (setq org-index--ids-focused-nodes
               (setq org-index--ids-focused-nodes
                     (delete nil (mapcar (lambda (x)
                     (delete nil (mapcar (lambda (x)
                                           (if (member id (org-with-point-at (org-id-find x t)
                                           (if (member id (org-with-point-at (org-id-find x t)
@@ -1183,7 +1184,8 @@ Optional argument KEYS-VALUES specifies content of new line."
             "Current node has been appended to list of focused nodes%s (%d node%s in focus)")
             "Current node has been appended to list of focused nodes%s (%d node%s in focus)")
 
 
            ((eq char ?d)
            ((eq char ?d)
-            (org-index--delete-from-focus))
+            (org-index--delete-from-focus)
+            (concat "Current node has been removed from list of focused nodes%s (%d node%s in focus), " (org-index--goto-focus) "."))
 
 
            ((eq char ?r)
            ((eq char ?r)
             (if org-index--ids-focused-nodes-saved
             (if org-index--ids-focused-nodes-saved
@@ -1205,10 +1207,10 @@ Optional argument KEYS-VALUES specifies content of new line."
 
 
 
 
 (defun org-index--delete-from-focus ()
 (defun org-index--delete-from-focus ()
-  "Delete current node from list of focused nodes"
+  "Delete current node from list of focused nodes."
   (let (id)
   (let (id)
     (setq id (org-id-get))
     (setq id (org-id-get))
-    (if (and id  (member id org-index--ids-focused-nodes))
+    (if (and id (member id org-index--ids-focused-nodes))
         (progn
         (progn
           (setq org-index--id-last-goto-focus
           (setq org-index--id-last-goto-focus
                 (or (car-safe (cdr-safe (member id (reverse (append org-index--ids-focused-nodes
                 (or (car-safe (cdr-safe (member id (reverse (append org-index--ids-focused-nodes
@@ -2106,8 +2108,8 @@ specify flag TEMPORARY for th new table temporary, maybe COMPARE it with existin
 
 
 (defun org-index--unfold-buffer ()
 (defun org-index--unfold-buffer ()
   "Helper function to unfold buffer."
   "Helper function to unfold buffer."
-  (org-show-context 'ancestors)
-  (org-show-subtree)
+  (org-show-context 'tree)
+  (org-reveal '(4))
   (recenter 1))
   (recenter 1))