emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] Changes to emacs/lisp/textmodes/org.el


From: Carsten Dominik
Subject: [Emacs-diffs] Changes to emacs/lisp/textmodes/org.el
Date: Fri, 20 May 2005 07:24:49 -0400

Index: emacs/lisp/textmodes/org.el
diff -c emacs/lisp/textmodes/org.el:1.17 emacs/lisp/textmodes/org.el:1.18
*** emacs/lisp/textmodes/org.el:1.17    Thu May  5 20:10:34 2005
--- emacs/lisp/textmodes/org.el Fri May 20 11:24:48 2005
***************
*** 5,11 ****
  ;; Author: Carsten Dominik <dominik at science dot uva dot nl>
  ;; Keywords: outlines, hypermedia, calendar
  ;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/
! ;; Version: 3.08
  ;;
  ;; This file is part of GNU Emacs.
  ;;
--- 5,11 ----
  ;; Author: Carsten Dominik <dominik at science dot uva dot nl>
  ;; Keywords: outlines, hypermedia, calendar
  ;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/
! ;; Version: 3.09
  ;;
  ;; This file is part of GNU Emacs.
  ;;
***************
*** 31,57 ****
  ;; project planning with a fast and effective plain-text system.
  ;;
  ;; Org-mode develops organizational tasks around a NOTES file that contains
! ;; information about projects as plain text.  Org-mode is implemented on
! ;; top of outline-mode - ideal to keep the content of large files well
! ;; structured.  It supports ToDo items, deadlines and time stamps, which
! ;; magically appear in the diary listing of the Emacs calendar.  Tables are
! ;; easily created with a built-in table editor.  Plain text URL-like links
! ;; connect to websites, emails (VM,RMAIL,WANDERLUST), Usenet messages (Gnus),
! ;; BBDB entries, and any files related to the projects.  For printing and
! ;; sharing of notes, an Org-mode file (or a part of it) can be exported as
! ;; a structured ASCII file, or as HTML.
  ;;
  ;; Installation
  ;; ------------
