emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/org/org-agenda.el,v


From: Carsten Dominik
Subject: [Emacs-diffs] Changes to emacs/lisp/org/org-agenda.el,v
Date: Tue, 17 Jun 2008 15:22:03 +0000

CVSROOT:        /sources/emacs
Module name:    emacs
Changes by:     Carsten Dominik <cdominik>      08/06/17 15:22:01

Index: lisp/org/org-agenda.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/org/org-agenda.el,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- lisp/org/org-agenda.el      30 May 2008 02:59:50 -0000      1.5
+++ lisp/org/org-agenda.el      17 Jun 2008 15:21:56 -0000      1.6
@@ -1,4 +1,4 @@
-;;; org-agenda.el --- The table editor for Org-mode
+;;; org-agenda.el --- Dynamic task and appointment lists for Org
 
 ;; Copyright (C) 2004, 2005, 2006, 2007, 2008
 ;;   Free Software Foundation, Inc.
@@ -6,7 +6,7 @@
 ;; Author: Carsten Dominik <carsten at orgmode dot org>
 ;; Keywords: outlines, hypermedia, calendar, wp
 ;; Homepage: http://orgmode.org
-;; Version: 6.02b
+;; Version: 6.05a
 ;;
 ;; This file is part of GNU Emacs.
 ;;