! ;; The instruction below assume that you have downloaded Org-mode from the
! ;; web.  If Org-mode is part of the Emacs distribution or an XEmacs package,
! ;; you only need to add to .emacs the last three lines of Lisp code listed
! ;; below, i.e. the `auto-mode-alist' modification and the global key bindings.
  ;;
! ;; Byte-compile org.el and put it on your load path.  Then copy the
! ;; following lines into .emacs.  The last two lines define *global*
! ;; keys for the commands `org-store-link' and `org-agenda' - please
! ;; choose suitable keys yourself.
  ;;
  ;;    (autoload 'org-mode "org" "Org mode" t)
  ;;    (autoload 'org-diary "org" "Diary entries from Org mode")
--- 31,60 ----
  ;; project planning with a fast and effective plain-text system.
  ;;
  ;; Org-mode develops organizational tasks around a NOTES file that contains
! ;; information about projects as plain text.  Org-mode is implemented on top
! ;; of outline-mode - ideal to keep the content of large files well structured.
! ;; It supports ToDo items, deadlines and time stamps, which can be extracted
! ;; to create a daily/weekly agenda that also integrates the diary of the Emacs
! ;; calendar.  Tables are easily created with a built-in table editor.  Plain
! ;; text URL-like links connect to websites, emails (VM, RMAIL, WANDERLUST),
! ;; Usenet messages (Gnus), BBDB entries, and any files related to the
! ;; projects.  For printing and sharing of notes, an Org-mode file (or a part
! ;; of it) can be exported as a structured ASCII file, or as HTML.
  ;;
  ;; Installation
  ;; ------------
! ;; If Org-mode is part of the Emacs distribution or an XEmacs package, you
! ;; only need to copy the following lines to your .emacs file.  The last two
! ;; lines define *global* keys for the commands `org-store-link' and
! ;; `org-agenda' - please choose suitable keys yourself.
  ;;
! ;;    (add-to-list 'auto-mode-alist '("\\.org$" . org-mode))
! ;;    (define-key global-map "\C-cl" 'org-store-link)
! ;;    (define-key global-map "\C-ca" 'org-agenda)
! ;;
! ;; If you have downloaded Org-mode from the Web, you must byte-compile
! ;; org.el and put it on your load path.  In addition to the Emacs Lisp
! ;; lines above, you also need to add the following lines to .emacs:
  ;;
  ;;    (autoload 'org-mode "org" "Org mode" t)
  ;;    (autoload 'org-diary "org" "Diary entries from Org mode")
***************
*** 59,70 ****
  ;;    (autoload 'org-store-link "org" "Store a link to the current location" 
t)
  ;;    (autoload 'orgtbl-mode "org" "Org tables as a minor mode" t)
  ;;    (autoload 'turn-on-orgtbl "org" "Org tables as a minor mode")
- ;;    (add-to-list 'auto-mode-alist '("\\.org$" . org-mode))
- ;;    (define-key global-map "\C-cl" 'org-store-link)
- ;;    (define-key global-map "\C-ca" 'org-agenda)
  ;;
! ;; This will put all files with extension ".org" into Org-mode.  As an
! ;; alternative, make the first line of a file look like this:
  ;;
  ;;     MY PROJECTS    -*- mode: org; -*-
  ;;
--- 62,70 ----
  ;;    (autoload 'org-store-link "org" "Store a link to the current location" 
t)
  ;;    (autoload 'orgtbl-mode "org" "Org tables as a minor mode" t)
  ;;    (autoload 'turn-on-orgtbl "org" "Org tables as a minor mode")
  ;;
! ;; This setup will put all files with extension ".org" into Org-mode.  As
! ;; an alternative, make the first line of a file look like this:
  ;;
  ;;     MY PROJECTS    -*- mode: org; -*-
  ;;
***************
*** 73,84 ****
  ;;
  ;; Documentation
  ;; -------------
! ;; The documentation of Org-mode can be found in the TeXInfo file.
! ;; The distribution also contains a PDF version of it.  At the homepage
! ;; of Org-mode, you can read the same text online as HTML.
  ;;
  ;; Changes:
  ;; -------
  ;; Version 3.08
  ;;    - "|" no longer allowed as part of a link, to allow links in tables.
  ;;    - The prefix of items in the agenda buffer can be configured.
--- 73,90 ----
  ;;
  ;; Documentation
  ;; -------------
! ;; The documentation of Org-mode can be found in the TeXInfo file.  The
! ;; distribution also contains a PDF version of it.  At the homepage of
! ;; Org-mode, you can read the same text online as HTML.  There is also an
! ;; excellent reference card made by Philip Rooke.
  ;;
  ;; Changes:
  ;; -------
+ ;; Version 3.09
+ ;;    - Time-of-day specifications in agenda are extracted and placed
+ ;;      into the prefix.  Timed entries can be placed into a time grid for
+ ;;      day.
+ ;;
  ;; Version 3.08
  ;;    - "|" no longer allowed as part of a link, to allow links in tables.
  ;;    - The prefix of items in the agenda buffer can be configured.
***************
*** 136,142 ****
  ;;      warnings about upcoming deadlines/overdue scheduled items.
  ;;      That functionality is now limited to the (multifile) agenda.
  ;;    - When reading a date, the calendar can be manipulated with keys.
! ;;    - Link support for RMAIL and Wanderlust (from planner.el, untested)
  ;;    - Minor bug fixes and documentation improvements.
  
  ;;; Code:
--- 142,148 ----
  ;;      warnings about upcoming deadlines/overdue scheduled items.
  ;;      That functionality is now limited to the (multifile) agenda.
  ;;    - When reading a date, the calendar can be manipulated with keys.
! ;;    - Link support for RMAIL and Wanderlust (from planner.el, untested).
  ;;    - Minor bug fixes and documentation improvements.
  
  ;;; Code:
***************
*** 148,163 ****
  
  ;;; Customization variables
  
! (defvar org-version "3.08"
    "The version number of the file org.el.")
  (defun org-version ()
    (interactive)
    (message "Org-mode version %s" org-version))
  
! ;; The following two constants are for compatibility with different 
! ;; Emacs versions (Emacs versus XEmacs) and with different versions of
! ;; outline.el.  All the compatibility code in org.el is based on these two
! ;; constants.
  (defconst org-xemacs-p (featurep 'xemacs)
    "Are we running xemacs?")
  (defconst org-noutline-p (featurep 'noutline)
--- 154,168 ----
  
  ;;; Customization variables
  
! (defvar org-version "3.09"
    "The version number of the file org.el.")
  (defun org-version ()
    (interactive)
    (message "Org-mode version %s" org-version))
  
! ;; The following two constants are for compatibility with different Emacs
! ;; versions (Emacs versus XEmacs) and with different versions of outline.el.
! ;; The compatibility code in org.el is based on these two constants.
  (defconst org-xemacs-p (featurep 'xemacs)
    "Are we running xemacs?")
  (defconst org-noutline-p (featurep 'noutline)
***************
*** 570,576 ****
  the sequence given in `org-agenda-files'.  Within each category sort by
  priority.
  
! Leaving out the `category-keep' would mean that items will be sorted across
  categories by priority."
    :group 'org-agenda
    :type '(repeat 
--- 575,581 ----
  the sequence given in `org-agenda-files'.  Within each category sort by
  priority.
  
! Leaving out `category-keep' would mean that items will be sorted across
  categories by priority."
    :group 'org-agenda
    :type '(repeat 
***************
*** 583,589 ****
             (const priority-up)
             (const priority-down))))
  
! (defcustom org-agenda-prefix-format "  %-12:c% s"
    "Format specification for the prefix of items in the agenda buffer.
  This format works similar to a printf format, with the following meaning:
  
--- 588,594 ----
             (const priority-up)
             (const priority-down))))
  
! (defcustom org-agenda-prefix-format "  %-12:c%?-12t% s"
    "Format specification for the prefix of items in the agenda buffer.
  This format works similar to a printf format, with the following meaning:
  
***************
*** 593,614 ****
         format HH:MM
    %s   Scheduling/Deadline information, a short string
  
! In addition to the normal printf field modifiers like field width and
! padding instructions, in this format you can also add an additional
! punctuation or whitespace character just before the final format letter.
! This character will be appended to the field value if the value is not
! empty.  For example, the format \"%-12:c\" leads to \"Diary:    \" if
! the category is \"Diary\".  If the category were be empty, no additional
! colon would be interted.
! 
! Including `%t' in the format string leads to a double time specification
! because the headline/diary item will contain the time specification as
! well.  However, using `%t' in the format will result in a canonical 24
! hour time specification at a consistent position in the prefix, while the
! time specification in the headline/diary item may be at any position and in
! various formats.
! Example:
!   (setq org-agenda-prefix-format \"  %-12:c% t% s\")"
    :type 'string
    :group 'org-agenda)
  
--- 598,636 ----
         format HH:MM
    %s   Scheduling/Deadline information, a short string
  
! All specifiers work basically like the standard `%s' of printf, but may
! contain two additional characters:  A question mark just after the `%' and
! a whitespace/punctuation character just before the final letter.
! 
! If the first character after `%' is a question mark, the entire field
! will only be included if the corresponding value applies to the
! current entry.  This is useful for fields which should have fixed
! width when present, but zero width when absent.  For example,
! \"%?-12t\" will result in a 12 character time field if a time of the
! day is specified, but will completely disappear in entries which do
! not contain a time.
! 
! If there is punctuation or whitespace character just before the final
! format letter, this character will be appended to the field value if
! the value is not empty.  For example, the format \"%-12:c\" leads to
! \"Diary: \" if the category is \"Diary\".  If the category were be
! empty, no additional colon would be interted.
! 
! The default value of this option is \"  %-12:c%?-12t% s\", meaning:
! - Indent the line with two space characters
! - Give the category in a 12 chars wide field, padded with whitespace on
!   the right (because of `-').  Append a colon if there is a category
!   (because of `:').
! - If there is a time-of-day, put it into a 12 chars wide field.  If no
!   time, don't put in an empty field, just skip it (because of '?').
! - Finally, put the scheduling information and append a whitespace.
! 
! As another example, if you don't want the time-of-day of entries in
! the prefix, you could use:
! 
!   (setq org-agenda-prefix-format \"  %-11:c% s\")
! 
! See also the variable `org-agenda-remove-times-when-in-prefix'."
    :type 'string
    :group 'org-agenda)
  
***************
*** 618,630 ****
    :group 'org-agenda)
  
  (defvar org-prefix-format-compiled nil
!   "The compiled version of `org-???-prefix-format'.")
  
  (defcustom org-sort-agenda-notime-is-late t
    "Non-nil means, items without time are considered late.
  This is only relevant for sorting.  When t, items which have no explicit
  time like 15:30 will be considered as 24:01, i.e. later than any items which
! do have a time.  When nil, the default time is before 0:00."
    :group 'org-agenda
    :type 'boolean)
  
--- 640,703 ----
    :group 'org-agenda)
  
  (defvar org-prefix-format-compiled nil
!   "The compiled version of the most recently used prefix format.
! Depending on which command was used last, this may be the compiled version
! of `org-agenda-prefix-format' or `org-timeline-prefix-format'.")
! 
! (defcustom org-agenda-use-time-grid t
!   "Non-nil means, show a time grid in the agenda schedule.
! A time grid is a set of lines for specific times (like every two hours between
! 8:00 and 20:00.  The items scheduled for a day at specific times are
! sorted in between these lines.
! For deails about when the grid will be shown, and what it will look like, see
! the variable `org-agenda-time-grid'."
!   :group 'org-agenda
!   :type 'boolean)
! 
! (defcustom org-agenda-time-grid 
!   '((daily today require-timed)
!     "----------------"
!     (800 1000 1200 1400 1600 1800 2000))
! 
!   "FIXME: document"
!   :group 'org-agenda
!   :type 
!   '(list
!     (set :greedy t :tag "Grid Display Options"
!          (const :tag "Show grid in single day agenda display" daily)
!          (const :tag "Show grid in weekly agenda display" weekly)
!          (const :tag "Always show grid for today" today)
!          (const :tag "Show grid only if any timed entries are present"
!                 require-timed)
!          (const :tag "Skip grid times already present in an entry"
!                 remove-match))
!     (string :tag "Grid String")
!     (repeat :tag "Grid Times" (integer :tag "Time"))))
! 
! (defcustom org-agenda-remove-times-when-in-prefix t
!   "Non-nil means, remove duplicate time specifications in agenda items.
! When the format `org-agenda-prefix-format' contains a `%t' specifier, a
! time-of-day specification in a headline or diary entry is extracted and
! placed into the prefix.  If this option is non-nil, the original specification
! \(a timestamp or -range, or just a plain time(range) specification like
! 11:30-4pm) will be removed for agenda display.  This makes the agenda less
! cluttered.
! The option can be t or nil.  It may also be the symbol `beg', indicating
! that the time should only be removed what it is located at the beginning of
! the headline/diary entry."
!   :group 'org-agenda
!   :type '(choice
!           (const :tag "Always" t)
!           (const :tag "Never" nil)
!           (const :tag "When at beginning of entry" beg)))
  
  (defcustom org-sort-agenda-notime-is-late t
    "Non-nil means, items without time are considered late.
  This is only relevant for sorting.  When t, items which have no explicit
  time like 15:30 will be considered as 24:01, i.e. later than any items which
! do have a time.  When nil, the default time is before 0:00.  You can use this
! option to decide if the schedule for today should come before or after 
timeless
! agenda entries."
    :group 'org-agenda
    :type 'boolean)
  
***************
*** 1370,1375 ****
--- 1443,1456 ----
    "Face used for tables."
    :group 'org-faces)
  
+ (defface org-time-grid-face ;; font-lock-variable-name-face
+   '((((type tty) (class color)) (:foreground "yellow" :weight light))
+     (((class color) (background light)) (:foreground "DarkGoldenrod"))
+     (((class color) (background dark)) (:foreground "LightGoldenrod"))
+     (t (:bold t :italic t)))
+   "Face used for level 2 headlines."
+   :group 'org-faces)
+ 
  (defvar org-level-faces
    '(
      org-level-1-face
***************
*** 1496,1502 ****
        (save-excursion
          (goto-char (point-min))
          (insert "    -*- mode: org -*-\n\n")))
!   (run-hooks 'org-mode-hook)       ;FIXME: Should be run-mode-hooks.
    (unless org-inhibit-startup
      (if org-startup-with-deadline-check
          (call-interactively 'org-check-deadlines)
--- 1577,1583 ----
        (save-excursion
          (goto-char (point-min))
          (insert "    -*- mode: org -*-\n\n")))
!   (run-hooks 'org-mode-hook)
    (unless org-inhibit-startup
      (if org-startup-with-deadline-check
          (call-interactively 'org-check-deadlines)
***************
*** 1565,1571 ****
    (save-excursion
      (org-back-to-heading t)
      (- (match-end 0) (match-beginning 0))))
!     
  (defvar org-font-lock-keywords nil)
  
  (defun org-set-font-lock-defaults ()
--- 1646,1652 ----
    (save-excursion
      (org-back-to-heading t)
      (- (match-end 0) (match-beginning 0))))
! 
  (defvar org-font-lock-keywords nil)
  
  (defun org-set-font-lock-defaults ()
***************
*** 2844,2856 ****
  (defun org-time-string-to-time (s)
    (apply 'encode-time (org-parse-time-string s)))
  
! (defun org-parse-time-string (s)
    "Parse the standard Org-mode time string.
! This should be a lot faster than the normal `parse-time-string'."
    (if (string-match org-ts-regexp1 s)
        (list 0
!             (string-to-number (or (match-string 8 s) "0"))
!             (string-to-number (or (match-string 7 s) "0"))
              (string-to-number (match-string 4 s))
              (string-to-number (match-string 3 s))
              (string-to-number (match-string 2 s))
--- 2925,2941 ----
  (defun org-time-string-to-time (s)
    (apply 'encode-time (org-parse-time-string s)))
  
! (defun org-parse-time-string (s &optional nodefault)
    "Parse the standard Org-mode time string.
! This should be a lot faster than the normal `parse-time-string'.
! If time is not given, defaults to 0:00.  However, with optional NODEFAULT,
! hour and minute fields will be nil if not given."
    (if (string-match org-ts-regexp1 s)
        (list 0
!             (if (or (match-beginning 8) (not nodefault))
!                 (string-to-number (or (match-string 8 s) "0")))
!             (if (or (match-beginning 7) (not nodefault))
!                 (string-to-number (or (match-string 7 s) "0")))
              (string-to-number (match-string 4 s))
              (string-to-number (match-string 3 s))
              (string-to-number (match-string 2 s))
***************
*** 3056,3061 ****
--- 3141,3147 ----
  
  (define-key org-agenda-mode-map "f" 'org-agenda-follow-mode)
  (define-key org-agenda-mode-map "d" 'org-agenda-toggle-diary)
+ (define-key org-agenda-mode-map "g" 'org-agenda-toggle-time-grid)
  (define-key org-agenda-mode-map "r" 'org-agenda-redo)
  (define-key org-agenda-mode-map "q" 'org-agenda-quit)
  (define-key org-agenda-mode-map "x" 'org-agenda-exit)
***************
*** 3115,3121 ****
       ["Decrease Priority" org-agenda-priority-down t]
       ["Show Priority" org-agenda-show-priority t])
      "--"
!     ["Rebuild" org-agenda-redo t]
      ["Goto Today" org-agenda-goto-today t]
      ["Next Dates" org-agenda-later (local-variable-p 'starting-day)]
      ["Previous Dates" org-agenda-earlier (local-variable-p 'starting-day)]
--- 3201,3207 ----
       ["Decrease Priority" org-agenda-priority-down t]
       ["Show Priority" org-agenda-show-priority t])
      "--"
!     ["Rebuild buffer" org-agenda-redo t]
      ["Goto Today" org-agenda-goto-today t]
      ["Next Dates" org-agenda-later (local-variable-p 'starting-day)]
      ["Previous Dates" org-agenda-earlier (local-variable-p 'starting-day)]
***************
*** 3124,3129 ****
--- 3210,3217 ----
       (local-variable-p 'starting-day)]
      ["Include Diary" org-agenda-toggle-diary
       :style toggle :selected org-agenda-include-diary :active t]
+     ["Use Time Grid" org-agenda-toggle-time-grid
+      :style toggle :selected org-agenda-use-time-grid :active t]
      "--"
      ["New Diary Entry" org-agenda-diary-entry t]
      ("Calendar Commands"
***************
*** 3294,3304 ****
                           (d (- nt n1)))
                      (- sd (+ (if (< d 0) 7 0) d)))))
           (day-numbers (list start))
!          s e rtn rtnall file date d start-pos end-pos)
      (setq org-agenda-redo-command 
            (list 'org-agenda include-all start-day ndays))
      ;; Make the list of days
!     (setq ndays (or ndays org-agenda-ndays))
      (while (> ndays 1)
        (push (1+ (car day-numbers)) day-numbers)
        (setq ndays (1- ndays)))
--- 3382,3394 ----
                           (d (- nt n1)))
                      (- sd (+ (if (< d 0) 7 0) d)))))
           (day-numbers (list start))
!          (inhibit-redisplay t)
!          s e rtn rtnall file date d start-pos end-pos todayp nd)
      (setq org-agenda-redo-command 
            (list 'org-agenda include-all start-day ndays))
      ;; Make the list of days
!     (setq ndays (or ndays org-agenda-ndays)
!           nd ndays)
      (while (> ndays 1)
        (push (1+ (car day-numbers)) day-numbers)
        (setq ndays (1- ndays)))
***************
*** 3324,3334 ****
                  rtn (org-agenda-get-day-entries
                       file date :todo))
            (setq rtnall (append rtnall rtn))))
!       (if rtnall (insert (org-finalize-agenda-entries rtnall) "\n")))
      (while (setq d (pop day-numbers))
        (setq date (calendar-gregorian-from-absolute d)
              s (point))
!       (if (or (= d today)
                (and (not start-pos) (= d sd)))
            (setq start-pos (point))
          (if (and start-pos (not end-pos))
--- 3414,3428 ----
                  rtn (org-agenda-get-day-entries
                       file date :todo))
            (setq rtnall (append rtnall rtn))))
!       (when rtnall 
!         (insert "ALL CURRENTLY OPEN TODO ITEMS:\n")
!         (add-text-properties (point-min) (1- (point))
!                              (list 'face 'org-link-face))
!         (insert (org-finalize-agenda-entries rtnall) "\n")))
      (while (setq d (pop day-numbers))
        (setq date (calendar-gregorian-from-absolute d)
              s (point))
!       (if (or (setq todayp (= d today))
                (and (not start-pos) (= d sd)))
            (setq start-pos (point))
          (if (and start-pos (not end-pos))
***************
*** 3347,3360 ****
              (setq rtnall (append rtnall rtn))))
        (if (or rtnall org-agenda-show-all-dates)
            (progn
!             (insert (format "%-9s %2d %-9s %4d\n"
                              (calendar-day-name date)
                              (extract-calendar-day date)
                              (calendar-month-name (extract-calendar-month 
date))
                              (extract-calendar-year date)))
              (put-text-property s (1- (point)) 'face
                                 'org-link-face)
!             (if rtnall (insert (org-finalize-agenda-entries rtnall) "\n"))
              (put-text-property s (1- (point)) 'day d))))            
      (goto-char (point-min))
      (setq buffer-read-only t)
--- 3441,3458 ----
              (setq rtnall (append rtnall rtn))))
        (if (or rtnall org-agenda-show-all-dates)
            (progn
!             (insert (format "%-9s %2d %s %4d\n"
                              (calendar-day-name date)
                              (extract-calendar-day date)
                              (calendar-month-name (extract-calendar-month 
date))
                              (extract-calendar-year date)))
              (put-text-property s (1- (point)) 'face
                                 'org-link-face)
!             (if rtnall (insert 
!                         (org-finalize-agenda-entries ;; FIXME: condition 
needed
!                          (org-agenda-add-time-grid-maybe
!                           rtnall nd todayp))
!                         "\n"))
              (put-text-property s (1- (point)) 'day d))))            
      (goto-char (point-min))
      (setq buffer-read-only t)
***************
*** 3502,3507 ****
--- 3600,3614 ----
    (message "Diary inclusion turned %s"
             (if org-agenda-include-diary "on" "off")))
  
+ (defun org-agenda-toggle-time-grid ()
+   "Toggle follow mode in an agenda buffer."
+   (interactive)
+   (setq org-agenda-use-time-grid (not org-agenda-use-time-grid))
+   (org-agenda-redo)
+   (org-agenda-set-mode-name)
+   (message "Time-grid turned %s"
+            (if org-agenda-use-time-grid "on" "off")))
+ 
  (defun org-agenda-set-mode-name ()
    "Set the mode name to indicate all the small mode settings."
    (setq mode-name
***************
*** 3509,3515 ****
                  (if (equal org-agenda-ndays 1) " Day"    "")
                  (if (equal org-agenda-ndays 7) " Week"   "")
                  (if org-agenda-follow-mode     " Follow" "")
!                 (if org-agenda-include-diary   " Diary"  "")))
    (force-mode-line-update))
  
  (defun org-agenda-post-command-hook ()
--- 3616,3623 ----
                  (if (equal org-agenda-ndays 1) " Day"    "")
                  (if (equal org-agenda-ndays 7) " Week"   "")
                  (if org-agenda-follow-mode     " Follow" "")
!                 (if org-agenda-include-diary   " Diary"  "")
!                 (if org-agenda-use-time-grid   " Grid"   "")))
    (force-mode-line-update))
  
  (defun org-agenda-post-command-hook ()
***************
*** 3524,3530 ****
    "Get the (Emacs Calendar) diary entries for DATE."
    (let* ((fancy-diary-buffer "*temporary-fancy-diary-buffer*")
           (diary-display-hook '(fancy-diary-display))
!          (list-diary-entries-hook
            (cons 'org-diary-default-entry list-diary-entries-hook))
           entries
           (org-disable-diary t))
--- 3632,3638 ----
    "Get the (Emacs Calendar) diary entries for DATE."
    (let* ((fancy-diary-buffer "*temporary-fancy-diary-buffer*")
           (diary-display-hook '(fancy-diary-display))
!          (list-diary-entries-hook 
            (cons 'org-diary-default-entry list-diary-entries-hook))
           entries
           (org-disable-diary t))
***************
*** 3551,3557 ****
        (setq entries 
              (mapcar 
               (lambda (x)
!                (setq x (org-format-agenda-item "" x "Diary"))
                 ;; Extend the text properties to the beginning of the line
                 (add-text-properties 
                  0 (length x)
--- 3659,3665 ----
        (setq entries 
              (mapcar 
               (lambda (x)
!                (setq x (org-format-agenda-item "" x "Diary" 'time))
                 ;; Extend the text properties to the beginning of the line
                 (add-text-properties 
                  0 (length x)
***************
*** 3764,3770 ****
           arg results rtn)
      (if (not buffer)
          ;; If file does not exist, make sure an error message ends up in diary
!         (format "ORG-AGENDA-ERROR: No such org-file %s" file)
        (with-current-buffer buffer
          (unless (eq major-mode 'org-mode)
            (error "Agenda file %s is not in `org-mode'" file))
--- 3872,3878 ----
           arg results rtn)
      (if (not buffer)
          ;; If file does not exist, make sure an error message ends up in diary
!         (list (format "ORG-AGENDA-ERROR: No such org-file %s" file))
        (with-current-buffer buffer
          (unless (eq major-mode 'org-mode)
            (error "Agenda file %s is not in `org-mode'" file))
***************
*** 3796,3803 ****
                   ((and (eq arg :deadline)
                         (equal date (calendar-current-date)))
                    (setq rtn (org-agenda-get-deadlines))
!                   (setq results (append results rtn))))))))))
!     results))
  
  (defun org-entry-is-done-p ()
    "Is the current entry marked DONE?"
--- 3904,3911 ----
                   ((and (eq arg :deadline)
                         (equal date (calendar-current-date)))
                    (setq rtn (org-agenda-get-deadlines))
!                   (setq results (append results rtn))))))))
!         results))))
  
  (defun org-entry-is-done-p ()
    "Is the current entry marked DONE?"
***************
*** 3876,3882 ****
                             (list 0 0 0 (nth 1 date) (car date) (nth 2 date))))
                     0 11)))
           marker hdmarker deadlinep scheduledp donep tmp priority
!          ee txt)
      (goto-char (point-min))
      (while (re-search-forward regexp nil t)
        (if (not (save-match-data (org-at-date-range-p)))
--- 3984,3990 ----
                             (list 0 0 0 (nth 1 date) (car date) (nth 2 date))))
                     0 11)))
           marker hdmarker deadlinep scheduledp donep tmp priority
!          ee txt timestr)
      (goto-char (point-min))
      (while (re-search-forward regexp nil t)
        (if (not (save-match-data (org-at-date-range-p)))
***************
*** 3886,3894 ****
--- 3994,4006 ----
                                               (- (match-beginning 0)
                                                  org-ds-keyword-length))
                                          (match-beginning 0))
+                   timestr (buffer-substring (match-beginning 0) 
(point-at-eol))
                    deadlinep (string-match org-deadline-regexp tmp)
                    scheduledp (string-match org-scheduled-regexp tmp)
                    donep (org-entry-is-done-p))