@@ -34,7 +34,7 @@
 (eval-when-compile
   (require 'calendar))
 
-(declare-function add-to-diary-list "diary-lib"
+(declare-function diary-add-to-list "diary-lib"
                   (date string specifier &optional marker globcolor literal))
 (declare-function calendar-absolute-from-iso    "cal-iso"    (date))
 (declare-function calendar-astro-date-string    "cal-julian" (&optional date))
@@ -392,6 +392,12 @@
  :tag "Org Agenda Skip"
  :group 'org-agenda)
 
+(defcustom org-agenda-skip-comment-trees t
+  "Non-nil means, skip trees that start with teh COMMENT keyword.
+When nil, these trees are also scand by agenda commands."
+  :group 'org-agenda-skip
+  :type 'boolean)
+
 (defcustom org-agenda-todo-list-sublevels t
   "Non-nil means, check also the sublevels of a TODO entry for TODO entries.
 When nil, the sublevels of a TODO entry are not checked, resulting in
@@ -464,7 +470,6 @@
          (const :tag "All" t)
          (number :tag "at most")))
 
-
 (defgroup org-agenda-startup nil
   "Options concerning initial settings in the Agenda in Org Mode."
   :tag "Org Agenda Startup"
@@ -676,7 +681,7 @@
  today         show grid on current date, independent of daily/weekly display
  require-timed show grid only if at least one item has a time specification
 
-The second item is a string which will be places behing the grid time.
+The second item is a string which will be placed behind the grid time.
 
 The third item is a list of integers, indicating the times that should have
 a grid line."
@@ -849,8 +854,10 @@
   "Text preceeding scheduled items in the agenda view.
 This is a list with two strings.  The first applies when the item is
 scheduled on the current day.  The second applies when it has been scheduled
-previously, it may contain a %d to capture how many days ago the item was
-scheduled."
+previously, it may contain a %d indicating that this is the nth time that
+this item is scheduled, due to automatic rescheduling of unfinished items
+for the following day.  So this number is one larger than the number of days
+that passed since this item was scheduled first."
   :group 'org-agenda-line-format
   :type '(list
          (string :tag "Scheduled today     ")
@@ -946,6 +953,16 @@
   :group 'org-agenda-column-view
   :type 'boolean)
 
+(defcustom org-agenda-columns-remove-prefix-from-item t
+  "Non-nil means, remove the prefix from a headline for agenda column view.
+The special ITEM field in the columns format contains the current line, with
+all information shown in other columns (like the TODO state or a tag).
+When this variable is non-nil, also the agenda prefix will be removed from
+the content of the ITEM field, to make sure as much as possible of the
+headline can be shown in the limited width of the field."
+  :group 'org-agenda
+  :type 'boolean)
+
 (defcustom org-agenda-columns-compute-summary-properties t
   "Non-nil means, recompute all summary properties before column view.
 When column view in the agenda is listing properties that have a summary
@@ -1071,6 +1088,8 @@
 (org-defkey org-agenda-mode-map "y"        'org-agenda-year-view)
 (org-defkey org-agenda-mode-map "\C-c\C-z" 'org-agenda-add-note)
 (org-defkey org-agenda-mode-map "z"        'org-agenda-add-note)
+(org-defkey org-agenda-mode-map "k"        'org-agenda-action)
+(org-defkey org-agenda-mode-map "\C-c\C-x\C-k" 'org-agenda-action)
 (org-defkey org-agenda-mode-map [(shift right)] 'org-agenda-date-later)
 (org-defkey org-agenda-mode-map [(shift left)] 'org-agenda-date-earlier)
 (org-defkey org-agenda-mode-map [?\C-c ?\C-x (right)] 'org-agenda-date-later)
@@ -1177,6 +1196,11 @@
      ["Schedule" org-agenda-schedule t]
      ["Set Deadline" org-agenda-deadline t]
      "--"
+     ["Mark item" org-agenda-action :active t :keys "k m"]
+     ["Show mark item" org-agenda-action :active t :keys "k v"]
+     ["Schedule marked item" org-agenda-action :active t :keys "k s"]
+     ["Set Deadline for marked item" org-agenda-action :active t :keys "k d"]
+     "--"
      ["Change Date +1 day" org-agenda-date-later (org-agenda-check-type nil 
'agenda 'timeline)]
      ["Change Date -1 day" org-agenda-date-earlier (org-agenda-check-type nil 
'agenda 'timeline)]
      ["Change Date to ..." org-agenda-date-prompt (org-agenda-check-type nil 
'agenda 'timeline)])
@@ -2012,7 +2036,8 @@
         (get-text-property p :org-archived)
         (org-end-of-subtree t)
         (throw :skip t))
-    (and (get-text-property p :org-comment)
+    (and org-agenda-skip-comment-trees
+        (get-text-property p :org-comment)
         (org-end-of-subtree t)
         (throw :skip t))
     (if (equal (char-after p) ?#) (throw :skip t))
@@ -2045,6 +2070,11 @@
   (while org-agenda-markers
     (move-marker (pop org-agenda-markers) nil)))
 
+(defun org-agenda-save-markers-for-cut-and-paste (beg end)
+  "Save relative positions of markers in region."
+  (mapc (lambda (m) (org-check-and-save-marker m beg end))
+       org-agenda-markers))
+
 ;;; Agenda timeline
 
 (defvar org-agenda-only-exact-dates nil) ; dynamically scoped
@@ -2425,6 +2455,7 @@
                      'done-face 'org-done
                      'org-not-done-regexp org-not-done-regexp
                      'org-todo-regexp org-todo-regexp
+                     'org-complex-heading-regexp org-complex-heading-regexp
                      'mouse-face 'highlight
                      'keymap org-agenda-keymap
                      'help-echo (format "mouse-2 or RET jump to location")))
@@ -2539,6 +2570,7 @@
                      (org-add-props txt props
                        'org-marker marker 'org-hd-marker marker
                        'org-todo-regexp org-todo-regexp
+                       'org-complex-heading-regexp org-complex-heading-regexp
                        'priority 1000 'org-category category
                        'type "search")
                      (push txt ee)
@@ -3065,6 +3097,7 @@
                      'done-face 'org-done
                      'org-not-done-regexp org-not-done-regexp
                      'org-todo-regexp org-todo-regexp
+                     'org-complex-heading-regexp org-complex-heading-regexp
                      'mouse-face 'highlight
                      'keymap org-agenda-keymap
                      'help-echo
@@ -3123,6 +3156,7 @@
   (let* ((props (list 'face nil
                      'org-not-done-regexp org-not-done-regexp
                      'org-todo-regexp org-todo-regexp
+                     'org-complex-heading-regexp org-complex-heading-regexp
                      'mouse-face 'highlight
                      'keymap org-agenda-keymap
                      'help-echo
@@ -3255,6 +3289,7 @@
   (let* ((props (list 'mouse-face 'highlight
                      'org-not-done-regexp org-not-done-regexp
                      'org-todo-regexp org-todo-regexp
+                     'org-complex-heading-regexp org-complex-heading-regexp
                      'keymap org-agenda-keymap
                      'help-echo
                      (format "mouse-2 or RET jump to org file %s"
@@ -3269,7 +3304,7 @@
                            (list 0 0 0 (nth 1 date) (car date) (nth 2 date))))
                    1 11))))
         marker hdmarker priority category tags closedp
-        ee txt timestr)
+        ee txt timestr rest)
     (goto-char (point-min))
     (while (re-search-forward regexp nil t)
       (catch :skip
@@ -3280,9 +3315,15 @@
              timestr (buffer-substring (match-beginning 0) (point-at-eol))
              ;; donep (org-entry-is-done-p)
              )
-       (if (string-match "\\]" timestr)
+       (when (string-match "\\]" timestr)
            ;; substring should only run to end of time stamp
-           (setq timestr (substring timestr 0 (match-end 0))))
+         (setq rest (substring timestr (match-end 0))
+               timestr (substring timestr 0 (match-end 0)))
+         (if (and (not closedp)
+                  (string-match "\\([0-9]\\{1,2\\}:[0-9]\\{2\\}\\)\\]" rest))
+             (setq timestr (concat (substring timestr 0 -1)
+                                   "-" (match-string 1 rest) "]"))))
+               
        (save-excursion
          (if (re-search-backward "^\\*+ " nil t)
              (progn
@@ -3309,6 +3350,7 @@
   (let* ((props (list 'mouse-face 'highlight
                      'org-not-done-regexp org-not-done-regexp
                      'org-todo-regexp org-todo-regexp
+                     'org-complex-heading-regexp org-complex-heading-regexp
                      'keymap org-agenda-keymap
                      'help-echo
                      (format "mouse-2 or RET jump to org file %s"
@@ -3394,6 +3436,7 @@
   "Return the scheduled information for agenda display."
   (let* ((props (list 'org-not-done-regexp org-not-done-regexp
                      'org-todo-regexp org-todo-regexp
+                     'org-complex-heading-regexp org-complex-heading-regexp
                      'done-face 'org-done
                      'mouse-face 'highlight
                      'keymap org-agenda-keymap
@@ -3469,6 +3512,7 @@
   (let* ((props (list 'face nil
                      'org-not-done-regexp org-not-done-regexp
                      'org-todo-regexp org-todo-regexp
+                     'org-complex-heading-regexp org-complex-heading-regexp
                      'mouse-face 'highlight
                      'keymap org-agenda-keymap
                      'help-echo
@@ -4137,12 +4181,12 @@
   (setq org-agenda-ndays 7)
   (org-agenda-change-time-span 'week iso-week))
 (defun org-agenda-month-view (&optional month)
-  "Switch to daily view for agenda.
+  "Switch to monthly view for agenda.
 With argument MONTH, switch to that month."
   (interactive "P")
   (org-agenda-change-time-span 'month month))
 (defun org-agenda-year-view (&optional year)
-  "Switch to daily view for agenda.
+  "Switch to yearly view for agenda.
 With argument YEAR, switch to that year.
 If MONTH has more then 2 digits, only the last two encode the
 month.  Any digits before this encode a year.  So 200712 means
@@ -4331,7 +4375,10 @@
 
 (defun org-agenda-post-command-hook ()
   (and (eolp) (not (bolp)) (backward-char 1))
-  (setq org-agenda-type (get-text-property (point) 'org-agenda-type))
+  (setq org-agenda-type
+       (or (get-text-property (point) 'org-agenda-type)
+           (get-text-property (max (point-min) (1- (point)))
+                              'org-agenda-type)))
   (if (and org-agenda-follow-mode
           (get-text-property (point) 'org-marker))
       (org-agenda-show)))
@@ -4890,6 +4937,69 @@
       (org-agenda-show-new-time marker ts "S"))
        (message "Deadline for this item set to %s" ts)))
 
+(defun org-agenda-action ()
+  "Select entry for agenda action, or execute an agenda action.
+This command prompts for another letter.  Valid inputs are:
+
+m     Mark the entry at point for an agenda action
+s     Schedule the marked entry to the date at the cursor
+d     Set the deadline of the marked entry to the date at the cursor
+r     Call `org-remember' with cursor date as the default date
+SPC   Show marked entry in other window
+TAB   Visit marked entry in other window
+
+The cursor may be at a date in the calendar, or in the Org agenda."
+  (interactive)
+  (let (pos ans)
+    (message "Select action: [m]ark | [s]chedule [d]eadline [r]emember [ 
]show")
+    (setq ans (read-char-exclusive))
+    (cond
+     ((equal ans ?m)
+      ;; Mark this entry
+      (if (eq major-mode 'org-agenda-mode)
+         (let ((m (or (get-text-property (point) 'org-hd-marker)
+                      (get-text-property (point) 'org-marker))))
+           (if m
+               (progn
+                 (move-marker org-agenda-action-marker
+                              (marker-position m) (marker-buffer m))
+                 (message "Entry marked for action; press `k' at desired date 
in agenda or calendar"))
+             (error "Don't know which entry to mark")))
+       (error "This command works only in the agenda")))
+     ((equal ans ?s)
+      (org-agenda-do-action '(org-schedule nil org-overriding-default-time)))
+     ((equal ans ?d)
+      (org-agenda-do-action '(org-deadline nil org-overriding-default-time)))
+     ((equal ans ?r)
+      (org-agenda-do-action '(org-remember) t))
+     ((equal ans ?\ )
+      (let ((cw (selected-window)))
+       (org-switch-to-buffer-other-window
+        (marker-buffer org-agenda-action-marker))
+       (goto-char org-agenda-action-marker)
+       (org-show-context 'agenda)
+       (select-window cw)))
+     ((equal ans ?\C-i)
+      (org-switch-to-buffer-other-window
+       (marker-buffer org-agenda-action-marker))
+      (goto-char org-agenda-action-marker)
+      (org-show-context 'agenda))
+     (t (error "Invalid agenda action %c" ans)))))
+
+(defun org-agenda-do-action (form &optional current-buffer)
+  "Evaluate FORM at the entry pointed to by `org-agenda-action-marker'."
+  (let ((org-overriding-default-time (org-get-cursor-date)))
+    (if current-buffer
+       (eval form)
+      (if (not (marker-buffer org-agenda-action-marker))
+         (error "No entry has bee selected for agenda action")
+       (with-current-buffer (marker-buffer org-agenda-action-marker)
+         (save-excursion
+           (save-restriction
+             (widen)
+             (goto-char org-agenda-action-marker)
+             (eval form))))))))
+  
 (defun org-agenda-clock-in (&optional arg)
   "Start the clock on the currently selected item."
   (interactive "P")
@@ -4898,12 +5008,20 @@
       (org-clock-in arg)
     (let* ((marker (or (get-text-property (point) 'org-marker)
                       (org-agenda-error)))
-          (pos (marker-position marker)))
+          (hdmarker (or (get-text-property (point) 'org-hd-marker)
+                        marker))
+          (pos (marker-position marker))
+          newhead)
       (org-with-remote-undo (marker-buffer marker)
         (with-current-buffer (marker-buffer marker)
          (widen)
          (goto-char pos)
-         (org-clock-in arg))))))
+         (org-show-context 'agenda)
+         (org-show-entry)
+         (org-cycle-hide-drawers 'children)
+         (org-clock-in arg)
+         (setq newhead (org-get-heading)))
+       (org-agenda-change-all-lines newhead hdmarker t)))))
 
 (defun org-agenda-clock-out (&optional arg)
   "Stop the currently running clock."
@@ -5141,6 +5259,8 @@
 
 (provide 'org-agenda)
 
+;; arch-tag: 77f7565d-7c4b-44af-a2df-9f6f7070cff1
+
 ;;; org-agenda.el ends here
 
-;; arch-tag: 77f7565d-7c4b-44af-a2df-9f6f7070cff1
+




reply via email to

[Prev in Thread] Current Thread [Next in Thread]