+             (if (string-match ">" timestr)
+                 ;; substring should only run to end of time stamp
+                 (setq timestr (substring timestr 0 (match-end 0))))
              (save-excursion
                (if (re-search-backward "\\(^\\|\r\\)\\*+" nil t)
                    (progn
***************
*** 3899,3905 ****
                                 (format "%s%s"
                                         (if deadlinep  "Deadline:  " "")
                                         (if scheduledp "Scheduled: " ""))
!                                (match-string 1))))
                  (setq txt org-agenda-no-heading-message))
                (setq priority (org-get-priority txt))
                (add-text-properties
--- 4011,4017 ----
                                 (format "%s%s"
                                         (if deadlinep  "Deadline:  " "")
                                         (if scheduledp "Scheduled: " ""))
!                                (match-string 1) nil timestr)))
                  (setq txt org-agenda-no-heading-message))
                (setq priority (org-get-priority txt))
                (add-text-properties
***************
*** 4044,4053 ****
                                (abbreviate-file-name (buffer-file-name)))))
           (regexp org-tr-regexp)
           (d0 (calendar-absolute-from-gregorian date))
!          marker hdmarker ee txt d1 d2 s1 s2)
      (goto-char (point-min))
      (while (re-search-forward regexp nil t)
!       (setq s1 (match-string 1)
              s2 (match-string 2)
              d1 (time-to-days (org-time-string-to-time s1))
              d2 (time-to-days (org-time-string-to-time s2)))
--- 4156,4166 ----
                                (abbreviate-file-name (buffer-file-name)))))
           (regexp org-tr-regexp)
           (d0 (calendar-absolute-from-gregorian date))
!          marker hdmarker ee txt d1 d2 s1 s2 timestr)
      (goto-char (point-min))
      (while (re-search-forward regexp nil t)
!       (setq timestr (match-string 0)
!             s1 (match-string 1)
              s2 (match-string 2)
              d1 (time-to-days (org-time-string-to-time s1))
              d2 (time-to-days (org-time-string-to-time s2)))
***************
*** 4062,4070 ****
                    (goto-char (match-end 1))
                    (looking-at "\\*+[ \t]*\\([^\r\n]+\\)")
                    (setq txt (org-format-agenda-item 
!                              (format "(%d/%d): "
                                       (1+ (- d0 d1)) (1+ (- d2 d1)))
!                              (match-string 1))))
                (setq txt org-agenda-no-heading-message))
              (add-text-properties
               0 (length txt) (append (list 'org-marker marker
--- 4175,4183 ----
                    (goto-char (match-end 1))
                    (looking-at "\\*+[ \t]*\\([^\r\n]+\\)")
                    (setq txt (org-format-agenda-item 
!                              (format (if (= d1 d2) "" "(%d/%d): ")
                                       (1+ (- d0 d1)) (1+ (- d2 d1)))
!                              (match-string 1) nil (if (= d0 d1) timestr))))
                (setq txt org-agenda-no-heading-message))
              (add-text-properties
               0 (length txt) (append (list 'org-marker marker
***************
*** 4077,4142 ****
      ;; Sort the entries by expiration date.
      (nreverse ee)))
  
! (defun org-format-agenda-item (prefix txt &optional category)
    "Format TXT to be inserted into the agenda buffer.
! In particular, this indents the line and adds a category."
!   (let* ((category (or category
!                        org-category
!                        (file-name-sans-extension
!                         (file-name-nondirectory (buffer-file-name)))))
!          (extra prefix)
!          (time-of-day (org-get-time-of-day txt))
!          (t1 (if time-of-day (concat "0" (int-to-string time-of-day)) "0000"))
!          (time (if time-of-day
!                    (concat (substring t1 -4 -2)
!                            ":" (substring t1 -2))
!                  ""))
!          rtn)
!     (if (symbolp category) (setq category (symbol-name category)))
!     (setq rtn (concat (eval org-prefix-format-compiled) txt))
!     (add-text-properties
!      0 (length rtn) (list 'category (downcase category)
!                           'prefix-length (- (length rtn) (length txt))
!                           'time-of-day time-of-day)
!      rtn)
!     rtn))
!   
  (defun org-compile-prefix-format (format)
    "Compile the prefix format into a Lisp form that can be evaluated.
  The resulting form is returned and stored in the variable
  `org-prefix-format-compiled'."
!   (let ((start 0) varform vars (s format) c)
!     (while (string-match "%\\([-+]?[0-9.]*\\)\\([ .;,:!?=|/<>]?\\)\\([cts]\\)"
                           s start)
!       (setq var (cdr (assoc (match-string 3 s)
                              '(("c" . category) ("t" . time) ("s" . extra))))
!             c (match-string 2 s)
              start (1+ (match-beginning 0)))
!       (if (= (length c) 1)
!           (setq varform `(if (equal "" ,var) "" (concat ,var ,c)))
!         (setq varform var))
!       (setq s (replace-match "%\\1s" t nil s))
        (push varform vars))
      (setq vars (nreverse vars))
      (setq org-prefix-format-compiled `(format ,s ,@vars))))
  
! (defun org-get-time-of-day (s)
    "Check string S for a time of day.
  If found, return it as a military time number between 0 and 2400.
! If not found, return nil."
    (save-match-data
!     (when (or
!            (string-match
!             "\\<\\([012]?[0-9]\\)\\(:\\([0-5][0-9]\\)\\)\\([AaPp][Mm]\\)?\\>" 
s)
!            (string-match
!             "\\<\\([012]?[0-9]\\)\\(:\\([0-5][0-9]\\)\\)?\\([AaPp][Mm]\\)\\>" 
s))
!       (+ (* 100 (+ (string-to-number (match-string 1 s))
!                    (if (and (match-beginning 4)
!                             (equal (downcase (match-string 4 s)) "pm"))
!                        12 0)))
!          (if (match-beginning 3)
!              (string-to-number (match-string 3 s))
!            0)))))
  
  (defun org-finalize-agenda-entries (list)
    "Sort and concatenate the agenda items."
--- 4190,4376 ----
      ;; Sort the entries by expiration date.
      (nreverse ee)))
  
! 
! 
! (defconst org-plain-time-of-day-regexp
!   (concat
!    "\\(\\<[012]?[0-9]"
!    "\\(\\(:\\([0-5][0-9]\\([AaPp][Mm]\\)?\\)\\)\\|\\([AaPp][Mm]\\)\\)\\>\\)"
!    "\\(--?"
!    "\\(\\<[012]?[0-9]"
!    "\\(\\(:\\([0-5][0-9]\\([AaPp][Mm]\\)?\\)\\)\\|\\([AaPp][Mm]\\)\\)\\>\\)"
!    "\\)?")
!   "Regular expression to match a plain time or time range.
! Examples:  11:45 or 8am-13:15 or 2:45-2:45pm.  After a match, the following
! groups carry important information:
! 0  the full match
! 1  the first time, range or not
! 8  the second time, if it is a range.")
! 
! (defconst org-stamp-time-of-day-regexp
!   (concat
!    "<\\([0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\} +[a-zA-Z]+ +\\)"
!    "\\([012][0-9]:[0-5][0-9]\\)>"
!    "\\(--?"
!    "<\\1\\([012][0-9]:[0-5][0-9]\\)>\\)?")
!   "Regular expression to match a timestamp time or time range.
! After a match, the following groups carry important information:
! 0  the full match
! 1  date plus weekday, for backreferencing to make sure both times on same day
! 2  the first time, range or not
! 4  the second time, if it is a range.")
! 
! (defvar org-prefix-has-time nil
!   "A flag, set by `org-compile-prefix-format'.
! The flag is set if the currently compiled format contains a `%t'.")
! 
! (defun org-format-agenda-item (extra txt &optional category dotime noprefix)
    "Format TXT to be inserted into the agenda buffer.
! In particular, it adds the prefix and corresponding text properties.  EXTRA
! must be a string and replaces the `%s' specifier in the prefix format.
! CATEGORY (string, symbol or nil) may be used to overule the default
! category taken from local variable or file name. It will replace the `%c'
! specifier in the format.  DOTIME, when non-nil, indicates that a
! time-of-day should be extracted from TXT for sorting of this entry, and for
! the `%t' specifier in the format.  When DOTIME is a string, this string is
! searched for a time before TXT is.  NOPREFIX is a flag and indicates that
! only the correctly processes TXT should be returned - this is used by
! `org-agenda-change-all-lines'."
!   (save-match-data
!     ;; Diary entries sometimes have extra whitespace at the beginning
!     (if (string-match "^ +" txt) (setq txt (replace-match "" nil nil txt)))
!     (let* ((category (or category
!                          org-category
!                          (if (buffer-file-name)
!                              (file-name-sans-extension
!                               (file-name-nondirectory (buffer-file-name)))
!                            "")))
!            time              ;; needed for the eval of the prefix format
!            (ts (if dotime (concat (if (stringp dotime) dotime "") txt)))
!            (time-of-day (and dotime (org-get-time-of-day ts)))
!            stamp plain s0 s1 s2 rtn)
!       (when (and dotime time-of-day org-prefix-has-time)
!         ;; Extract starting and ending time and move them to prefix
!         (when (or (setq stamp (string-match org-stamp-time-of-day-regexp ts))
!                   (setq plain (string-match org-plain-time-of-day-regexp ts)))
!           (setq s0 (match-string 0 ts)
!                 s1 (match-string (if plain 1 2) ts)
!                 s2 (match-string (if plain 8 4) ts))
!           
!           ;; If the times are in TXT (not in DOTIMES), and the prefix will 
list
!           ;; them, we might want to remove them there to avoid duplication.
!           ;; The user can turn this off with a variable.
!           (if (and org-agenda-remove-times-when-in-prefix (or stamp plain)
!                    (string-match (concat (regexp-quote s0) " *") txt)
!                    (if (eq org-agenda-remove-times-when-in-prefix 'beg)
!                        (= (match-beginning 0) 0)
!                      t))
!               (setq txt (replace-match "" nil nil txt))))
!         ;; Normalize the time(s) to 24 hour
!         (if s1 (setq s1 (org-get-time-of-day s1 'string)))
!         (if s2 (setq s2 (org-get-time-of-day s2 'string))))
!       
!       ;; Create the final string
!       (if noprefix
!           (setq rtn txt)
!         ;; Prepare the variables needed in the eval of the compiled format
!         (setq time (cond (s2 (concat s1 "-" s2))
!                          (s1 (concat s1 "......"))
!                          (t ""))
!               extra (or extra "")
!               category (if (symbolp category) (symbol-name category) 
category))
!         ;; Evaluate the compiled format
!         (setq rtn (concat (eval org-prefix-format-compiled) txt)))
!       
!       ;; And finally add the text properties
!       (add-text-properties
!        0 (length rtn) (list 'category (downcase category)
!                             'prefix-length (- (length rtn) (length txt))
!                             'time-of-day time-of-day
!                             'dotime dotime)
!        rtn)
!       rtn)))
! 
! (defun org-agenda-add-time-grid-maybe (list ndays todayp)
!   (catch 'exit
!     (cond ((not org-agenda-use-time-grid) (throw 'exit list))
!           ((and todayp (member 'today (car org-agenda-time-grid))))
!           ((and (= ndays 1) (member 'daily (car org-agenda-time-grid))))
!           ((member 'weekly (car org-agenda-time-grid)))
!           (t (throw 'exit list)))
!     (let* ((have (delq nil (mapcar
!                             (lambda (x) (get-text-property 1 'time-of-day x))
!                             list)))
!            (string (nth 1 org-agenda-time-grid))
!            (gridtimes (nth 2 org-agenda-time-grid))
!            (req (car org-agenda-time-grid))
!            (remove (member 'remove-match req))
!            new time)
!       (if (and (member 'require-timed req) (not have))
!           ;; don't show empty grid
!           (throw 'exit list))
!       (while (setq time (pop gridtimes))
!         (unless (and remove (member time have))
!           (setq time (int-to-string time))
!           (push (org-format-agenda-item 
!                  nil string "" ;; FIXME: put a category?
!                  (concat (substring time 0 -2) ":" (substring time -2)))
!                 new)
!           (put-text-property 
!            1 (length (car new)) 'face 'org-time-grid-face (car new))))
!       (if (member 'time-up org-agenda-sorting-strategy)
!           (append new list)
!         (append list new)))))
! 
  (defun org-compile-prefix-format (format)
    "Compile the prefix format into a Lisp form that can be evaluated.
  The resulting form is returned and stored in the variable
  `org-prefix-format-compiled'."
!   (setq org-prefix-has-time nil)
!   (let ((start 0) varform vars var (s format) c f opt)
!     (while (string-match "%\\(\\?\\)?\\([-+]?[0-9.]*\\)\\([ 
.;,:!?=|/<>]?\\)\\([cts]\\)"
                           s start)
!       (setq var (cdr (assoc (match-string 4 s)
                              '(("c" . category) ("t" . time) ("s" . extra))))
!             c (or (match-string 3 s) "")
!             opt (match-beginning 1)
              start (1+ (match-beginning 0)))
!       (if (equal var 'time) (setq org-prefix-has-time t))
!       (setq f (concat "%" (match-string 2 s) "s"))
!       (if opt
!           (setq varform
!                 `(if (equal "" ,var)
!                      ""
!                    (format ,f (if (equal "" ,var) "" (concat ,var ,c)))))
!         (setq varform `(format ,f (if (equal ,var "") "" (concat ,var ,c)))))
!       (setq s (replace-match "%s" t nil s))
        (push varform vars))
      (setq vars (nreverse vars))
      (setq org-prefix-format-compiled `(format ,s ,@vars))))
  
! (defun org-get-time-of-day (s &optional string)
    "Check string S for a time of day.
  If found, return it as a military time number between 0 and 2400.
! If not found, return nil.
! The optional STRING argument forces conversion into a 5 character wide string
! HH:MM."
    (save-match-data
!     (when 
!      (or
!       (string-match
!        "\\<\\([012]?[0-9]\\)\\(:\\([0-5][0-9]\\)\\)\\([AaPp][Mm]\\)?\\> *" s)
!       (string-match
!        "\\<\\([012]?[0-9]\\)\\(:\\([0-5][0-9]\\)\\)?\\([AaPp][Mm]\\)\\> *" s))
!      (let* ((t0 (+ (* 100
!                       (+ (string-to-number (match-string 1 s))
!                          (if (and (match-beginning 4)
!                                   (equal (downcase (match-string 4 s)) "pm"))
!                              12 0)))
!                    (if (match-beginning 3)
!                        (string-to-number (match-string 3 s))
!                      0)))
!             (t1 (concat " " (int-to-string t0))))
!        (if string (concat (substring t1 -4 -2) ":" (substring t1 -2)) t0)))))
  
  (defun org-finalize-agenda-entries (list)
    "Sort and concatenate the agenda items."
***************
*** 4295,4317 ****
  
  (defun org-agenda-change-all-lines (newhead hdmarker &optional fixface)
    "Change all lines in the agenda buffer which match hdmarker.
! The new content of the line will be NEWHEAD.  HDMARKER is checked with
! `equal' against all `org-hd-marker' text properties in the file."
!   (let* (props m pl undone-face done-face)
      (save-excursion
        (goto-char (point-max))
        (beginning-of-line 1)
!       (while (not (bobp))
          (when (and (setq m (get-text-property (point) 'org-hd-marker))
                     (equal m hdmarker))
            (setq props (text-properties-at (point))
                  pl (get-text-property (point) 'prefix-length)
                  undone-face (get-text-property (point) 'undone-face)
                  done-face (get-text-property (point) 'done-face))
            (move-to-column pl)
            (if (looking-at ".*")
                (progn
!                 (replace-match newhead t t)
                  (beginning-of-line 1)
                  (add-text-properties (point-at-bol) (point-at-eol) props)
                  (if fixface
--- 4529,4558 ----
  
  (defun org-agenda-change-all-lines (newhead hdmarker &optional fixface)
    "Change all lines in the agenda buffer which match hdmarker.
! The new content of the line will be NEWHEAD (as modified by
! `org-format-agenda-item').  HDMARKER is checked with
! `equal' against all `org-hd-marker' text properties in the file.
! If FIXFACE is non-nil, the face of each item is modified acording to
! the new TODO state."
!   (let* (props m pl undone-face done-face finish new dotime)
! ;    (setq newhead (org-format-agenda-item "x" newhead "x" nil 'noprefix))
      (save-excursion
        (goto-char (point-max))
        (beginning-of-line 1)
!       (while (not finish)
!         (setq finish (bobp))
          (when (and (setq m (get-text-property (point) 'org-hd-marker))
                     (equal m hdmarker))
            (setq props (text-properties-at (point))
+                 dotime (get-text-property (point) 'dotime)
+                 new (org-format-agenda-item "x" newhead "x" dotime 'noprefix)
                  pl (get-text-property (point) 'prefix-length)
                  undone-face (get-text-property (point) 'undone-face)
                  done-face (get-text-property (point) 'done-face))
            (move-to-column pl)
            (if (looking-at ".*")
                (progn
!                 (replace-match new t t)
                  (beginning-of-line 1)
                  (add-text-properties (point-at-bol) (point-at-eol) props)
                  (if fixface
***************
*** 4355,4360 ****
--- 4596,4602 ----
          (and (outline-next-heading)
               (org-flag-heading nil)))   ; show the next heading
        (funcall 'org-priority force-direction)
+       (end-of-line 1)
        (setq newhead (org-get-heading)))
      (org-agenda-change-all-lines newhead hdmarker)
      (beginning-of-line 1)))
***************
*** 4519,4525 ****
               "ISO:        " (calendar-iso-date-string date) "\n"
               "Day of Yr:  " (calendar-day-of-year-string date) "\n"
               "Julian:     " (calendar-julian-date-string date) "\n"
!              "Astronomic: " (calendar-astro-date-string date)
               " (Julian date number at noon UTC)\n"
               "Hebrew:     " (calendar-hebrew-date-string date) " (until 
sunset)\n"
               "Islamic:    " (calendar-islamic-date-string date) " (until 
sunset)\n"
--- 4761,4767 ----
               "ISO:        " (calendar-iso-date-string date) "\n"
               "Day of Yr:  " (calendar-day-of-year-string date) "\n"
               "Julian:     " (calendar-julian-date-string date) "\n"
!              "Astron. JD: " (calendar-astro-date-string date)
               " (Julian date number at noon UTC)\n"
               "Hebrew:     " (calendar-hebrew-date-string date) " (until 
sunset)\n"
               "Islamic:    " (calendar-islamic-date-string date) " (until 
sunset)\n"
***************
*** 4865,4874 ****
                           ((fboundp 'gnus-group-name)
                            (gnus-group-name))
                           (t "???"))))
!         (setq link (concat (if (org-xor arg org-usenet-links-prefer-google)
!                                "http://groups.google.com/groups?group=";
!                              "gnus:")
!                            group))))
  
       ((memq major-mode '(gnus-summary-mode gnus-article-mode))
        (and (eq major-mode 'gnus-article-mode) (gnus-article-show-summary))
--- 5107,5117 ----
                           ((fboundp 'gnus-group-name)
                            (gnus-group-name))
                           (t "???"))))
!         (setq link (concat
!                     (if (org-xor arg org-usenet-links-prefer-google)
!                         "http://groups.google.com/groups?group=";
!                       "gnus:")
!                     group))))
  
       ((memq major-mode '(gnus-summary-mode gnus-article-mode))
        (and (eq major-mode 'gnus-article-mode) (gnus-article-show-summary))
***************
*** 4919,4927 ****
  
  (defun org-xor (a b)
    "Exclusive or."
!   ;; (if a (not b) b)
!   (or (and a (not b))
!       (and b (not a))))
  
  (defun org-get-header (header)
    "Find a header field in the current buffer."
--- 5162,5168 ----
  
  (defun org-xor (a b)
    "Exclusive or."
!   (if a (not b) b))
  
  (defun org-get-header (header)
    "Find a header field in the current buffer."
***************
*** 5217,5223 ****
                                    (point-at-bol) (point)))
          (beginning-of-line 1)
        (newline))
!     (mapcar (lambda (x) (insert line)) (make-list rows t))
      (goto-char pos)
      (if (> rows 1)
          ;; Insert a hline after the first row.
--- 5458,5465 ----
                                    (point-at-bol) (point)))
          (beginning-of-line 1)
        (newline))
!     ;; (mapcar (lambda (x) (insert line)) (make-list rows t))
!     (dotimes (i rows) (insert line))
      (goto-char pos)
      (if (> rows 1)
          ;; Insert a hline after the first row.
***************
*** 5285,5292 ****
      (unless (or (not (file-exists-p file))
                  (y-or-n-p (format "Overwrite file %s? " file)))
        (error "Abort"))
!     (save-excursion
!       (find-file file)
        (setq buf (current-buffer))
        (erase-buffer)
        (fundamental-mode)
--- 5527,5533 ----
      (unless (or (not (file-exists-p file))
                  (y-or-n-p (format "Overwrite file %s? " file)))
        (error "Abort"))
!     (with-current-buffer (find-file-noselect file)
        (setq buf (current-buffer))
        (erase-buffer)
        (fundamental-mode)
***************
*** 5406,5417 ****
      (setq rfmt (concat rfmt "\n")
            hfmt (concat (substring hfmt 0 -1) "|\n"))
      ;; Produce the new table
!     (while lines
!       (setq l (pop lines))
!       (if l
!           (setq new (concat new (apply 'format rfmt
!                                        (append (pop fields) emptystrings))))
!         (setq new (concat new hfmt))))
      ;; Replace the old one
      (delete-region beg end)
      (move-marker end nil)
--- 5647,5664 ----
      (setq rfmt (concat rfmt "\n")
            hfmt (concat (substring hfmt 0 -1) "|\n"))
      ;; Produce the new table
!     ;;(while lines
!     ;;  (setq l (pop lines))
!     ;;  (if l
!     ;;      (setq new (concat new (apply 'format rfmt
!     ;;                                   (append (pop fields) emptystrings))))
!     ;;    (setq new (concat new hfmt))))
!     (setq new (mapconcat
!                (lambda (l)
!                  (if l (apply 'format rfmt
!                               (append (pop fields) emptystrings))
!                    hfmt))
!                lines ""))
      ;; Replace the old one
      (delete-region beg end)
      (move-marker end nil)
***************
*** 8480,8488 ****
          (get-char-property (point) 'invisible))
      (save-excursion
        (skip-chars-backward "^\r\n")
!       (if (bobp)
!           nil
!         (equal (char-before) ?\r)))))
  
  (defun org-back-to-heading (&optional invisible-ok)
    "Move to previous heading line, or beg of this line if it's a heading.
--- 8727,8733 ----
          (get-char-property (point) 'invisible))
      (save-excursion
        (skip-chars-backward "^\r\n")
!       (equal (char-before) ?\r))))
  
  (defun org-back-to-heading (&optional invisible-ok)
    "Move to previous heading line, or beg of this line if it's a heading.




reply via email to

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