From faa09adf0e713461705453ce4e606da50bcf68cb Mon Sep 17 00:00:00 2001 From: Carsten Dominik Date: Thu, 31 Jan 2008 11:34:38 +0100 Subject: [PATCH] Release 4.75 --- org | 766 ++++++++++++++++++++++------------------ org-install.el | 1 + org.el | 1062 ++++++++++++++++++++++++++++++++++++++++---------------- org.pdf | Bin 718235 -> 720816 bytes org.texi | 344 +++++++++++------- orgcard.pdf | Bin 58569 -> 58889 bytes orgcard.tex | 2 +- 7 files changed, 1415 insertions(+), 760 deletions(-) rewrite orgcard.pdf (82%) diff --git a/org b/org index f82b69a20..5f45e44e4 100644 --- a/org +++ b/org @@ -5,7 +5,7 @@ START-INFO-DIR-ENTRY * Org Mode: (org). Outline-based notes management and organizer END-INFO-DIR-ENTRY - This manual is for Org-mode (version 4.74). + This manual is for Org-mode (version 4.75). Copyright (C) 2004, 2005, 2006, 2007 Free Software Foundation @@ -27,7 +27,7 @@ File: org, Node: Top, Next: Introduction, Prev: (dir), Up: (dir) Org Mode Manual *************** -This manual is for Org-mode (version 4.74). +This manual is for Org-mode (version 4.75). Copyright (C) 2004, 2005, 2006, 2007 Free Software Foundation @@ -145,13 +145,18 @@ Timestamps * Time stamps:: Assigning a time to a tree entry * Creating timestamps:: Commands which insert timestamps -* Custom time format:: If you cannot work with the ISO format -* Repeating items:: Deadlines that come back again and again +* Deadlines and scheduling:: Planning your work * Progress logging:: Documenting when what work was done. Creating timestamps * The date/time prompt:: How org-mode helps you entering date and time +* Custom time format:: Making dates look differently + +Deadlines and Scheduling + +* Inserting deadline/schedule:: +* Repeated tasks:: Progress Logging @@ -1927,10 +1932,12 @@ insert it into an org-mode file, and to follow the link. link, or one of the link type prefixes mentioned in the examples above. All links stored during the current session are part of the history for this prompt, so you can access them with and - , or with completion(1). The link will be inserted into the - buffer, along with a descriptive text. If some text was selected - when this command is called, the selected text becomes the default - description. + . Completion, on the other hand, will help you to insert + valid link prefixes like `http:' or `ftp:', including the prefixes + defined through link abbreviations (*note Link abbreviations::). + The link will be inserted into the buffer(1), along with a + descriptive text. If some text was selected when this command is + called, the selected text becomes the default description. Note that you don't have to use this command to insert a link. Links in Org-mode are plain text, and you can type or paste them straight into the buffer. By using this command, the links are @@ -2539,6 +2546,14 @@ agenda (*note Weekly/Daily agenda::). timestamps::). Furthermore, these keys are also used by CUA-mode (*note Conflicts::). + You can change the range of allowed priorities by setting the +variables `org-highest-priority', `org-lowest-priority', and +`org-default-priority'. For an individual buffer, you may set these +values (highest, lowest, default) like this (please make sure that the +highest priority is earlier in the alphabet than the lowest priority): + + #+PRIORITIES: A C B +  File: org, Node: Breaking down tasks, Next: Checkboxes, Prev: Priorities, Up: TODO items @@ -2636,8 +2651,7 @@ planning. * Time stamps:: Assigning a time to a tree entry * Creating timestamps:: Commands which insert timestamps -* Custom time format:: If you cannot work with the ISO format -* Repeating items:: Deadlines that come back again and again +* Deadlines and scheduling:: Planning your work * Progress logging:: Documenting when what work was done.  @@ -2649,7 +2663,7 @@ File: org, Node: Time stamps, Next: Creating timestamps, Prev: Timestamps, U A time stamp is a specification of a date (possibly with time) in a special format, either `<2003-09-16 Tue>' or `<2003-09-16 Tue 09:39>'(1). A time stamp can appear anywhere in the headline or body -of an org-tree entry. Its presence allows entries to be shown on +of an org-tree entry. Its presence causes entries to be shown on specific dates in the agenda (*note Weekly/Daily agenda::). We distinguish: @@ -2663,71 +2677,46 @@ PLAIN TIME STAMP * Meet Peter at the movies <2006-11-01 Wed 19:15> -INACTIVE TIME STAMP - Just like a plain time stamp, but with square brackets instead of - angular ones. These time stamps are inactive in the sense that - they do _not_ trigger an entry to show up in the agenda. +TIME STAMP WITH REPEATER INTERVAL + A time stamp may contain a _repeater interval_, indicating that it + applies not only on the given date, but again and again after a + certain interval of N days (d), weeks (w), months(m), or years(y). + The following will show up in the agenda every Wednesday: - * Gillian comes late for the fifth time [2006-11-01 Wed] + * Pick up Sam at school <2007-05-16 Wed 12:30 +1w> + +DIARY-STYLE SEXP ENTRIES + For more complex date specifications, Org-mode supports using the + special sexp diary entries implemented in the Emacs calendar/diary + package. For example + + * The nerd meeting on every 2nd Thursday of the month + <%%(diary-float t 4 2)> -TIME STAMP RANGE - Two time stamps connected by `--' denote a time range. The - headline will be shown on the first and last day of the range, and - on any dates that are displayed and fall in the range. Here is an +TIME/DATE RANGE + Two time stamps connected by `--' denote a range. The headline + will be shown on the first and last day of the range, and on any + dates that are displayed and fall in the range. Here is an example: ** Meeting in Amsterdam <2004-08-23 Mon>--<2004-08-26 Thu> -TIME STAMP WITH SCHEDULED KEYWORD - If a time stamp is preceded by the word `SCHEDULED:', it means you - are planning to start working on that task on the given date. So - this is not about recording an event, but about planning your - work. The headline will be listed under the given date(2). In - addition, a reminder that the scheduled date has passed will be - present in the compilation for _today_, until the entry is marked - DONE. I.e., the task will automatically be forwarded until - completed. - - *** TODO Call Trillian for a date on New Years Eve. - SCHEDULED: <2004-12-25 Sat> - -TIME STAMP WITH DEADLINE KEYWORD - If a time stamp is preceded by the word `DEADLINE:', the task - (most likely a TODO item) is supposed to be finished on that date, - and it will be listed then. In addition, the compilation for - _today_ will carry a warning about the approaching or missed - deadline, starting `org-deadline-warning-days' before the due - date, and continuing until the entry is marked DONE. An example: - - *** TODO write article about the Earth for the Guide - The editor in charge is [[bbdb:Ford Prefect]] - DEADLINE: <2004-02-29 Sun> +INACTIVE TIME STAMP + Just like a plain time stamp, but with square brackets instead of + angular ones. These time stamps are inactive in the sense that + they do _not_ trigger an entry to show up in the agenda. -TIME STAMP WITH CLOSED KEYWORD - When `org-log-done' is non-nil, Org-mode will automatically insert - a special time stamp each time a TODO entry is marked done (*note - Progress logging::). This time stamp is enclosed in square - brackets instead of angular brackets. + * Gillian comes late for the fifth time [2006-11-01 Wed] -TIME RANGE WITH CLOCK KEYWORD - When using the clock to time the work that is being done on - specific items, time ranges preceded by the CLOCK keyword are - inserted automatically into the file. The time stamps are - enclosed in square brackets instead of angular brackets. *Note - Clocking work time::. ---------- Footnotes ---------- (1) This is the standard ISO date/time format. If you cannot get used to these, see *Note Custom time format:: - (2) It will still be listed on that date after it has been marked -DONE. If you don't like this, set the variable -`org-agenda-skip-scheduled-if-done'. -  -File: org, Node: Creating timestamps, Next: Custom time format, Prev: Time stamps, Up: Timestamps +File: org, Node: Creating timestamps, Next: Deadlines and scheduling, Prev: Time stamps, Up: Timestamps 6.2 Creating timestamps ======================= @@ -2763,22 +2752,6 @@ format. Access the agenda for the date given by the time stamp or -range at point (*note Weekly/Daily agenda::). -`C-c C-d' - Insert `DEADLINE' keyword along with a stamp. The insertion will - happen in the line directly following the headline. - -`C-c C-w' - Create a sparse tree with all deadlines that are either past-due, - or which will become due within `org-deadline-warning-days'. With - `C-u' prefix, show all deadlines in the file. With a numeric - prefix, check that many days. For example, `C-1 C-c C-w' shows - all deadlines due tomorrow. - -`C-c C-s' - Insert `SCHEDULED' keyword along with a stamp. The insertion will - happen in the line directly following the headline. Any CLOSED - timestamp will be removed. - `S-' `S-' Change date at cursor by one day. These key bindings conflict with @@ -2800,9 +2773,10 @@ format. * Menu: * The date/time prompt:: How org-mode helps you entering date and time +* Custom time format:: Making dates look differently  -File: org, Node: The date/time prompt, Prev: Creating timestamps, Up: Creating timestamps +File: org, Node: The date/time prompt, Next: Custom time format, Prev: Creating timestamps, Up: Creating timestamps 6.2.1 The date/time prompt -------------------------- @@ -2870,10 +2844,10 @@ the calendar fully from the minibuffer: `org-popup-calendar-for-date-prompt'.  -File: org, Node: Custom time format, Next: Repeating items, Prev: Creating timestamps, Up: Timestamps +File: org, Node: Custom time format, Prev: The date/time prompt, Up: Creating timestamps -6.3 Custom time format -====================== +6.2.2 Custom time format +------------------------ Org-mode uses the standard ISO notation for dates and times as it is defined in ISO 8601. If you cannot get used to this and require another @@ -2906,48 +2880,114 @@ consequences: the custom format is shorter, things do work as expected.  -File: org, Node: Repeating items, Next: Progress logging, Prev: Custom time format, Up: Timestamps +File: org, Node: Deadlines and scheduling, Next: Progress logging, Prev: Creating timestamps, Up: Timestamps -6.4 Repeating items -=================== +6.3 Deadlines and Scheduling +============================ -Org-mode integrates with the Emacs calendar and diary to display cyclic -appointments, anniversaries and other special entries in the agenda -(*note Weekly/Daily agenda::). However, it can be useful to have -certain deadlines and scheduling items to auto-repeat. The advantage of -a deadline or scheduled item is that the they produce warnings ahead of -time and automatically forward themselves in the agenda until they are -done. The abstract difference is therefore between cyclic appointments -and cyclic action items. For appointments you should use the diary, -for actions you can uses an org-mode deadline or scheduling time stamp -together with a REPEAT cookie. For example: +A time stamp may be preceded by special keywords to facilitate planning +of work: - * TODO Replace batteries in smoke detector REPEAT(+18m) - SCHEDULED: <2007-01-01 Mon> +DEADLINE + The task (most likely a TODO item) is supposed to be finished on + that date, and it will be listed then. In addition, the + compilation for _today_ will carry a warning about the approaching + or missed deadline, starting `org-deadline-warning-days' before + the due date, and continuing until the entry is marked DONE. An + example: - * TODO Get dentist appointment REPEAT(+6m) - SCHEDULED: <2006-12-19 Tue> + *** TODO write article about the Earth for the Guide + The editor in charge is [[bbdb:Ford Prefect]] + DEADLINE: <2004-02-29 Sun> - * TODO Tax report to IRS REPEAT(+1y) - DEADLINE: <2007-04-01 Sun> +SCHEDULED + You are planning to start working on that task on the given date. + The headline will be listed under the given date(1). In addition, + a reminder that the scheduled date has passed will be present in + the compilation for _today_, until the entry is marked DONE. + I.e., the task will automatically be forwarded until completed. - Each time you try to mark one of these entries DONE using `C-c C-t', -they will automatically switch back to the state TODO, and the -deadline/scheduling will be shifted accordingly. The time units -recognized by org-mode are year (y), month (m), week (w), and day (d). -Org-mode will also prompt you for a note and record the fact that you -have closed this item in a note under the headline. + *** TODO Call Trillian for a date on New Years Eve. + SCHEDULED: <2004-12-25 Sat> - One unusual property of these repeating items is that only one -instance of each exist at any given time. So if you look back or ahead -in the agenda, you will not find past and future instances, only the -current one will show up. Use a cyclic diary entry if you need all -past and future instances to be visible in the agenda. +* Menu: + +* Inserting deadline/schedule:: +* Repeated tasks:: + + ---------- Footnotes ---------- + + (1) It will still be listed on that date after it has been marked +DONE. If you don't like this, set the variable +`org-agenda-skip-scheduled-if-done'. + + +File: org, Node: Inserting deadline/schedule, Next: Repeated tasks, Prev: Deadlines and scheduling, Up: Deadlines and scheduling + +6.3.1 Inserting deadline/schedule +--------------------------------- + +The following commands allow to quickly insert a deadline or to schedule +an item: + +`C-c C-d' + Insert `DEADLINE' keyword along with a stamp. The insertion will + happen in the line directly following the headline. + +`C-c C-w' + Create a sparse tree with all deadlines that are either past-due, + or which will become due within `org-deadline-warning-days'. With + `C-u' prefix, show all deadlines in the file. With a numeric + prefix, check that many days. For example, `C-1 C-c C-w' shows + all deadlines due tomorrow. + +`C-c C-s' + Insert `SCHEDULED' keyword along with a stamp. The insertion will + happen in the line directly following the headline. Any CLOSED + timestamp will be removed.  -File: org, Node: Progress logging, Prev: Repeating items, Up: Timestamps +File: org, Node: Repeated tasks, Prev: Inserting deadline/schedule, Up: Deadlines and scheduling -6.5 Progress Logging +6.3.2 Repeated Tasks +-------------------- + +Some tasks need to be repeated again and again, and Org-mode therefore +allows to use a repeater in a DEADLINE or SCHEDULED time stamp, for +example: + ** TODO Pay the rent + DEADLINE: <2005-10-01 Sat +1m> + + Deadlines and scheduled items produce entries in the agenda when they +are over-due, so it is important to be able to mark such an entry as +completed once you have done so. When you mark a DEADLINE or a SCHEDULE +with the todo keyword DONE, it will no longer produce entries in the +agenda. The problem with this is, however, that then also the _next_ +instance of the repeated entry will not be active. Org-mode deals with +this in the following way: When you try to mark such an entry DONE +(using `C-c C-t'), it will shift the base date of the repeating time +stamp by the repeater interval, and immediately set the entry state +back to TODO. In the example above, setting the state to DONE would +actually switch the date like this: + + ** TODO Pay the rent + DEADLINE: <2005-11-01 Tue +1m> + + You will also be prompted for a note that will be put under the +DEADLINE line to keep a record that you actually acted on the previous +instance of this deadline. + + As a consequence of shifting the base date, this entry will no +longer be visible in the agenda when checking past dates, but all +future instances will be visible. + + You may have both scheduling and deadline information for a specific +task - just make sure that the repeater intervals on both are the same. + + +File: org, Node: Progress logging, Prev: Deadlines and scheduling, Up: Timestamps + +6.4 Progress Logging ==================== Org-mode can automatically record a time stamp when you mark a TODO item @@ -2965,7 +3005,7 @@ on an aspect of a project.  File: org, Node: Closing items, Next: Tracking TODO state changes, Prev: Progress logging, Up: Progress logging -6.5.1 Closing items +6.4.1 Closing items ------------------- If you want to keep track of _when_ a certain TODO item was finished, @@ -2994,7 +3034,7 @@ the timestamp, use(2)  File: org, Node: Tracking TODO state changes, Next: Clocking work time, Prev: Closing items, Up: Progress logging -6.5.2 Tracking TODO state changes +6.4.2 Tracking TODO state changes --------------------------------- When TODO keywords are used as workflow states (*note Workflow @@ -3016,7 +3056,7 @@ these into a separate file that starts with:  File: org, Node: Clocking work time, Prev: Tracking TODO state changes, Up: Progress logging -6.5.3 Clocking work time +6.4.3 Clocking work time ------------------------ Org-mode allows you to clock the time you spent on specific tasks in a @@ -3533,6 +3573,22 @@ date works in the agenda buffer, as well as the commands `S', `M', and to other calendars, respectively. `c' can be used to switch back and forth between calendar and agenda. + If you are using the diary only for sexp entries and holidays, it is +faster to not use the above setting, but instead to copy or even move +the entries into an Org-mode file. Org-mode evaluates diary-style sexp +entries, and does it faster because there is no overhead for first +creating the diary display. Note that the sexp entries must start at +the left margin, no white space is allowed before them. For example, +the following segment of an Org-mode file will be processed and entries +will be made in the agenda: + + * Birthdays and similar stuff + #+CATEGORY: Holiday + %%(org-calendar-holiday) ; special function for holiday names + #+CATEGORY: Ann + %%(diary-anniversary 14 5 1956) Artur Dent %d is years old + %%(diary-anniversary 2 10 1869) Mahatma Gandhi would be %d years old +  File: org, Node: Global TODO list, Next: Matching headline tags, Prev: Weekly/Daily agenda, Up: Built-in agenda views @@ -4681,13 +4737,25 @@ File: org, Node: Export commands, Next: Quoting HTML tags, Prev: HTML export, `C-c C-e H' Export to a temporary buffer, do not create a file. +`C-c C-e H' + Export the active region to a temporary buffer. With prefix arg, + do not produce file header and foot, but just the plain HTML + section for the region. This is good for cut-and-paste operations. + `C-c C-e v h' `C-c C-e v b' `C-c C-e v H' + +`C-c C-e v R' Export only the visible part of the document. +`M-x org-export-region-as-html' + Convert the region to HTML under the assumption that it was + org-mode syntax before. This is a global command that can be + invoked in any buffer. + In the exported version, the first 3 outline levels will become headlines, defining a general document structure. Additional levels will be exported as itemized lists. If you want that transition to @@ -5491,6 +5559,11 @@ file is visited again in a new Emacs session. entries before it. The corresponding variable is `org-archive-location'. +`#+PRIORITIES: highest lowest default' + This line sets the limits and the default for the priorities. All + three must be either letters A-Z or numbers 0-9. The highest + priority must have a lower ASCII number that the lowest priority. + `#+TBLFM:' This line contains the formulas for the table directly above the line. @@ -6284,6 +6357,9 @@ if I have forgotten someone, please accept my apologies and let me know. patched CSS formatting into the HTML exporter, and inspired the agenda. + * David Emery provided a patch for custom CSS support in exported + HTML agendas. + * Nic Ferrier contributed mailcap and XOXO support. * John Foerch figured out how to make incremental search show context @@ -6300,6 +6376,11 @@ if I have forgotten someone, please accept my apologies and let me know. * Shidai Liu ("Leo") asked for embedded LaTeX and tested it. He also provided frequent feedback and some patches. + * Jason F. McBrayer suggested agenda export to CSV format. + + * Dmitri Minaev sent a patch to set priority limits on a per-file + basis. + * Stefan Monnier provided a patch to keep the Emacs-Lisp compiler happy. @@ -6442,13 +6523,11 @@ Index * checkboxes: Checkboxes. (line 6) * children, subtree visibility state: Visibility cycling. (line 10) * clean outline view: Clean view. (line 6) -* CLOCK keyword: Time stamps. (line 71) -* CLOSED keyword: Time stamps. (line 65) * column formula: Column formulas. (line 6) * commands, in agenda buffer: Agenda commands. (line 6) * comment lines: Comment lines. (line 6) * completion, of dictionary words: Completion. (line 6) -* completion, of file names: Handling links. (line 41) +* completion, of file names: Handling links. (line 43) * completion, of link abbreviations: Completion. (line 6) * completion, of links: Handling links. (line 25) * completion, of option keywords <1>: Completion. (line 6) @@ -6478,13 +6557,14 @@ Index * cycling, visibility: Visibility cycling. (line 6) * daily agenda: Weekly/Daily agenda. (line 6) * date format, custom: Custom time format. (line 6) +* date range: Time stamps. (line 40) * date stamps <1>: Time stamps. (line 6) * date stamps: Timestamps. (line 6) * date, reading in minibuffer: The date/time prompt. (line 6) -* DEADLINE keyword: Time stamps. (line 53) +* DEADLINE keyword: Deadlines and scheduling. + (line 10) * deadlines: Time stamps. (line 6) -* deadlines, repeating: Repeating items. (line 6) * debugging, of table formulas: Editing and debugging formulas. (line 97) * demotion, of subtrees: Structure editing. (line 6) @@ -6504,7 +6584,7 @@ Index * elisp links: External links. (line 6) * emphasized text: Export options. (line 25) * enhancing text: Enhancing text. (line 6) -* evaluate time range: Creating timestamps. (line 64) +* evaluate time range: Creating timestamps. (line 48) * even, STARTUP keyword: In-buffer settings. (line 44) * exporting: Exporting. (line 6) * exporting agenda views <1>: Exporting Agenda Views. @@ -6522,7 +6602,7 @@ Index * field references: References. (line 15) * file links: External links. (line 6) * file links, searching: Search options. (line 6) -* file name completion: Handling links. (line 41) +* file name completion: Handling links. (line 43) * files for agenda: Agenda files. (line 6) * files, adding to agenda list: Agenda files. (line 12) * files, selecting for publishing: Selecting files. (line 6) @@ -6530,7 +6610,7 @@ Index * fixed-width sections: Export options. (line 25) * folded, subtree visibility state: Visibility cycling. (line 10) * folding, sparse trees: Sparse trees. (line 6) -* following links: Handling links. (line 56) +* following links: Handling links. (line 58) * format specifier: Formula syntax for Calc. (line 14) * format, of links: Link format. (line 6) @@ -6551,7 +6631,7 @@ Index * GNUS links: External links. (line 6) * hand-formatted lists: Enhancing text. (line 11) * headline levels: Export options. (line 25) -* headline levels, for exporting <1>: Export commands. (line 22) +* headline levels, for exporting <1>: Export commands. (line 34) * headline levels, for exporting: ASCII export. (line 18) * headline navigation: Motion. (line 6) * headline tagging: Tags. (line 6) @@ -6570,7 +6650,7 @@ Index * iCalendar export: iCalendar export. (line 6) * images, inline in HTML: Images. (line 6) * in-buffer settings: In-buffer settings. (line 6) -* inactive timestamp: Time stamps. (line 24) +* inactive timestamp: Time stamps. (line 49) * index, of published pages: Project page index. (line 6) * Info links: External links. (line 6) * inheritance, of tags: Tag inheritance. (line 6) @@ -6600,13 +6680,13 @@ Index * link completion: Handling links. (line 25) * link format: Link format. (line 6) * links, external: External links. (line 6) -* links, finding next/previous: Handling links. (line 89) +* links, finding next/previous: Handling links. (line 91) * links, handling: Handling links. (line 6) * links, in HTML export: Links. (line 6) * links, internal: Internal links. (line 6) * links, publishing: Publishing links. (line 6) * links, radio targets: Radio targets. (line 6) -* links, returning to: Handling links. (line 83) +* links, returning to: Handling links. (line 85) * Lisp forms, as table formulas: Formula syntax for Lisp. (line 6) * lists, hand-formatted: Enhancing text. (line 11) @@ -6619,7 +6699,7 @@ Index * lognotestate, STARTUP keyword: In-buffer settings. (line 33) * logrepeat, STARTUP keyword: In-buffer settings. (line 33) * maintainer: Feedback. (line 6) -* mark ring: Handling links. (line 79) +* mark ring: Handling links. (line 81) * marking characters, tables: Advanced features. (line 40) * matching, of tags: Matching headline tags. (line 6) @@ -6698,9 +6778,9 @@ Index * remote editing, undo: Agenda commands. (line 107) * richer text: Enhancing text. (line 6) * RMAIL links: External links. (line 6) -* SCHEDULED keyword: Time stamps. (line 40) +* SCHEDULED keyword: Deadlines and scheduling. + (line 22) * scheduling: Time stamps. (line 6) -* scheduling, repeating: Repeating items. (line 6) * Scripts, for agenda processing: Extracting Agenda Information for other programs. (line 6) * search option in file links: Search options. (line 6) @@ -6716,7 +6796,8 @@ Index * showstars, STARTUP keyword: In-buffer settings. (line 44) * sorting, of agenda items: Sorting of agenda items. (line 6) -* sparse tree, for deadlines: Creating timestamps. (line 39) +* sparse tree, for deadlines: Inserting deadline/schedule. + (line 11) * sparse tree, for TODO: TODO basics. (line 26) * sparse tree, tag based: Tags. (line 6) * sparse trees: Sparse trees. (line 6) @@ -6779,12 +6860,12 @@ Index (line 6) * time-sorted view: Timeline. (line 6) * timeline, single file: Timeline. (line 6) -* timerange: Time stamps. (line 31) +* timerange: Time stamps. (line 40) * timestamp: Time stamps. (line 14) -* timestamp, inactive: Time stamps. (line 24) +* timestamp, inactive: Time stamps. (line 49) +* timestamp, with repeater interval: Time stamps. (line 24) * timestamps, creating: Creating timestamps. (line 6) * TODO items: TODO items. (line 6) -* TODO items, repeating: Repeating items. (line 6) * TODO keyword matching: Global TODO list. (line 17) * TODO keyword matching, with tags search: Tag searches. (line 40) * todo keyword sets: Multiple sets in one file. @@ -6876,8 +6957,8 @@ Key Index * C-a a L: Timeline. (line 10) * C-c !: Creating timestamps. (line 19) * C-c #: Checkboxes. (line 56) -* C-c %: Handling links. (line 79) -* C-c &: Handling links. (line 83) +* C-c %: Handling links. (line 81) +* C-c &: Handling links. (line 85) * C-c ': Editing and debugging formulas. (line 36) * C-c *: Updating the table. (line 13) @@ -6937,7 +7018,8 @@ Key Index (line 54) * C-c C-c: Plain lists. (line 78) * C-c C-d <1>: Agenda commands. (line 156) -* C-c C-d: Creating timestamps. (line 35) +* C-c C-d: Inserting deadline/schedule. + (line 9) * C-c C-e: Exporting. (line 19) * C-c C-e a: ASCII export. (line 9) * C-c C-e b: Export commands. (line 7) @@ -6946,20 +7028,22 @@ Key Index * C-c C-e h: Export commands. (line 6) * C-c C-e I: iCalendar export. (line 16) * C-c C-e i: iCalendar export. (line 14) +* C-c C-e R: Export commands. (line 13) * C-c C-e t: Export options. (line 13) * C-c C-e v <1>: XOXO export. (line 11) * C-c C-e v: Sparse trees. (line 41) * C-c C-e v a: ASCII export. (line 13) -* C-c C-e v b: Export commands. (line 13) -* C-c C-e v H: Export commands. (line 13) -* C-c C-e v h: Export commands. (line 13) +* C-c C-e v b: Export commands. (line 18) +* C-c C-e v H: Export commands. (line 18) +* C-c C-e v h: Export commands. (line 18) +* C-c C-e v R: Export commands. (line 18) * C-c C-e x: XOXO export. (line 10) * C-c C-f: Motion. (line 12) * C-c C-j: Motion. (line 21) * C-c C-l: Handling links. (line 25) * C-c C-n: Motion. (line 8) * C-c C-o <1>: Creating timestamps. (line 31) -* C-c C-o: Handling links. (line 56) +* C-c C-o: Handling links. (line 58) * C-c C-p: Motion. (line 9) * C-c C-q <1>: Editing and debugging formulas. (line 50) @@ -6969,12 +7053,14 @@ Key Index (line 53) * C-c C-r: Visibility cycling. (line 34) * C-c C-s <1>: Agenda commands. (line 153) -* C-c C-s: Creating timestamps. (line 46) +* C-c C-s: Inserting deadline/schedule. + (line 18) * C-c C-t <1>: Clocking work time. (line 27) * C-c C-t: TODO basics. (line 13) * C-c C-u: Motion. (line 18) * C-c C-v: TODO basics. (line 26) -* C-c C-w: Creating timestamps. (line 39) +* C-c C-w: Inserting deadline/schedule. + (line 11) * C-c C-x b: Visibility cycling. (line 41) * C-c C-x C-a: ARCHIVE tag. (line 28) * C-c C-x C-b: Checkboxes. (line 38) @@ -6984,9 +7070,9 @@ Key Index * C-c C-x C-k: Structure editing. (line 39) * C-c C-x C-l: Processing LaTeX fragments. (line 9) -* C-c C-x C-n: Handling links. (line 89) +* C-c C-x C-n: Handling links. (line 91) * C-c C-x C-o: Clocking work time. (line 14) -* C-c C-x C-p: Handling links. (line 89) +* C-c C-x C-p: Handling links. (line 91) * C-c C-x C-r: Clocking work time. (line 43) * C-c C-x C-s: Moving subtrees. (line 10) * C-c C-x C-t: Custom time format. (line 12) @@ -7002,7 +7088,7 @@ Key Index (line 111) * C-c C-x M-w: Structure editing. (line 43) * C-c C-y <1>: Clocking work time. (line 22) -* C-c C-y: Creating timestamps. (line 64) +* C-c C-y: Creating timestamps. (line 48) * C-c l: Handling links. (line 9) * C-c { <1>: CDLaTeX mode. (line 21) * C-c {: Editing and debugging formulas. @@ -7024,7 +7110,7 @@ Key Index (line 14) * C-u C-c =: Field formulas. (line 24) * C-u C-c C-c: Updating the table. (line 19) -* C-u C-c C-l: Handling links. (line 41) +* C-u C-c C-l: Handling links. (line 43) * C-u C-c C-x C-a: ARCHIVE tag. (line 31) * C-u C-c C-x C-s: Moving subtrees. (line 12) * C-u C-c C-x C-u <1>: Dynamic blocks. (line 22) @@ -7098,11 +7184,11 @@ Key Index * mouse-1 <1>: Agenda commands. (line 33) * mouse-1 <2>: The date/time prompt. (line 36) -* mouse-1: Handling links. (line 70) +* mouse-1: Handling links. (line 72) * mouse-2 <1>: Agenda commands. (line 33) -* mouse-2: Handling links. (line 70) +* mouse-2: Handling links. (line 72) * mouse-3 <1>: Agenda commands. (line 28) -* mouse-3: Handling links. (line 75) +* mouse-3: Handling links. (line 77) * n: Agenda commands. (line 19) * O: Agenda commands. (line 180) * o: Agenda commands. (line 65) @@ -7116,7 +7202,7 @@ Key Index * S- <1>: Agenda commands. (line 149) * S- <2>: The date/time prompt. (line 45) -* S- <3>: Creating timestamps. (line 56) +* S- <3>: Creating timestamps. (line 40) * S- <4>: Priorities. (line 23) * S- <5>: Editing and debugging formulas. (line 67) @@ -7124,7 +7210,7 @@ Key Index * S- <1>: Agenda commands. (line 167) * S- <2>: The date/time prompt. (line 42) -* S- <3>: Creating timestamps. (line 51) +* S- <3>: Creating timestamps. (line 35) * S- <4>: Multiple sets in one file. (line 29) * S- <5>: TODO basics. (line 20) @@ -7135,7 +7221,7 @@ Key Index * S- <1>: Agenda commands. (line 159) * S- <2>: The date/time prompt. (line 39) -* S- <3>: Creating timestamps. (line 51) +* S- <3>: Creating timestamps. (line 35) * S- <4>: Multiple sets in one file. (line 29) * S- <5>: TODO basics. (line 20) @@ -7147,7 +7233,7 @@ Key Index * S- <1>: Agenda commands. (line 143) * S- <2>: The date/time prompt. (line 48) -* S- <3>: Creating timestamps. (line 56) +* S- <3>: Creating timestamps. (line 40) * S- <4>: Priorities. (line 23) * S- <5>: Editing and debugging formulas. (line 67) @@ -7162,190 +7248,192 @@ Key Index  Tag Table: Node: Top970 -Node: Introduction11580 -Node: Summary11995 -Node: Installation15004 -Node: Activation16382 -Node: Feedback17631 -Node: Document structure19707 -Node: Outlines20481 -Node: Headlines21141 -Ref: Headlines-Footnote-122149 -Node: Visibility cycling22248 -Ref: Visibility cycling-Footnote-124458 -Ref: Visibility cycling-Footnote-224516 -Ref: Visibility cycling-Footnote-324566 -Node: Motion24836 -Node: Structure editing25790 -Node: Archiving28616 -Node: ARCHIVE tag29174 -Node: Moving subtrees30967 -Node: Sparse trees32278 -Ref: Sparse trees-Footnote-134410 -Ref: Sparse trees-Footnote-234592 -Node: Plain lists34707 -Ref: Plain lists-Footnote-138476 -Ref: Plain lists-Footnote-238834 -Node: Tables39018 -Node: Built-in table editor39532 -Node: Narrow columns46771 -Ref: Narrow columns-Footnote-148704 -Node: orgtbl-mode48750 -Node: The spreadsheet49554 -Node: References50641 -Ref: References-Footnote-154770 -Node: Formula syntax for Calc55059 -Node: Formula syntax for Lisp57516 -Node: Field formulas58785 -Node: Column formulas60093 -Node: Editing and debugging formulas61692 -Node: Updating the table65845 -Node: Advanced features66880 -Node: Hyperlinks71405 -Node: Link format72178 -Node: Internal links73471 -Ref: Internal links-Footnote-175396 -Node: Radio targets75528 -Node: External links76219 -Node: Handling links78623 -Ref: Handling links-Footnote-183733 -Ref: Handling links-Footnote-283970 -Node: Link abbreviations84044 -Node: Search options85723 -Ref: Search options-Footnote-187503 -Node: Custom searches87584 -Node: Remember88632 -Node: Setting up remember89619 -Node: Remember templates90201 -Ref: Remember templates-Footnote-193493 -Node: Storing notes93591 -Node: TODO items95478 -Node: TODO basics96461 -Node: TODO extensions98158 -Node: Workflow states98977 -Ref: Workflow states-Footnote-1100152 -Node: TODO types100245 -Ref: TODO types-Footnote-1101828 -Node: Multiple sets in one file101910 -Node: Per file keywords103521 -Ref: Per file keywords-Footnote-1104810 -Node: Priorities105011 -Node: Breaking down tasks106257 -Ref: Breaking down tasks-Footnote-1106777 -Node: Checkboxes106873 -Node: Timestamps109628 -Node: Time stamps110162 -Ref: Time stamps-Footnote-1113656 -Ref: Time stamps-Footnote-2113772 -Node: Creating timestamps113927 -Node: The date/time prompt116585 -Ref: The date/time prompt-Footnote-1118546 -Node: Custom time format118652 -Node: Repeating items120210 -Node: Progress logging122020 -Node: Closing items122666 -Ref: Closing items-Footnote-1123600 -Ref: Closing items-Footnote-2123669 -Node: Tracking TODO state changes123742 -Node: Clocking work time124598 -Ref: Clocking work time-Footnote-1128244 -Ref: Clocking work time-Footnote-2128322 -Node: Tags128448 -Node: Tag inheritance129210 -Node: Setting tags130147 -Ref: Setting tags-Footnote-1134670 -Ref: Setting tags-Footnote-2134782 -Node: Tag searches134865 -Node: Agenda views137576 -Node: Agenda files139521 -Ref: Agenda files-Footnote-1140487 -Ref: Agenda files-Footnote-2140636 -Node: Agenda dispatcher140829 -Node: Built-in agenda views142520 -Node: Weekly/Daily agenda143098 -Node: Global TODO list145227 -Node: Matching headline tags147499 -Node: Timeline148570 -Node: Stuck projects149236 -Node: Presentation and sorting151087 -Node: Categories151878 -Node: Time-of-day specifications152542 -Node: Sorting of agenda items154513 -Node: Agenda commands155795 -Node: Custom agenda views162949 -Node: Storing searches163668 -Node: Block agenda165580 -Node: Setting Options166810 -Node: Exporting Agenda Views169549 -Ref: Exporting Agenda Views-Footnote-1173840 -Ref: Exporting Agenda Views-Footnote-2173897 -Node: Extracting Agenda Information for other programs174083 -Node: Embedded LaTeX178209 -Ref: Embedded LaTeX-Footnote-1179301 -Node: Math symbols179491 -Node: Subscripts and Superscripts180256 -Node: LaTeX fragments181100 -Ref: LaTeX fragments-Footnote-1183334 -Node: Processing LaTeX fragments183596 -Node: CDLaTeX mode184542 -Ref: CDLaTeX mode-Footnote-1187026 -Node: Exporting187174 -Node: ASCII export188488 -Node: HTML export189778 -Node: Export commands190397 -Node: Quoting HTML tags191208 -Node: Links191838 -Node: Images192535 -Ref: Images-Footnote-1193406 -Node: CSS support193467 -Ref: CSS support-Footnote-1194786 -Node: XOXO export194899 -Node: iCalendar export195338 -Node: Text interpretation196557 -Node: Comment lines197099 -Node: Initial text197494 -Node: Enhancing text199168 -Ref: Enhancing text-Footnote-1201030 -Node: Export options201120 -Node: Publishing203013 -Ref: Publishing-Footnote-1203809 -Node: Configuration204005 -Node: Project alist204723 -Node: Sources and destinations205789 -Node: Selecting files206519 -Node: Publishing action207267 -Node: Publishing options208500 -Node: Publishing links210652 -Node: Project page index212165 -Node: Sample configuration212943 -Node: Simple example213435 -Node: Complex example214108 -Node: Triggering publication216184 -Node: Miscellaneous216869 -Node: Completion217503 -Node: Customization218974 -Node: In-buffer settings219557 -Node: The very busy C-c C-c key224183 -Node: Clean view225827 -Node: TTY keys228404 -Node: Interaction230014 -Node: Cooperation230411 -Node: Conflicts233153 -Node: Bugs234716 -Node: Extensions and Hacking236212 -Node: Extensions236808 -Node: Tables in arbitrary syntax238755 -Node: Radio tables239832 -Node: A LaTeX example242335 -Ref: A LaTeX example-Footnote-1245981 -Ref: A LaTeX example-Footnote-2246129 -Node: Translator functions246564 -Ref: Translator functions-Footnote-1249673 -Node: Dynamic blocks249761 -Node: Special agenda views251733 -Ref: Special agenda views-Footnote-1254012 -Node: History and Acknowledgments254272 -Node: Index260132 -Node: Key Index291936 +Node: Introduction11627 +Node: Summary12042 +Node: Installation15051 +Node: Activation16429 +Node: Feedback17678 +Node: Document structure19754 +Node: Outlines20528 +Node: Headlines21188 +Ref: Headlines-Footnote-122196 +Node: Visibility cycling22295 +Ref: Visibility cycling-Footnote-124505 +Ref: Visibility cycling-Footnote-224563 +Ref: Visibility cycling-Footnote-324613 +Node: Motion24883 +Node: Structure editing25837 +Node: Archiving28663 +Node: ARCHIVE tag29221 +Node: Moving subtrees31014 +Node: Sparse trees32325 +Ref: Sparse trees-Footnote-134457 +Ref: Sparse trees-Footnote-234639 +Node: Plain lists34754 +Ref: Plain lists-Footnote-138523 +Ref: Plain lists-Footnote-238881 +Node: Tables39065 +Node: Built-in table editor39579 +Node: Narrow columns46818 +Ref: Narrow columns-Footnote-148751 +Node: orgtbl-mode48797 +Node: The spreadsheet49601 +Node: References50688 +Ref: References-Footnote-154817 +Node: Formula syntax for Calc55106 +Node: Formula syntax for Lisp57563 +Node: Field formulas58832 +Node: Column formulas60140 +Node: Editing and debugging formulas61739 +Node: Updating the table65892 +Node: Advanced features66927 +Node: Hyperlinks71452 +Node: Link format72225 +Node: Internal links73518 +Ref: Internal links-Footnote-175443 +Node: Radio targets75575 +Node: External links76266 +Node: Handling links78670 +Ref: Handling links-Footnote-183957 +Ref: Handling links-Footnote-284194 +Node: Link abbreviations84268 +Node: Search options85947 +Ref: Search options-Footnote-187727 +Node: Custom searches87808 +Node: Remember88856 +Node: Setting up remember89843 +Node: Remember templates90425 +Ref: Remember templates-Footnote-193717 +Node: Storing notes93815 +Node: TODO items95702 +Node: TODO basics96685 +Node: TODO extensions98382 +Node: Workflow states99201 +Ref: Workflow states-Footnote-1100376 +Node: TODO types100469 +Ref: TODO types-Footnote-1102052 +Node: Multiple sets in one file102134 +Node: Per file keywords103745 +Ref: Per file keywords-Footnote-1105034 +Node: Priorities105235 +Node: Breaking down tasks106845 +Ref: Breaking down tasks-Footnote-1107365 +Node: Checkboxes107461 +Node: Timestamps110216 +Node: Time stamps110657 +Ref: Time stamps-Footnote-1112962 +Node: Creating timestamps113078 +Node: The date/time prompt115152 +Ref: The date/time prompt-Footnote-1117140 +Node: Custom time format117246 +Node: Deadlines and scheduling118794 +Ref: Deadlines and scheduling-Footnote-1120144 +Node: Inserting deadline/schedule120299 +Node: Repeated tasks121237 +Node: Progress logging122876 +Node: Closing items123531 +Ref: Closing items-Footnote-1124465 +Ref: Closing items-Footnote-2124534 +Node: Tracking TODO state changes124607 +Node: Clocking work time125463 +Ref: Clocking work time-Footnote-1129109 +Ref: Clocking work time-Footnote-2129187 +Node: Tags129313 +Node: Tag inheritance130075 +Node: Setting tags131012 +Ref: Setting tags-Footnote-1135535 +Ref: Setting tags-Footnote-2135647 +Node: Tag searches135730 +Node: Agenda views138441 +Node: Agenda files140386 +Ref: Agenda files-Footnote-1141352 +Ref: Agenda files-Footnote-2141501 +Node: Agenda dispatcher141694 +Node: Built-in agenda views143385 +Node: Weekly/Daily agenda143963 +Node: Global TODO list146904 +Node: Matching headline tags149176 +Node: Timeline150247 +Node: Stuck projects150913 +Node: Presentation and sorting152764 +Node: Categories153555 +Node: Time-of-day specifications154219 +Node: Sorting of agenda items156190 +Node: Agenda commands157472 +Node: Custom agenda views164626 +Node: Storing searches165345 +Node: Block agenda167257 +Node: Setting Options168487 +Node: Exporting Agenda Views171226 +Ref: Exporting Agenda Views-Footnote-1175517 +Ref: Exporting Agenda Views-Footnote-2175574 +Node: Extracting Agenda Information for other programs175760 +Node: Embedded LaTeX179886 +Ref: Embedded LaTeX-Footnote-1180978 +Node: Math symbols181168 +Node: Subscripts and Superscripts181933 +Node: LaTeX fragments182777 +Ref: LaTeX fragments-Footnote-1185011 +Node: Processing LaTeX fragments185273 +Node: CDLaTeX mode186219 +Ref: CDLaTeX mode-Footnote-1188703 +Node: Exporting188851 +Node: ASCII export190165 +Node: HTML export191455 +Node: Export commands192074 +Node: Quoting HTML tags193318 +Node: Links193948 +Node: Images194645 +Ref: Images-Footnote-1195516 +Node: CSS support195577 +Ref: CSS support-Footnote-1196896 +Node: XOXO export197009 +Node: iCalendar export197448 +Node: Text interpretation198667 +Node: Comment lines199209 +Node: Initial text199604 +Node: Enhancing text201278 +Ref: Enhancing text-Footnote-1203140 +Node: Export options203230 +Node: Publishing205123 +Ref: Publishing-Footnote-1205919 +Node: Configuration206115 +Node: Project alist206833 +Node: Sources and destinations207899 +Node: Selecting files208629 +Node: Publishing action209377 +Node: Publishing options210610 +Node: Publishing links212762 +Node: Project page index214275 +Node: Sample configuration215053 +Node: Simple example215545 +Node: Complex example216218 +Node: Triggering publication218294 +Node: Miscellaneous218979 +Node: Completion219613 +Node: Customization221084 +Node: In-buffer settings221667 +Node: The very busy C-c C-c key226543 +Node: Clean view228187 +Node: TTY keys230764 +Node: Interaction232374 +Node: Cooperation232771 +Node: Conflicts235513 +Node: Bugs237076 +Node: Extensions and Hacking238572 +Node: Extensions239168 +Node: Tables in arbitrary syntax241115 +Node: Radio tables242192 +Node: A LaTeX example244695 +Ref: A LaTeX example-Footnote-1248341 +Ref: A LaTeX example-Footnote-2248489 +Node: Translator functions248924 +Ref: Translator functions-Footnote-1252033 +Node: Dynamic blocks252121 +Node: Special agenda views254093 +Ref: Special agenda views-Footnote-1256372 +Node: History and Acknowledgments256632 +Node: Index262726 +Node: Key Index294515  End Tag Table diff --git a/org-install.el b/org-install.el index 1489a3f5a..31b626cd3 100644 --- a/org-install.el +++ b/org-install.el @@ -22,6 +22,7 @@ (autoload 'org-export-icalendar-combine-agenda-files "org" "Export all files in `org-agenda-files' to a single combined iCalendar file." t) (autoload 'org-batch-agenda "org") +(autoload 'org-batch-agenda-csv "org") (autoload 'org-store-agenda-views "org" "Store agenda views to files" t) (autoload 'org-batch-store-agenda-views "org") diff --git a/org.el b/org.el index 2005e3378..9cce6e9c2 100644 --- a/org.el +++ b/org.el @@ -5,7 +5,7 @@ ;; Author: Carsten Dominik ;; Keywords: outlines, hypermedia, calendar, wp ;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/ -;; Version: 4.74 +;; Version: 4.75 ;; ;; This file is part of GNU Emacs. ;; @@ -83,7 +83,7 @@ ;;; Version -(defconst org-version "4.74" +(defconst org-version "4.75" "The version number of the file org.el.") (defun org-version () (interactive) @@ -273,7 +273,9 @@ An entry can be toggled between QUOTE and normal with :group 'org-keywords :type 'string) -(defvar org-repeat-re "\\\n]*\\)\\(\\+[0-9]+[dwmy]\\)") "Regular expression for specifying repeated events. After a match, group 1 contains the repeat expression.") @@ -404,6 +406,7 @@ nil Never white Only in completely white lines whitestart Only at the beginning of lines, before the first non-white char. t Everywhere except in headlines +exc-hl-bol Everywhere except at the start of a headline If TAB is used in a place where it does not emulate TAB, the current subtree visibility is cycled." :group 'org-cycle @@ -411,6 +414,7 @@ visibility is cycled." (const :tag "Only in completely white lines" white) (const :tag "Before first char in a line" whitestart) (const :tag "Everywhere except in headlines" t) + (const :tag "Everywhere except at bol in headlines" exc-hl-bol) )) (defcustom org-cycle-separator-lines 2 @@ -904,7 +908,7 @@ Automatically means, when TAB or RET or C-c C-c are pressed in the line." :group 'org) (defvar org-link-abbrev-alist-local nil - "buffer-local version of `org-link-abbrev-alist', which see. + "Buffer-local version of `org-link-abbrev-alist', which see. The value of this is taken from the #+LINK lines.") (make-variable-buffer-local 'org-link-abbrev-alist-local) @@ -1506,15 +1510,6 @@ empty string. state) string) (cons (const :tag "Heading when clocking out" clock-out) string))) -(defcustom org-allow-auto-repeat t - "Non-nil means, find REPEAT cookies in entries and apply them. -A repeat cookie looks like REPEAT(+1m) and causes deadlines and schedules -to repeat themselves shifted by a certain amount of time, each time an -entry is marked DONE." - :group 'org-todo - :group 'org-progress - :type 'boolean) - (defcustom org-log-repeat t "Non-nil means, prompt for a note when REPEAT is resetting a TODO entry. When nil, no note will be taken." @@ -1527,14 +1522,21 @@ When nil, no note will be taken." :tag "Org Priorities" :group 'org-todo) -(defcustom org-default-priority ?B - "The default priority of TODO items. -This is the priority an item get if no explicit priority is given." +(defcustom org-highest-priority ?A + "The highest priority of TODO items. A character like ?A, ?B etc. +Must have a smaller ASCII number than `org-lowest-priority'." :group 'org-priorities :type 'character) (defcustom org-lowest-priority ?C - "The lowest priority of TODO items. A character like ?A, ?B etc." + "The lowest priority of TODO items. A character like ?A, ?B etc. +Must have a larger ASCII number than `org-highest-priority'." + :group 'org-priorities + :type 'character) + +(defcustom org-default-priority ?B + "The default priority of TODO items. +This is the priority an item get if no explicit priority is given." :group 'org-priorities :type 'character) @@ -1772,6 +1774,45 @@ This is a good place to set uptions for ps-print and for htmlize." (variable) (sexp :tag "Value")))) +(defcustom org-agenda-export-html-style "" + "The style specification for exported HTML Agenda files. +If this variable contains a string, it will replace the default + +or, if you want to keep the style in a file, + + + +As the value of this option simply gets inserted into the HTML header, +you can \"misuse\" it to also add other text to the header. However, + is required, if not present the variable will be ignored." + :group 'org-agenda-export + :group 'org-export-html + :type 'string) + (defgroup org-agenda-custom-commands nil "Options concerning agenda views in Org-mode." :tag "Org Agenda Custom Commands" @@ -2708,6 +2749,7 @@ you can \"misuse\" it to add arbitrary text to the header." :group 'org-export-html :type 'string) + (defcustom org-export-html-title-format "

%s

\n" "Format for typesetting the document title in HTML export." :group 'org-export-html @@ -2804,6 +2846,12 @@ The file name should be absolute." (const :tag "Unfinished" t) (const :tag "All" all))) +(defcustom org-icalendar-include-sexps t + "Non-nil means, export to iCalendar files should also cover sexp entries. +These are entries like in the diary, but directly in an Org-mode file." + :group 'org-export-icalendar + :type 'boolean) + (defcustom org-icalendar-combined-name "OrgMode" "Calendar name for the combined iCalendar representing all agenda files." :group 'org-export-icalendar @@ -2930,11 +2978,11 @@ Use customize to modify this, or restart Emacs after changing it." ("_" underline "" "") ("=" shadow "" "") ("+" (:strike-through t) "" "") -) + ) "Special syntax for emphasized text. Text starting and ending with a special character will be emphasized, for example *bold*, _underlined_ and /italic/. This variable sets the marker -characters, the face to bbe used by font-lock for highlighting in Org-mode +characters, the face to be used by font-lock for highlighting in Org-mode Emacs buffers, and the HTML tags to be used for this. Use customize to modify this, or restart Emacs after changing it." :group 'org-font-lock @@ -3106,6 +3154,13 @@ color of the frame." "Face for links." :group 'org-faces) +(defface org-sexp-date + '((((class color) (background light)) (:foreground "Purple")) + (((class color) (background dark)) (:foreground "Cyan")) + (t (:underline t))) + "Face for links." + :group 'org-faces) + (defface org-tag '((t (:bold t))) "Face for tags." @@ -3161,6 +3216,17 @@ to the part of the headline after the DONE keyword." "Face for formulas." :group 'org-faces) +(defface org-agenda-structure ;; font-lock-function-name-face + (org-compatible-face + '((((class color) (min-colors 88) (background light)) (:foreground "Blue1")) + (((class color) (min-colors 88) (background dark)) (:foreground "LightSkyBlue")) + (((class color) (min-colors 16) (background light)) (:foreground "Blue")) + (((class color) (min-colors 16) (background dark)) (:foreground "LightSkyBlue")) + (((class color) (min-colors 8)) (:foreground "blue" :bold t)) + (t (:bold t)))) + "Face used in agenda for captions and dates." + :group 'org-faces) + (defface org-scheduled-today (org-compatible-face '((((class color) (min-colors 88) (background light)) (:foreground "DarkGreen")) @@ -3346,9 +3412,9 @@ means to push this value onto the list in the variable.") (org-set-local 'org-todo-sets nil) (let ((re (org-make-options-regexp '("CATEGORY" "SEQ_TODO" "PRI_TODO" "TYP_TODO" - "STARTUP" "ARCHIVE" "TAGS" "LINK"))) + "STARTUP" "ARCHIVE" "TAGS" "LINK" "PRIORITIES"))) (splitre "[ \t]+") - kwds key value cat arch tags links hw dws tail sep kws1) + kwds key value cat arch tags links hw dws tail sep kws1 prio) (save-excursion (save-restriction (widen) @@ -3371,6 +3437,8 @@ means to push this value onto the list in the variable.") (push (cons (match-string 1 value) (org-trim (match-string 2 value))) links))) + ((equal key "PRIORITIES") + (setq prio (org-split-string " +" value))) ((equal key "STARTUP") (let ((opts (org-split-string value splitre)) l var val) @@ -3390,6 +3458,12 @@ means to push this value onto the list in the variable.") '(face t fontified t) arch))) ))) (and cat (org-set-local 'org-category cat)) + (when prio + (if (< (length prio) 3) (setq prio '("A" "C" "B"))) + (setq prio (mapcar 'string-to-char prio)) + (org-set-local 'org-highest-priority (aref (nth 0 prio) 0)) + (org-set-local 'org-lowest-priority (aref (nth 1 prio) 0)) + (org-set-local 'org-default-priority (aref (nth 2 prio) 0))) (and arch (org-set-local 'org-archive-location arch)) (and links (setq org-link-abbrev-alist-local (nreverse links))) ;; Process the TODO keywords @@ -3490,7 +3564,7 @@ means to push this value onto the list in the variable.") "\\|" org-deadline-string "\\|" org-closed-string "\\|" org-clock-string "\\)\\)?" - " *\\([[<][0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\}[^]\r\n>]*?[]>]\\)") + " *\\([[<][0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\} [^]\r\n>]*?[]>]\\|<%%([^\r\n>]*>\\)") org-planning-or-clock-line-re (concat "\\(?:^[ \t]*\\(" org-scheduled-string "\\|" org-deadline-string @@ -3855,7 +3929,7 @@ that will be added to PLIST. Returns the string that was modified." (require 'font-lock) (defconst org-non-link-chars "]\t\n\r<>") -(defconst org-link-types '("https?" "ftp" "mailto" "file" "news" "bbdb" "vm" +(defconst org-link-types '("http" "https" "ftp" "mailto" "file" "news" "bbdb" "vm" "wl" "mhe" "rmail" "gnus" "shell" "info" "elisp")) (defconst org-link-re-with-space (concat @@ -3914,15 +3988,15 @@ that will be added to PLIST. Returns the string that was modified." (cons (length (format-time-string (car org-time-stamp-formats))) (length (format-time-string (cdr org-time-stamp-formats)))) "This holds the lengths of the two different time formats.") -(defconst org-ts-regexp "<\\([0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\}[^\r\n>]*?\\)>" +(defconst org-ts-regexp "<\\([0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\} [^\r\n>]*?\\)>" "Regular expression for fast time stamp matching.") -(defconst org-ts-regexp-both "[[<]\\([0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\}[^\r\n>]*?\\)[]>]" +(defconst org-ts-regexp-both "[[<]\\([0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\} [^\r\n>]*?\\)[]>]" "Regular expression for fast time stamp matching.") -(defconst org-ts-regexp1 "\\(\\([0-9]\\{4\\}\\)-\\([0-9]\\{2\\}\\)-\\([0-9]\\{2\\}\\)\\([^]0-9>\r\n]*\\)\\(\\([0-9]\\{2\\}\\):\\([0-9]\\{2\\}\\)\\)?\\)" +(defconst org-ts-regexp1 "\\(\\([0-9]\\{4\\}\\)-\\([0-9]\\{2\\}\\)-\\([0-9]\\{2\\}\\) \\([^]0-9>\r\n]*\\)\\(\\([0-9]\\{2\\}\\):\\([0-9]\\{2\\}\\)\\)?\\)" "Regular expression matching time strings for analysis.") -(defconst org-ts-regexp2 (concat "<" org-ts-regexp1 ">") +(defconst org-ts-regexp2 (concat "<" org-ts-regexp1 "[^>\n]\\{0,5\\}>") "Regular expression matching time stamps, with groups.") -(defconst org-ts-regexp3 (concat "[[<]" org-ts-regexp1 "[]>]") +(defconst org-ts-regexp3 (concat "[[<]" org-ts-regexp1 "[^>\n]\\{0,5\\}[]>]") "Regular expression matching time stamps (also [..]), with groups.") (defconst org-tr-regexp (concat org-ts-regexp "--?-?" org-ts-regexp) "Regular expression matching a time stamp range.") @@ -3956,6 +4030,57 @@ The time stamps may be either active or inactive.") (backward-char 1)))) rtn)) +(defun org-emphasize (&optional char) + "Insert or change an emphasis, i.e. a font like bold or italic. +If there is an active region, change that region to a new emphasis. +If there is no region, just insert the marker characters and position +the cursor between them. +CHAR should be either the marker character, or the first character of the +HTML tag associated with that emphasis. If CHAR is a space, the means +to remove the emphasis of the selected region. +If char is not given (for example in an interactive call) it +will be prompted for." + (interactive) + (let ((eal org-emphasis-alist) e det + (erc org-emphasis-regexp-components) + (prompt "") + (string "") beg end move tag c s) + (if (org-region-active-p) + (setq beg (region-beginning) end (region-end) + string (buffer-substring beg end)) + (setq move t)) + + (while (setq e (pop eal)) + (setq tag (car (org-split-string (nth 2 e) "[ <>/]+")) + c (aref tag 0)) + (push (cons c (string-to-char (car e))) det) + (setq prompt (concat prompt (format " [%s%c]%s" (car e) c + (substring tag 1))))) + (unless char + (message "%s" (concat "Emphasis marker or tag:" prompt)) + (setq char (read-char-exclusive))) + (setq char (or (cdr (assoc char det)) char)) + (if (equal char ?\ ) + (setq s "" move nil) + (unless (assoc (char-to-string char) org-emphasis-alist) + (error "No such emphasis marker: \"%c\"" char)) + (setq s (char-to-string char))) + (while (and (> (length string) 1) + (equal (substring string 0 1) (substring string -1)) + (assoc (substring string 0 1) org-emphasis-alist)) + (setq string (substring string 1 -1))) + (setq string (concat s string s)) + (if beg (delete-region beg end)) + (unless (or (bolp) + (string-match (concat "[" (nth 0 erc) "\n]") + (char-to-string (char-before (point))))) + (insert " ")) + (unless (string-match (concat "[" (nth 1 erc) "\n]") + (char-to-string (char-after (point)))) + (insert " ") (backward-char 1)) + (insert string) + (and move (backward-char 1)))) + (defun org-activate-plain-links (limit) "Run through the buffer and add overlays to links." (catch 'exit @@ -4145,12 +4270,13 @@ between words." (if (memq 'bracket lk) '(org-activate-bracket-links (0 'org-link t))) (if (memq 'radio lk) '(org-activate-target-links (0 'org-link t))) (if (memq 'date lk) '(org-activate-dates (0 'org-date t))) + '("^&?%%(.*\\|<%%([^>\n]*?>" (0 'org-sexp-date t)) '(org-hide-wide-columns (0 nil append)) ;; TODO lines (list (concat "^\\*+[ \t]*" org-not-done-regexp) '(1 'org-todo t)) ;; Priorities - (list (concat "\\[#[A-Z]\\]") '(0 'org-special-keyword t)) + (list (concat "\\[#[A-Z0-9]\\]") '(0 'org-special-keyword t)) ;; Special keywords (list org-repeat-re '(0 'org-special-keyword t)) (list (concat "\\<" org-deadline-string) '(0 'org-special-keyword t)) @@ -4325,7 +4451,8 @@ between words." (- (funcall outline-level) arg))) (org-show-subtree))) - ((save-excursion (beginning-of-line 1) (looking-at outline-regexp)) + ((and (save-excursion (beginning-of-line 1) (looking-at outline-regexp)) + (or (bolp) (not (eq org-cycle-emulate-tab 'exc-hl-bol)))) ;; At a heading: rotate between three different views (org-back-to-heading) (let ((goal-column 0) eoh eol eos) @@ -4374,6 +4501,11 @@ between words." ((org-try-cdlatex-tab)) + ((and (eq org-cycle-emulate-tab 'exc-hl-bol) + (or (not (bolp)) + (not (looking-at outline-regexp)))) + (call-interactively (global-key-binding "\t"))) + ((if (and (memq org-cycle-emulate-tab '(white whitestart)) (save-excursion (beginning-of-line 1) (looking-at "[ \t]*")) (or (and (eq org-cycle-emulate-tab 'white) @@ -4388,8 +4520,8 @@ between words." (progn (beginning-of-line 1) (and (looking-at "[ \t]+") (replace-match "")))) - (indent-relative)) - + (call-interactively (global-key-binding "\t"))) + (t (save-excursion (org-back-to-heading) (org-cycle)))))) @@ -4483,7 +4615,15 @@ are at least `org-cycle-separator-lines' empty lines before the headeline." (while (re-search-forward re end t) (if (not (get-char-property (match-end 1) 'invisible)) (outline-flag-region - (match-beginning 1) (match-end 1) nil)))))))) + (match-beginning 1) (match-end 1) nil))))))) + ;; Never hide empty lines at the end of the file. + (save-excursion + (goto-char (point-max)) + (outline-previous-heading) + (outline-end-of-heading) + (if (and (looking-at "[ \t\n]+") + (= (match-end 0) (point-max))) + (outline-flag-region (point) (match-end 0) nil)))) (defun org-subtree-end-visible-p () "Is the end of the current subtree visible?" @@ -5021,7 +5161,9 @@ This is a short-hand for marking the subtree and then copying it. If CUT is non-nil, actually cut the subtree." (interactive) (let (beg end folded) - (org-back-to-heading) + (if (interactive-p) + (org-back-to-heading nil) ; take what looks like a subtree + (org-back-to-heading t)) ; take what is really there (setq beg (point)) (save-match-data (save-excursion (outline-end-of-heading) @@ -10061,8 +10203,18 @@ With three \\[universal-argument] prefixes, negate the meaning of ;; Fake a link history (setq tmphist (append (mapcar 'car org-stored-links) org-insert-link-history)) +; (setq link (org-completing-read +; "Link: " org-stored-links nil nil nil +; 'tmphist +; (or (car (car org-stored-links))))) (setq link (org-completing-read - "Link: " org-stored-links nil nil nil + "Link: " + (append + (mapcar (lambda (x) (concat (car x) ":")) + (append org-link-abbrev-alist-local org-link-abbrev-alist)) + (mapcar (lambda (x) (concat x ":")) org-link-types)) +; org-stored-links + nil nil nil 'tmphist (or (car (car org-stored-links))))) (setq entry (assoc link org-stored-links)) @@ -10656,7 +10808,7 @@ onto the ring." (funcall (cdr (assq 'gnus org-link-frame-setup))) (if gnus-other-frame-object (select-frame gnus-other-frame-object)) (cond ((and group article) - (gnus-group-read-group 0 nil group) + (gnus-group-read-group 1 nil group) (gnus-summary-goto-article (string-to-number article) nil t)) (group (gnus-group-jump-to-group group)))) @@ -11224,7 +11376,7 @@ See also the variable `org-reverse-note-order'." (re-search-forward "^\\*" nil t) (beginning-of-line 1) (org-paste-subtree 1 txt))) - ((and (org-on-heading-p nil) (not current-prefix-arg)) + ((and (org-on-heading-p t) (not current-prefix-arg)) ;; Put it below this entry, at the beg/end of the subtree (org-back-to-heading t) (setq level (funcall outline-level)) @@ -11637,7 +11789,7 @@ right sequence." (t (nth 2 (assoc kwd org-todo-kwd-alist)))))) (defun org-get-repeat () - "Return the REPEAT statement of this entry." + "Check if tere is a deadline/schedule with repeater in this entry." (save-match-data (save-excursion (org-back-to-heading t) @@ -11648,9 +11800,9 @@ right sequence." (defvar org-last-changed-timestamp) (defvar org-log-post-message) (defun org-auto-repeat-maybe () - "Check if the current headline contains a REPEAT key. -If yes, set TODO state back to what it was and change any SCHEDULED -or DEADLINE times the new date. + "Check if the current headline contains a repeated deadline/schedule. +If yes, set TODO state back to what it was and change the base date +of repeating deadline/scheduled time stamps to new date. This function should be run in the `org-after-todo-state-change-hook'." ;; last-state is dynamically scoped into this function (let* ((repeat (org-get-repeat)) @@ -11661,7 +11813,7 @@ This function should be run in the `org-after-todo-state-change-hook'." (whata '(("d" . day) ("m" . month) ("y" . year))) (msg "Entry repeats: ") (org-log-done) - re type n what start) + re type n what ts) (when repeat (org-todo (if (eq interpret 'type) last-state head)) (when (and org-log-repeat @@ -11678,11 +11830,10 @@ This function should be run in the `org-after-todo-state-change-hook'." (while (re-search-forward re (save-excursion (outline-next-heading) (point)) t) (setq type (if (match-end 1) org-scheduled-string org-deadline-string) - start 0) - (while (string-match "\\([-+]?[0-9]+\\)\\([dwmy]\\)" repeat start) - (setq start (match-end 0) - n (string-to-number (match-string 1 repeat)) - what (match-string 2 repeat)) + ts (match-string (if (match-end 2) 2 4))) + (when (string-match "\\([-+]?[0-9]+\\)\\([dwmy]\\)" ts) + (setq n (string-to-number (match-string 1 ts)) + what (match-string 2 ts)) (if (equal what "w") (setq n (* n 7) what "d")) (org-timestamp-change n (cdr (assoc what whata)))) (setq msg (concat msg type org-last-changed-timestamp " "))) @@ -11983,7 +12134,7 @@ from the `before-change-functions' in the current buffer." ;;;; Priorities -(defvar org-priority-regexp ".*?\\(\\[#\\([A-Z]\\)\\] ?\\)" +(defvar org-priority-regexp ".*?\\(\\[#\\([A-Z0-9]\\)\\] ?\\)" "Regular expression matching the priority indicator.") (defvar org-remove-priority-next-time nil) @@ -12012,18 +12163,18 @@ ACTION can be set, up, or down." (setq current org-default-priority)) (cond ((eq action 'set) - (message "Priority A-%c, SPC to remove: " org-lowest-priority) + (message "Priority %c-%c, SPC to remove: " org-highest-priority org-lowest-priority) (setq new (read-char-exclusive)) (cond ((equal new ?\ ) (setq remove t)) - ((or (< (upcase new) ?A) (> (upcase new) org-lowest-priority)) + ((or (< (upcase new) org-highest-priority) (> (upcase new) org-lowest-priority)) (error "Priority must be between `%c' and `%c'" - ?A org-lowest-priority)))) + org-highest-priority org-lowest-priority)))) ((eq action 'up) (setq new (1- current))) ((eq action 'down) (setq new (1+ current))) (t (error "Invalid action"))) - (setq new (min (max ?A (upcase new)) org-lowest-priority)) + (setq new (min (max org-highest-priority (upcase new)) org-lowest-priority)) (setq news (format "%c" new)) (if have (if remove @@ -12801,7 +12952,7 @@ This is used by `org-read-date' in a temporary keymap for the calendar buffer." (setq org-ans1 (format-time-string "%Y-%m-%d" time))) (if (active-minibuffer-window) (exit-minibuffer)))) -(defun org-insert-time-stamp (time &optional with-hm inactive pre post) +(defun org-insert-time-stamp (time &optional with-hm inactive pre post extra) "Insert a date stamp for the date given by the internal TIME. WITH-HM means, use the stamp format that includes the time of the day. INACTIVE means use square brackets instead of angular ones, so that the @@ -12814,6 +12965,10 @@ The command returns the inserted time stamp." (if inactive (setq fmt (concat "[" (substring fmt 1 -1) "]"))) (insert (or pre "")) (insert (setq stamp (format-time-string fmt time))) + (when extra + (backward-char 1) + (insert extra) + (forward-char 1)) (insert (or post "")) stamp)) @@ -12838,6 +12993,7 @@ The command returns the inserted time stamp." (message "Time stamps are overlayed with custom format") (message "Time stamp overlays removed"))) +;; FIXME: do something about the repeaters (defun org-display-custom-time (beg end) "Overlay modified time stamp format over timestamp between BED and END." (let* ((t1 (save-match-data @@ -13014,6 +13170,133 @@ days in order to avoid rounding problems." (defun org-time-string-to-time (s) (apply 'encode-time (org-parse-time-string s))) +(defun org-time-string-to-absolute (s &optional daynr) + "Convert a time stamp to an absolute day number. +If there is a specifyer for a cyclic time stamp, get the closest date to +DATE." + (cond + ((and daynr (string-match "\\`%%\\((.*)\\)" s)) + (if (org-diary-sexp-entry (match-string 1 s) "" date) + daynr + (+ daynr 1000))) + ((and daynr (string-match "\\+[0-9]+[dwmy]" s)) + (org-closest-date s (if (and (boundp 'daynr) (integerp daynr)) daynr + (time-to-days (current-time))) (match-string 0 s))) + (t (time-to-days (apply 'encode-time (org-parse-time-string s)))))) + +(defun org-calendar-holiday () + "List of holidays, for Diary display in Org-mode." + (let ((hl (check-calendar-holidays date))) + (if hl (mapconcat 'identity hl "; ")))) + +(defun org-diary-sexp-entry (sexp entry date) + "Process a SEXP diary ENTRY for DATE." + (let ((result (if calendar-debug-sexp + (let ((stack-trace-on-error t)) + (eval (car (read-from-string sexp)))) + (condition-case nil + (eval (car (read-from-string sexp))) + (error + (beep) + (message "Bad sexp at line %d in %s: %s" + (org-current-line) + (buffer-file-name) sexp) + (sleep-for 2)))))) + (cond ((stringp result) result) + ((and (consp result) + (stringp (cdr result))) (cdr result)) + (result entry) + (t nil)))) + +(defun org-diary-to-ical-string (frombuf) + "FIXME" + (let* ((tmpdir (if (featurep 'xemacs) + (temp-directory) + temporary-file-directory)) + (tmpfile (make-temp-name + (expand-file-name "orgics" tmpdir))) + buf rtn b e) + (save-excursion + (set-buffer frombuf) + (icalendar-export-region (point-min) (point-max) tmpfile) + (setq buf (find-buffer-visiting tmpfile)) + (set-buffer buf) + (goto-char (point-min)) + (if (re-search-forward "^BEGIN:VEVENT" nil t) + (setq b (match-beginning 0))) + (goto-char (point-max)) + (if (re-search-backward "^END:VEVENT" nil t) + (setq e (match-end 0))) + (setq rtn (if (and b e) (concat (buffer-substring b e) "\n") ""))) + (kill-buffer buf) + (kill-buffer frombuf) + (delete-file tmpfile) + rtn)) + +(defun org-closest-date (start current change) + "Find the date closest to CURRENT that is consistent with START and CHANGE." + ;; Make the proper lists from the dates + (catch 'exit + (let ((a1 '(("d" . day) ("w" . week) ("m" . month) ("y" . year))) + dn dw sday cday n1 n2 + d m y y1 y2 date1 date2 nmonths nm ny m2) + + (setq start (org-date-to-gregorian start) + current (org-date-to-gregorian current) + sday (calendar-absolute-from-gregorian start) + cday (calendar-absolute-from-gregorian current)) + + (if (<= cday sday) (throw 'exit sday)) + + (if (string-match "\\(\\+[0-9]+\\)\\([dwmy]\\)" change) + (setq dn (string-to-number (match-string 1 change)) + dw (cdr (assoc (match-string 2 change) a1))) + (error "Invalid change specifyer: %s" change)) + (if (eq dw 'week) (setq dw 'day dn (* 7 dn))) + (cond + ((eq dw 'day) + (setq n1 (+ sday (* dn (floor (/ (- cday sday) dn)))) + n2 (+ n1 dn))) + ((eq dw 'year) + (setq d (nth 1 start) m (car start) y1 (nth 2 start) y2 (nth 2 current)) + (setq y1 (+ (* (floor (/ (- y2 y1) dn)) dn) y1)) + (setq date1 (list m d y1) + n1 (calendar-absolute-from-gregorian date1) + date2 (list m d (+ y1 (* (if (< n1 cday) 1 -1) dn))) + n2 (calendar-absolute-from-gregorian date2))) + ((eq dw 'month) + ;; approx number of month between the tow dates + (setq nmonths (floor (/ (- cday sday) 30.436875))) + ;; How often does dn fit in there? + (setq d (nth 1 start) m (car start) y (nth 2 start) + nm (* dn (max 0 (1- (floor (/ nmonths dn))))) + m (+ m nm) + ny (floor (/ m 12)) + y (+ y ny) + m (- m (* ny 12))) + (while (> m 12) (setq m (- m 12) y (1+ y))) + (setq n1 (calendar-absolute-from-gregorian (list m d y))) + (setq m2 (+ m dn) y2 y) + (if (> m2 12) (setq y2 (1+ y2) m2 (- m2 12))) + (setq n2 (calendar-absolute-from-gregorian (list m2 d y2))) + (while (< n2 cday) + (setq n1 n2 m m2 y y2) + (setq m2 (+ m dn) y2 y) + (if (> m2 12) (setq y2 (1+ y2) m2 (- m2 12))) + (setq n2 (calendar-absolute-from-gregorian (list m2 d y2)))))) + + (if (> (abs (- cday n1)) (abs (- cday n2))) n2 n1)))) + +(defun org-date-to-gregorian (date) + "Turn any specification of DATE into a gregorian date for the calendar." + (cond ((integerp date) (calendar-gregorian-from-absolute date)) + ((and (listp date) (= (length date) 3)) date) + ((stringp date) + (setq date (org-parse-time-string date)) + (list (nth 4 date) (nth 3 date) (nth 5 date))) + ((listp date) + (list (nth 4 date) (nth 3 date) (nth 5 date))))) + (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'. @@ -13101,6 +13384,7 @@ in the timestamp determines what will be changed." (let ((pos (point)) with-hm inactive org-ts-what + extra ts time time0) (if (not (org-at-timestamp-p t)) (error "Not at a timestamp")) @@ -13116,6 +13400,8 @@ in the timestamp determines what will be changed." inactive (= (char-after (match-beginning 0)) ?\[) ts (match-string 0)) (replace-match "") + (if (string-match " \\+[0-9]+[dwmy]" ts) + (setq extra (match-string 0 ts))) (setq time0 (org-parse-time-string ts)) (setq time (apply 'encode-time @@ -13141,7 +13427,7 @@ in the timestamp determines what will be changed." (setcar (nthcdr 2 time0) (or (nth 1 time0) 0)) (setq time (apply 'encode-time time0)))) (setq org-last-changed-timestamp - (org-insert-time-stamp time with-hm inactive)) + (org-insert-time-stamp time with-hm inactive nil nil extra)) (org-clock-update-time-maybe) (goto-char pos) ;; Try to recenter the calendar window, if any @@ -13198,8 +13484,8 @@ If there is already a time stamp at the cursor position, update it." (defvar org-clock-start-time "") (defun org-update-mode-line () - (let* ((now (current-time)) - (delta (- (time-to-seconds (current-time)) (time-to-seconds org-clock-start-time))) + (let* ((delta (- (time-to-seconds (current-time)) + (time-to-seconds org-clock-start-time))) (h (floor delta 3600)) (m (floor (- delta (* 3600 h)) 60))) (setq org-mode-line-string @@ -14219,7 +14505,7 @@ priority-n The computed numerical priority" (setq tmp (calendar-date-string tmp))) (setq props (plist-put props 'date tmp))) (when (setq tmp (plist-get props 'txt)) - (when (string-match "\\[#\\([A-Z]\\)\\] ?" tmp) + (when (string-match "\\[#\\([A-Z0-9]\\)\\] ?" tmp) (plist-put props 'priority-letter (match-string 1 tmp)) (setq tmp (replace-match "" t t tmp))) (when (and (setq re (plist-get props 'org-todo-regexp)) @@ -14245,7 +14531,7 @@ priority-n The computed numerical priority" ;;;###autoload (defun org-store-agenda-views (&rest parameters) (interactive) - (org-batch-store-agenda-views)) + (funcall (intern "org-batch-store-agenda-views"))) (defvar org-agenda-buffer-name) @@ -14253,7 +14539,7 @@ priority-n The computed numerical priority" (defmacro org-batch-store-agenda-views (&rest parameters) "Run all custom agenda commands that have a file argument." (let ((cmds org-agenda-custom-commands) - pars cmd thiscmdkey files file bs opts) + pars cmd thiscmdkey files opts) (while parameters (push (list (pop parameters) (if parameters (pop parameters))) pars)) (setq pars (reverse pars)) @@ -14271,7 +14557,7 @@ priority-n The computed numerical priority" (set-buffer "*Org Agenda*") (while files (eval (list 'let (append org-agenda-exporter-settings opts pars) - (list 'org-write-agenda (pop files) 'nosettings))))) + (list 'org-write-agenda (pop files) t))))) (kill-buffer org-agenda-buffer-name))))) (defun org-write-agenda (file &optional nosettings) @@ -14285,18 +14571,27 @@ higher priority settings." (interactive "FWrite agenda to file: ") (if (not (file-writable-p file)) (error "Cannot write agenda to file %s" file)) + (cond + ((string-match "\\.html?\\'" file) (require 'htmlize)) + ((string-match "\\.ps\\'" file) (require 'ps-print))) (org-let (if nosettings nil org-agenda-exporter-settings) '(save-excursion (save-window-excursion (cond ((string-match "\\.html?\\'" file) - (require 'htmlize) (set-buffer (htmlize-buffer (current-buffer))) + + (when (and org-agenda-export-html-style + (string-match "")) + (insert org-agenda-export-html-style)) (write-file file) (kill-buffer (current-buffer)) (message "HTML written to %s" file)) ((string-match "\\.ps\\'" file) - (require 'ps-print) (ps-print-buffer-with-faces file) (message "Postscript written to %s" file)) (t @@ -14695,13 +14990,14 @@ dates." (org-prepare-agenda) (if doclosed (push :closed args)) (push :timestamp args) + (push :sexp args) (if dotodo (push :todo args)) (while (setq d (pop day-numbers)) (if (and (listp d) (eq (car d) :omitted)) (progn (setq s (point)) (insert (format "\n[... %d empty days omitted]\n\n" (cdr d))) - (put-text-property s (1- (point)) 'face 'org-level-3)) + (put-text-property s (1- (point)) 'face 'org-agenda-structure)) (if (listp d) (setq d (car d) emptyp t) (setq emptyp nil)) (if (and (>= d today) dopast @@ -14724,7 +15020,7 @@ dates." ; (insert (format-time-string org-agenda-date-format ; (calendar-time-from-absolute d 0)) ; "\n") - (put-text-property s (1- (point)) 'face 'org-level-3) + (put-text-property s (1- (point)) 'face 'org-agenda-structure) (put-text-property s (1- (point)) 'org-date-line t) (if (equal d today) (put-text-property s (1- (point)) 'org-today t)) @@ -14853,11 +15149,11 @@ NDAYS defaults to `org-agenda-ndays'." (when rtnall (insert "ALL CURRENTLY OPEN TODO ITEMS:\n") (add-text-properties (point-min) (1- (point)) - (list 'face 'org-level-3)) + (list 'face 'org-agenda-structure)) (insert (org-finalize-agenda-entries rtnall) "\n"))) (setq s (point)) (insert (if (= nd 7) "Week-" "Day-") "agenda:\n") - (add-text-properties s (1- (point)) (list 'face 'org-level-3 + (add-text-properties s (1- (point)) (list 'face 'org-agenda-structure 'org-date-line t)) (while (setq d (pop day-numbers)) (setq date (calendar-gregorian-from-absolute d) @@ -14875,10 +15171,10 @@ NDAYS defaults to `org-agenda-ndays'." (if org-agenda-show-log (setq rtn (org-agenda-get-day-entries file date - :deadline :scheduled :timestamp :closed)) + :deadline :scheduled :timestamp :sexp :closed)) (setq rtn (org-agenda-get-day-entries file date - :deadline :scheduled :timestamp))) + :deadline :scheduled :sexp :timestamp))) (setq rtnall (append rtnall rtn)))) (if org-agenda-include-diary (progn @@ -14895,7 +15191,7 @@ NDAYS defaults to `org-agenda-ndays'." ; FIXME: this gives a timezone problem ; (insert (format-time-string org-agenda-date-format ; (calendar-time-from-absolute d 0)) "\n") - (put-text-property s (1- (point)) 'face 'org-level-3) + (put-text-property s (1- (point)) 'face 'org-agenda-structure) (put-text-property s (1- (point)) 'org-date-line t) (if todayp (put-text-property s (1- (point)) 'org-today t)) (if rtnall (insert @@ -14964,10 +15260,10 @@ for a keyword. A numeric prefix directly selects the Nth keyword in (setq rtnall (append rtnall rtn)))) (if org-agenda-overriding-header (insert (org-add-props (copy-sequence org-agenda-overriding-header) - nil 'face 'org-level-3) "\n") + nil 'face 'org-agenda-structure) "\n") (insert "Global list of TODO items of type: ") (add-text-properties (point-min) (1- (point)) - (list 'face 'org-level-3)) + (list 'face 'org-agenda-structure)) (setq pos (point)) (insert (or org-select-this-todo-keyword "ALL") "\n") (add-text-properties pos (1- (point)) (list 'face 'org-warning)) @@ -14982,7 +15278,7 @@ for a keyword. A numeric prefix directly selects the Nth keyword in (insert " " s)) kwds)) (insert "\n")) - (add-text-properties pos (1- (point)) (list 'face 'org-level-3))) + (add-text-properties pos (1- (point)) (list 'face 'org-agenda-structure))) (when rtnall (insert (org-finalize-agenda-entries rtnall) "\n")) (goto-char (point-min)) @@ -15038,17 +15334,17 @@ The prefix arg TODO-ONLY limits the search to TODO entries." (setq rtnall (append rtnall rtn)))))))) (if org-agenda-overriding-header (insert (org-add-props (copy-sequence org-agenda-overriding-header) - nil 'face 'org-level-3) "\n") + nil 'face 'org-agenda-structure) "\n") (insert "Headlines with TAGS match: ") (add-text-properties (point-min) (1- (point)) - (list 'face 'org-level-3)) + (list 'face 'org-agenda-structure)) (setq pos (point)) (insert match "\n") (add-text-properties pos (1- (point)) (list 'face 'org-warning)) (setq pos (point)) (unless org-agenda-multi (insert "Press `C-u r' to search again with new search string\n")) - (add-text-properties pos (1- (point)) (list 'face 'org-level-3))) + (add-text-properties pos (1- (point)) (list 'face 'org-agenda-structure))) (when rtnall (insert (org-finalize-agenda-entries rtnall) "\n")) (goto-char (point-min)) @@ -15233,6 +15529,8 @@ items should be listed. The following arguments are allowed: date range matching the selected date. Deadlines will also be listed, on the expiration day. + :sexp FIXME + :deadline List any deadlines past due, or due within `org-deadline-warning-days'. The listing occurs only in the diary for *today*, not at any other date. If @@ -15257,10 +15555,10 @@ all files listed in `org-agenda-files' will be checked automatically: &%%(org-diary) If you don't give any arguments (as in the example above), the default -arguments (:deadline :scheduled :timestamp) are used. So the example above may -also be written as +arguments (:deadline :scheduled :timestamp :sexp) are used. +So the example above may also be written as - &%%(org-diary :deadline :timestamp :scheduled) + &%%(org-diary :deadline :timestamp :sexp :scheduled) The function expects the lisp variables `entry' and `date' to be provided by the caller, because this is how the calendar works. Don't use this @@ -15268,7 +15566,7 @@ function from a program - use `org-agenda-get-day-entries' instead." (org-agenda-maybe-reset-markers) (org-compile-prefix-format 'agenda) (org-set-sorting-strategy 'agenda) - (setq args (or args '(:deadline :scheduled :timestamp))) + (setq args (or args '(:deadline :scheduled :timestamp :sexp))) (let* ((files (if (and entry (stringp entry) (string-match "\\S-" entry)) (list entry) (org-agenda-files t))) @@ -15291,7 +15589,7 @@ FILE is the path to a file to be checked for entries. DATE is date like the one returned by `calendar-current-date'. ARGS are symbols indicating which kind of entries should be extracted. For details about these, see the documentation of `org-diary'." - (setq args (or args '(:deadline :scheduled :timestamp))) + (setq args (or args '(:deadline :scheduled :timestamp :sexp))) (let* ((org-startup-folded nil) (org-startup-align-all-tables nil) (buffer (if (file-exists-p file) @@ -15324,6 +15622,9 @@ the documentation of `org-diary'." (setq results (append results rtn)) (setq rtn (org-agenda-get-timestamps)) (setq results (append results rtn))) + ((eq arg :sexp) + (setq rtn (org-agenda-get-sexps)) + (setq results (append results rtn))) ((eq arg :scheduled) (setq rtn (org-agenda-get-scheduled)) (setq results (append results rtn))) @@ -15426,27 +15727,46 @@ the documentation of `org-diary'." 'help-echo (format "mouse-2 or RET jump to org file %s" (abbreviate-file-name buffer-file-name)))) - (regexp (regexp-quote - (substring - (format-time-string - (car org-time-stamp-formats) - (apply 'encode-time ; DATE bound by calendar - (list 0 0 0 (nth 1 date) (car date) (nth 2 date)))) - 0 11))) +;???? (regexp (regexp-quote +; (substring +; (format-time-string +; (car org-time-stamp-formats) +; (apply 'encode-time ; DATE bound by calendar +; (list 0 0 0 (nth 1 date) (car date) (nth 2 date)))) +; 0 11))) + (d1 (calendar-absolute-from-gregorian date)) + (regexp + (concat + (regexp-quote + (substring + (format-time-string + (car org-time-stamp-formats) + (apply 'encode-time ; DATE bound by calendar + (list 0 0 0 (nth 1 date) (car date) (nth 2 date)))) + 0 11)) + "\\|\\(<[0-9]+-[0-9]+-[0-9]+[^>\n]+?\\+[0-9]+[dwmy]>\\)" + "\\|\\(<%%\\(([^>\n]+)\\)>\\)")) marker hdmarker deadlinep scheduledp donep tmp priority category - ee txt timestr tags) + ee txt timestr tags b0 b3 e3) (goto-char (point-min)) (while (re-search-forward regexp nil t) + (setq b0 (match-beginning 0) + b3 (match-beginning 3) e3 (match-end 3)) (catch :skip - (and (save-match-data (org-at-date-range-p)) (throw :skip nil)) + (and (org-at-date-range-p) (throw :skip nil)) (org-agenda-skip) - (setq marker (org-agenda-new-marker (match-beginning 0)) - category (org-get-category (match-beginning 0)) + (if (and (match-end 1) + (not (= d1 (org-time-string-to-absolute (match-string 1) d1)))) + (throw :skip nil)) + (if (and e3 + (not (org-diary-sexp-entry (buffer-substring b3 e3) "" date))) + (throw :skip nil)) + (setq marker (org-agenda-new-marker b0) + category (org-get-category b0) tmp (buffer-substring (max (point-min) - (- (match-beginning 0) - org-ds-keyword-length)) - (match-beginning 0)) - timestr (buffer-substring (match-beginning 0) (point-at-eol)) + (- b0 org-ds-keyword-length)) + b0) + timestr (if b3 "" (buffer-substring b0 (point-at-eol))) deadlinep (string-match org-deadline-regexp tmp) scheduledp (string-match org-scheduled-regexp tmp) donep (org-entry-is-done-p)) @@ -15494,6 +15814,47 @@ the documentation of `org-diary'." (outline-next-heading))) (nreverse ee))) +(defun org-agenda-get-sexps () + "Return the sexp information for agenda display." + (require 'diary-lib) + (let* ((props (list 'face nil + 'mouse-face 'highlight + 'keymap org-agenda-keymap + 'help-echo + (format "mouse-2 or RET jump to org file %s" + (abbreviate-file-name buffer-file-name)))) + (regexp "^&?%%(") + marker category ee txt tags entry result beg b sexp sexp-entry) + (goto-char (point-min)) + (while (re-search-forward regexp nil t) + (catch :skip + (org-agenda-skip) + (setq beg (match-beginning 0)) + (goto-char (1- (match-end 0))) + (setq b (point)) + (forward-sexp 1) + (setq sexp (buffer-substring b (point))) + (setq sexp-entry (if (looking-at "[ \t]*\\(\\S-.*\\)") + (org-trim (match-string 1)) + "")) + (setq result (org-diary-sexp-entry sexp sexp-entry date)) + (when result + (setq marker (org-agenda-new-marker beg) + category (org-get-category beg)) + + (if (string-match "\\S-" result) + (setq txt result) + (setq txt "SEXP entry returned empty string")) + + (setq txt (org-format-agenda-item + "" txt category tags 'time)) + (org-add-props txt props 'org-marker marker) + (org-add-props txt nil + 'org-category category 'date date + 'type "sexp") + (push txt ee)))) + (nreverse ee))) + (defun org-agenda-get-closed () "Return the logged TODO entries for agenda display." (let* ((props (list 'mouse-face 'highlight @@ -15568,8 +15929,9 @@ the documentation of `org-diary'." (catch :skip (org-agenda-skip) (setq pos (1- (match-beginning 1)) - d2 (time-to-days - (org-time-string-to-time (match-string 1))) +;??? d2 (time-to-days +;??? (org-time-string-to-time (match-string 1))) + d2 (org-time-string-to-absolute (match-string 1) d1) diff (- d2 d1)) ;; When to show a deadline in the calendar: ;; If the expiration is within wdays warning time. @@ -15627,8 +15989,9 @@ the documentation of `org-diary'." (catch :skip (org-agenda-skip) (setq pos (1- (match-beginning 1)) - d2 (time-to-days - (org-time-string-to-time (match-string 1))) + d2 (org-time-string-to-absolute (match-string 1) d1) +;??? d2 (time-to-days +;??? (org-time-string-to-time (match-string 1))) diff (- d2 d1)) ;; When to show a scheduled item in the calendar: ;; If it is on or past the date. @@ -16286,12 +16649,13 @@ and by additional input from the age of a schedules or deadline entry." (org-agenda-error))) (buffer (marker-buffer marker)) (pos (marker-position marker)) + (type (get-text-property (point) 'type)) dbeg dend (n 0) conf) (org-with-remote-undo buffer (with-current-buffer buffer (save-excursion (goto-char pos) - (if (org-mode-p) + (if (and (org-mode-p) (not (member type '("sexp")))) (setq dbeg (progn (org-back-to-heading t) (point)) dend (org-end-of-subtree t)) (setq dbeg (point-at-bol) @@ -17269,6 +17633,7 @@ The images can be removed again with \\[org-ctrl-c-ctrl-c]." (:tables . org-export-with-tables) (:table-auto-headline . org-export-highlight-first-table-line) (:style . org-export-html-style) + (:agenda-style . org-agenda-export-html-style) ;; FIXME: Does this work???? (:convert-org-links . org-export-html-link-org-files-as-html) (:inline-images . org-export-html-inline-images) (:expand-quoted-html . org-export-html-expand) @@ -17391,6 +17756,7 @@ The images can be removed again with \\[org-ctrl-c-ctrl-c]." (?h . org-export-as-html) (?b . org-export-as-html-and-open) (?H . org-export-as-html-to-buffer) + (?R . org-export-region-as-html) (?x . org-export-as-xoxo) (?i . org-export-icalendar-this-file) (?I . org-export-icalendar-all-agenda-files) @@ -18208,7 +18574,7 @@ continue to use it. The prefix arg ARG is passed through to the exporting command." (interactive (list (progn - (message "Export visible: [a]SCII [h]tml [b]rowse HTML [H]uffer with HTML [x]OXO [ ]keep buffer") + (message "Export visible: [a]SCII [h]tml [b]rowse HTML [H/R]uffer with HTML [x]OXO [ ]keep buffer") (read-char-exclusive)) current-prefix-arg)) (if (not (member type '(?a ?\C-a ?b ?\C-b ?h ?x ?\ ))) @@ -18220,6 +18586,7 @@ command." (?\C-b . org-export-as-html-and-open) (?h . org-export-as-html) (?H . org-export-as-html-to-buffer) + (?R . org-export-region-as-html) (?x . org-export-as-xoxo))))) (keepp (equal type ?\ )) (file buffer-file-name) @@ -18279,6 +18646,7 @@ Does include HTML export options as well as TODO and CATEGORY stuff." #+CATEGORY: %s #+SEQ_TODO: %s #+TYP_TODO: %s +#+PRIORITIES: %c %c %c #+STARTUP: %s %s %s %s %s #+TAGS: %s #+ARCHIVE: %s @@ -18300,6 +18668,7 @@ Does include HTML export options as well as TODO and CATEGORY stuff." (file-name-nondirectory buffer-file-name) "TODO FEEDBACK VERIFY DONE" "Me Jason Marie DONE" + org-highest-priority org-lowest-priority org-default-priority (cdr (assoc org-startup-folded '((nil . "showall") (t . "overview") (content . "content")))) (if org-odd-levels-only "odd" "oddeven") @@ -18395,10 +18764,64 @@ emacs --batch "Call `org-exort-as-html` with output to a temporary buffer. No file is created. The prefix ARG is passed through to `org-export-as-html'." (interactive "P") - (org-export-as-html arg nil nil t) + (org-export-as-html arg nil nil "*Org HTML Export*") (switch-to-buffer-other-window "*Org HTML Export*")) -(defun org-export-as-html (arg &optional hidden ext-plist temp-buffer-only) +(defun org-replace-region-by-html (beg end) + "Assume the current region has org-mode syntax, and convert it to HTML. +This can be used in any buffer. For example, you could write an +itemized list in org-mode syntax in an HTML buffer and then use this +command to convert it." + (interactive "r") + (let (reg html buf) + (if (org-mode-p) + (setq html (org-export-region-as-html + beg end t 'string)) + (setq reg (buffer-substring beg end) + buf (get-buffer-create "*Org tmp*")) + (save-excursion + (set-buffer buf) + (erase-buffer) + (insert reg) + (org-mode) + (setq html (org-export-region-as-html + (point-min) (point-max) t 'string))) + (kill-buffer buf)) + (delete-region beg end) + (insert html))) + +(defun org-export-region-as-html (beg end &optional body-only buffer) + "Convert region from BEG to END in org-mode buffer to HTML. +If prefix arg BODY-ONLY is set, omit file header, footer, and table of +contents, and only produce the region of converted text, useful for +cut-and-paste operations. +If BUFFER is a buffer or a string, use/create that buffer as a target +of the converted HTML. If BUFFER is the symbol `string', return the +produced HTML as a string and leave not buffer behind. For example, +a Lisp program could call this function in the following way: + + (setq html (org-export-region-as-html beg end t 'string)) + +When called interactively, the output buffer is selected, and shown +in a window. A non-interactive call will only retunr the buffer." + (interactive "r\nP") + (when (interactive-p) + (setq buffer "*Org HTML EXPORT*")) + (let ((transient-mark-mode t) (zmacs-regions t) + rtn) + (goto-char end) + (set-mark (point)) ;; to activate the region + (goto-char beg) + (setq rtn (org-export-as-html + nil nil nil + buffer body-only)) + (if (fboundp 'deactivate-mark) (deactivate-mark)) + (if (and (interactive-p) (bufferp rtn)) + (switch-to-buffer-other-window rtn) + rtn))) + +(defun org-export-as-html (arg &optional hidden ext-plist + to-buffer body-only) "Export the outline as a pretty HTML file. If there is an active region, export only the region. The prefix ARG specifies how many levels of the outline should become @@ -18406,8 +18829,12 @@ headlines. The default is 3. Lower levels will become bulleted lists. When HIDDEN is non-nil, don't display the HTML buffer. EXT-PLIST is a property list with external parameters overriding org-mode's default settings, but still inferior to file-local -settings. Wehn TEMP-BUFFER-ONLY is non-nil, export to a buffer not -associated with a file." +settings. When TO-BUFFER is non-nil, create a buffer with that +name and export to that buffer. If TO-BUFFER is the symbol `string', +don't leave any buffer behind but just return the resulting HTML as +a string. When BODY-ONLY is set, don't produce the file header and footer, +simply return the content of ..., without even +the body tags themselves." (interactive "P") (message "Exporting...") (setq-default org-todo-line-regexp org-todo-line-regexp) @@ -18423,10 +18850,6 @@ associated with a file." valid thetoc have-headings first-heading-pos (odd org-odd-levels-only) (region-p (org-region-active-p)) - (region - (buffer-substring - (if region-p (region-beginning) (point-min)) - (if region-p (region-end) (point-max)))) ;; The following two are dynamically scoped into other ;; routines below. (org-current-export-dir (org-export-directory :html opt-plist)) @@ -18434,14 +18857,19 @@ associated with a file." (level 0) (line "") (origline "") txt todo (umax nil) (umax-toc nil) - (filename (concat (file-name-as-directory - (org-export-directory :html opt-plist)) - (file-name-sans-extension - (file-name-nondirectory buffer-file-name)) - ".html")) - (current-dir (file-name-directory buffer-file-name)) - (buffer (if temp-buffer-only - (get-buffer-create "*Org HTML Export*") + (filename (if to-buffer nil + (concat (file-name-as-directory + (org-export-directory :html opt-plist)) + (file-name-sans-extension + (file-name-nondirectory buffer-file-name)) + ".html"))) + (current-dir (if buffer-file-name + (file-name-directory buffer-file-name) + default-directory)) + (buffer (if to-buffer + (cond + ((eq to-buffer 'string) (get-buffer-create "*Org HTML Export*")) + (t (get-buffer-create to-buffer))) (find-file-noselect filename))) (org-levels-open (make-vector org-level-max nil)) (date (format-time-string "%Y/%m/%d" (current-time))) @@ -18451,8 +18879,10 @@ associated with a file." (and (not (plist-get opt-plist :skip-before-1st-heading)) (org-export-grab-title-from-buffer)) - (file-name-sans-extension - (file-name-nondirectory buffer-file-name)))) + (and buffer-file-name + (file-name-sans-extension + (file-name-nondirectory buffer-file-name))) + "UNTITLED")) (quote-re0 (concat "^[ \t]*" org-quote-string "\\>")) (quote-re (concat "^\\(\\*+\\)\\([ \t]*" org-quote-string "\\>\\)")) (inquote nil) @@ -18474,6 +18904,10 @@ associated with a file." (charset (and coding-system (fboundp 'coding-system-get) (coding-system-get coding-system 'mime-charset))) + (region + (buffer-substring + (if region-p (region-beginning) (point-min)) + (if region-p (region-end) (point-max)))) (lines (org-skip-comments (org-split-string (org-cleaned-string-for-export @@ -18508,9 +18942,7 @@ associated with a file." (assoc "en" org-export-language-setup))) ;; Switch to the output buffer - (if (or hidden t) - (set-buffer buffer) - (switch-to-buffer-other-window buffer)) + (set-buffer buffer) (erase-buffer) (fundamental-mode) (let ((case-fold-search nil) @@ -18526,9 +18958,10 @@ associated with a file." (setq umax-toc (if (integerp org-export-with-toc) (min org-export-with-toc umax) umax)) - ;; File header - (insert (format - " @@ -18541,17 +18974,16 @@ lang=\"%s\" xml:lang=\"%s\"> %s " - language language (org-html-expand title) (or charset "iso-8859-1") - date time author style)) - - - (insert (or (plist-get opt-plist :preamble) "")) - - (when (plist-get opt-plist :auto-preamble) - (if title (insert (format org-export-html-title-format - (org-html-expand title))))) - - (if org-export-with-toc + language language (org-html-expand title) + (or charset "iso-8859-1") date time author style)) + + (insert (or (plist-get opt-plist :preamble) "")) + + (when (plist-get opt-plist :auto-preamble) + (if title (insert (format org-export-html-title-format + (org-html-expand title)))))) + + (if (and org-export-with-toc (not body-only)) (progn (push (format "%s\n" org-export-html-toplevel-hlevel @@ -18560,77 +18992,78 @@ lang=\"%s\" xml:lang=\"%s\"> thetoc) (push "
    \n
  • " thetoc) (setq lines - (mapcar '(lambda (line) - (if (string-match org-todo-line-regexp line) - ;; This is a headline - (progn - (setq have-headings t) - (setq level (- (match-end 1) (match-beginning 1)) - level (org-tr-level level) - txt (save-match-data - (org-html-expand - (org-export-cleanup-toc-line - (match-string 3 line)))) - todo - (or (and org-export-mark-todo-in-toc - (match-beginning 2) - (not (member (match-string 2 line) - org-done-keywords))) + (mapcar '(lambda (line) + (if (string-match org-todo-line-regexp line) + ;; This is a headline + (progn + (setq have-headings t) + (setq level (- (match-end 1) (match-beginning 1)) + level (org-tr-level level) + txt (save-match-data + (org-html-expand + (org-export-cleanup-toc-line + (match-string 3 line)))) + todo + (or (and org-export-mark-todo-in-toc + (match-beginning 2) + (not (member (match-string 2 line) + org-done-keywords))) ; TODO, not DONE - (and org-export-mark-todo-in-toc - (= level umax-toc) - (org-search-todo-below - line lines level)))) - (if (and (memq org-export-with-tags '(not-in-toc nil)) - (string-match "[ \t]+:[a-zA-Z0-9_@:]+:[ \t]*$" txt)) - (setq txt (replace-match "" t t txt))) - (if (string-match quote-re0 txt) - (setq txt (replace-match "" t t txt))) - (if org-export-with-section-numbers - (setq txt (concat (org-section-number level) - " " txt))) - (if (<= level (max umax umax-toc)) - (setq head-count (+ head-count 1))) - (if (<= level umax-toc) - (progn - (if (> level org-last-level) - (progn - (setq cnt (- level org-last-level)) - (while (>= (setq cnt (1- cnt)) 0) - (push "\n
      \n
    • " thetoc)) - (push "\n" thetoc))) - (if (< level org-last-level) - (progn - (setq cnt (- org-last-level level)) - (while (>= (setq cnt (1- cnt)) 0) - (push "
    • \n
    " thetoc)) - (push "\n" thetoc))) - ;; Check for targets - (while (string-match org-target-regexp line) - (setq tg (match-string 1 line) - line (replace-match - (concat "@" tg "@ ") - t t line)) - (push (cons (org-solidify-link-text tg) - (format "sec-%d" head-count)) - target-alist)) - (while (string-match "<\\(<\\)+\\|>\\(>\\)+" txt) - (setq txt (replace-match "" t t txt))) - (push - (format - (if todo - "
  • \n
  • %s" - "
  • \n
  • %s") - head-count txt) thetoc) - - (setq org-last-level level)) - ))) - line) - lines)) + (and org-export-mark-todo-in-toc + (= level umax-toc) + (org-search-todo-below + line lines level)))) + (if (and (memq org-export-with-tags '(not-in-toc nil)) + (string-match "[ \t]+:[a-zA-Z0-9_@:]+:[ \t]*$" txt)) + (setq txt (replace-match "" t t txt))) + (if (string-match quote-re0 txt) + (setq txt (replace-match "" t t txt))) + (if org-export-with-section-numbers + (setq txt (concat (org-section-number level) + " " txt))) + (if (<= level (max umax umax-toc)) + (setq head-count (+ head-count 1))) + (if (<= level umax-toc) + (progn + (if (> level org-last-level) + (progn + (setq cnt (- level org-last-level)) + (while (>= (setq cnt (1- cnt)) 0) + (push "\n
      \n
    • " thetoc)) + (push "\n" thetoc))) + (if (< level org-last-level) + (progn + (setq cnt (- org-last-level level)) + (while (>= (setq cnt (1- cnt)) 0) + (push "
    • \n
    " thetoc)) + (push "\n" thetoc))) + ;; Check for targets + (while (string-match org-target-regexp line) + (setq tg (match-string 1 line) + line (replace-match + (concat "@" tg "@ ") + t t line)) + (push (cons (org-solidify-link-text tg) + (format "sec-%d" head-count)) + target-alist)) + (while (string-match "<\\(<\\)+\\|>\\(>\\)+" txt) + (setq txt (replace-match "" t t txt))) + (push + (format + (if todo + "
  • \n
  • %s" + "
  • \n
  • %s") + head-count txt) thetoc) + + (setq org-last-level level)) + ))) + line) + lines)) (while (> org-last-level 0) (setq org-last-level (1- org-last-level)) (push "
  • \n
\n" thetoc)) (setq thetoc (if have-headings (nreverse thetoc) nil)))) + (setq head-count 0) (org-init-section-numbers) @@ -18729,7 +19162,8 @@ lang=\"%s\" xml:lang=\"%s\"> (setq rpl (concat "" desc ""))) ((member type '("http" "https")) ; FIXME: need to test this. ;; standard URL, just check if we need to inline an image @@ -18922,24 +19356,28 @@ lang=\"%s\" xml:lang=\"%s\"> (and org-export-with-toc (<= level umax)) head-count) - (when (plist-get opt-plist :auto-postamble) - (when author - (insert "

" - (nth 1 lang-words) ": " author "\n") - (when email - (insert "<" - email ">\n")) - (insert "

\n")) - (when (and date time) - (insert "

" - (nth 2 lang-words) ": " - date " " time "

\n"))) - - (if org-export-html-with-timestamp - (insert org-export-html-html-helper-timestamp)) - (insert (or (plist-get opt-plist :postamble) "")) - (insert "\n\n") + (unless body-only + (when (plist-get opt-plist :auto-postamble) + (when author + (insert "

" + (nth 1 lang-words) ": " author "\n") + (when email + (insert "<" + email ">\n")) + (insert "

\n")) + (when (and date time) + (insert "

" + (nth 2 lang-words) ": " + date " " time "

\n"))) + + (if org-export-html-with-timestamp + (insert org-export-html-html-helper-timestamp)) + (insert (or (plist-get opt-plist :postamble) "")) + (insert "\n\n")) + (normal-mode) + (if (eq major-mode default-major-mode) (html-mode)) + ;; insert the table of contents (goto-char (point-min)) (when thetoc @@ -18962,9 +19400,13 @@ lang=\"%s\" xml:lang=\"%s\"> (goto-char (point-min)) (while (re-search-forward "
  • [ \r\n\t]*
  • \n?" nil t) (replace-match "")) - (or temp-buffer-only (save-buffer)) + (or to-buffer (save-buffer)) (goto-char (point-min)) - (message "Exporting... done")))) + (message "Exporting... done") + (if (eq to-buffer 'string) + (prog1 (buffer-substring (point-min) (point-max)) + (kill-buffer (current-buffer))) + (current-buffer))))) (defun org-format-table-html (lines olines) "Find out which HTML converter to use and return the HTML code." @@ -19187,6 +19629,9 @@ But it has the disadvantage, that Org-mode's HTML conversions cannot be used." (when org-export-remove-timestamps-from-toc (while (string-match org-maybe-keyword-time-regexp s) (setq s (replace-match "" t t s)))) + (while (string-match org-bracket-link-regexp s) + (setq s (replace-match (match-string (if (match-end 3) 3 1) s) + t t s))) s) (defun org-html-expand (string) @@ -19383,11 +19828,13 @@ The file is stored under the name `org-combined-agenda-icalendar-file'." If COMBINE is non-nil, combine all calendar entries into a single large file and store it under the name `org-combined-agenda-icalendar-file'." (save-excursion + (org-prepare-agenda-buffers files) (let* ((dir (org-export-directory :ical (list :publishing-directory org-export-publishing-directory))) file ical-file ical-buffer category started org-agenda-new-buffers) - + + (and (get-buffer "*ical-tmp*") (kill-buffer "*ical-tmp*")) (when combine (setq ical-file (if (file-name-absolute-p org-combined-agenda-icalendar-file) @@ -19432,76 +19879,112 @@ the iCalendar file.") (defun org-print-icalendar-entries (&optional combine) "Print iCalendar entries for the current Org-mode file to `standard-output'. When COMBINE is non nil, add the category to each line." - (let ((re2 (concat "--?-?\\(" org-ts-regexp "\\)")) + (let ((re1 (concat org-ts-regexp "\\|<%%([^>\n]+>")) + (re2 (concat "--?-?\\(" org-ts-regexp "\\)")) (org-category-table (org-get-category-table)) (dts (org-ical-ts-to-string (format-time-string (cdr org-time-stamp-formats) (current-time)) "DTSTART")) - hd ts ts2 state status (inc t) pos - scheduledp deadlinep tmp pri category) + hd ts ts2 state status (inc t) pos b sexp rrule + scheduledp deadlinep tmp pri category + (sexp-buffer (get-buffer-create "*ical-tmp*"))) (save-excursion (goto-char (point-min)) - (while (re-search-forward org-ts-regexp nil t) - (setq pos (match-beginning 0) - ts (match-string 0) - inc t - hd (org-get-heading) - category (org-get-category)) - (if (looking-at re2) - (progn - (goto-char (match-end 0)) - (setq ts2 (match-string 1) inc nil)) - (setq ts2 ts - tmp (buffer-substring (max (point-min) + (while (re-search-forward re1 nil t) + (catch :skip + (org-agenda-skip) + (setq pos (match-beginning 0) + ts (match-string 0) + inc t + hd (org-get-heading) + category (org-get-category)) + (if (looking-at re2) + (progn + (goto-char (match-end 0)) + (setq ts2 (match-string 1) inc nil)) + (setq ts2 ts + tmp (buffer-substring (max (point-min) (- pos org-ds-keyword-length)) - pos) - deadlinep (string-match org-deadline-regexp tmp) - scheduledp (string-match org-scheduled-regexp tmp) - ;; donep (org-entry-is-done-p) - )) - (if (or (string-match org-tr-regexp hd) - (string-match org-ts-regexp hd)) - (setq hd (replace-match "" t t hd))) - (if (string-match org-bracket-link-regexp hd) - (setq hd (replace-match (if (match-end 3) (match-string 3 hd) - (match-string 1 hd)) - t t hd))) - (if deadlinep (setq hd (concat "DL: " hd))) - (if scheduledp (setq hd (concat "S: " hd))) - (princ (format "BEGIN:VEVENT -%s + pos) + deadlinep (string-match org-deadline-regexp tmp) + scheduledp (string-match org-scheduled-regexp tmp) + ;; donep (org-entry-is-done-p) + )) + (if (or (string-match org-tr-regexp hd) + (string-match org-ts-regexp hd)) + (setq hd (replace-match "" t t hd))) + (if (string-match "\\+\\([0-9]+\\)\\([dwmy]\\)>" ts) + (setq rrule + (concat "\nRRULE:FREQ=" + (cdr (assoc + (match-string 2 ts) + '(("d" . "DAILY")("w" . "WEEKLY") + ("m" . "MONTHLY")("y" . "YEARLY")))) + ";INTERVAL=" (match-string 1 ts))) + (setq rrule "")) + (if (string-match org-bracket-link-regexp hd) + (setq hd (replace-match (if (match-end 3) (match-string 3 hd) + (match-string 1 hd)) + t t hd))) + (if deadlinep (setq hd (concat "DL: " hd))) + (if scheduledp (setq hd (concat "S: " hd))) + (if (string-match "\\`<%%" ts) + (with-current-buffer sexp-buffer + (insert (substring ts 1 -1) " " hd "\n")) + (princ (format "BEGIN:VEVENT %s +%s%s SUMMARY:%s CATEGORIES:%s END:VEVENT\n" - (org-ical-ts-to-string ts "DTSTART") - (org-ical-ts-to-string ts2 "DTEND" inc) - hd category))) + (org-ical-ts-to-string ts "DTSTART") + (org-ical-ts-to-string ts2 "DTEND" inc) + rrule hd category))))) + + (when (and org-icalendar-include-sexps + (condition-case nil (require 'icalendar) (error nil)) + (fboundp 'icalendar-export-region)) + ;; Get all the literal sexps + (goto-char (point-min)) + (while (re-search-forward "^&?%%(" nil t) + (catch :skip + (org-agenda-skip) + (setq b (match-beginning 0)) + (goto-char (1- (match-end 0))) + (forward-sexp 1) + (end-of-line 1) + (setq sexp (buffer-substring b (point))) + (with-current-buffer sexp-buffer + (insert sexp "\n")) + (princ (org-diary-to-ical-string sexp-buffer))))) + (when org-icalendar-include-todo (goto-char (point-min)) (while (re-search-forward org-todo-line-regexp nil t) - (setq state (match-string 2)) - (setq status (if (member state org-done-keywords) - "COMPLETED" "NEEDS-ACTION")) - (when (and state - (or (not (member state org-done-keywords)) - (eq org-icalendar-include-todo 'all)) - (not (member org-archive-tag (org-get-tags-at))) - ) - (setq hd (match-string 3)) - (if (string-match org-bracket-link-regexp hd) - (setq hd (replace-match (if (match-end 3) (match-string 3 hd) - (match-string 1 hd)) - t t hd))) - (if (string-match org-priority-regexp hd) - (setq pri (string-to-char (match-string 2 hd)) - hd (concat (substring hd 0 (match-beginning 1)) - (substring hd (match-end 1)))) - (setq pri org-default-priority)) - (setq pri (floor (1+ (* 8. (/ (float (- org-lowest-priority pri)) - (- org-lowest-priority ?A)))))) - - (princ (format "BEGIN:VTODO + (catch :skip + (org-agenda-skip) + (setq state (match-string 2)) + (setq status (if (member state org-done-keywords) + "COMPLETED" "NEEDS-ACTION")) + (when (and state + (or (not (member state org-done-keywords)) + (eq org-icalendar-include-todo 'all)) + (not (member org-archive-tag (org-get-tags-at))) + ) + (setq hd (match-string 3)) + (if (string-match org-bracket-link-regexp hd) + (setq hd (replace-match (if (match-end 3) (match-string 3 hd) + (match-string 1 hd)) + t t hd))) + (if (string-match org-priority-regexp hd) + (setq pri (string-to-char (match-string 2 hd)) + hd (concat (substring hd 0 (match-beginning 1)) + (substring hd (match-end 1)))) + (setq pri org-default-priority)) + (setq pri (floor (1+ (* 8. (/ (float (- org-lowest-priority pri)) + (- org-lowest-priority org-highest-priority)))))) + + (princ (format "BEGIN:VTODO %s SUMMARY:%s CATEGORIES:%s @@ -19509,7 +19992,7 @@ SEQUENCE:1 PRIORITY:%d STATUS:%s END:VTODO\n" - dts hd category pri status)))))))) + dts hd category pri status))))))))) (defun org-start-icalendar-file (name) "Start an iCalendar file by inserting the header." @@ -19760,6 +20243,7 @@ The XOXO buffer is named *xoxo-*" (org-defkey org-mode-map "\C-c{" 'org-table-toggle-formula-debugger) (org-defkey org-mode-map "\C-c\C-e" 'org-export) (org-defkey org-mode-map "\C-c:" 'org-toggle-fixed-width-section) +(org-defkey org-mode-map "\C-c\C-x\C-f" 'org-emphasize) (org-defkey org-mode-map "\C-c\C-x\C-k" 'org-cut-special) (org-defkey org-mode-map "\C-c\C-x\C-w" 'org-cut-special) @@ -20270,7 +20754,11 @@ See the individual commands for more information." ["Next Same Level" outline-forward-same-level t] ["Previous Same Level" outline-backward-same-level t] "--" - ["Jump" org-goto t]) + ["Jump" org-goto t] + "--" + ["C-a finds headline start" + (setq org-special-ctrl-a (not org-special-ctrl-a)) + :style toggle :selected org-special-ctrl-a]) ("Edit Structure" ["Move Subtree Up" org-shiftmetaup (not (org-at-table-p))] ["Move Subtree Down" org-shiftmetadown (not (org-at-table-p))] @@ -20288,6 +20776,8 @@ See the individual commands for more information." "--" ["Convert to odd levels" org-convert-to-odd-levels t] ["Convert to odd/even levels" org-convert-to-oddeven-levels t]) + ("Editing" + ["Emphasis..." org-emphasize t]) ("Archive" ["Toggle ARCHIVE tag" org-toggle-archive-tag t] ; ["Check and Tag Children" (org-toggle-archive-tag (4)) @@ -20509,7 +20999,7 @@ and :keyword." (push (org-point-in-group p 4 :tags) clist)) (goto-char p) (skip-chars-backward "^[\n\r \t") (or (eobp) (backward-char 1)) - (if (looking-at "\\[#[A-Z]\\]") + (if (looking-at "\\[#[A-Z0-9]\\]") (push (org-point-in-group p 0 :priority) clist))) ((org-at-item-p) @@ -21000,14 +21490,6 @@ Show the heading too, if it is currently invisible." ;;;; Experimental code -(defun org-get-item-columns () - (save-excursion - (when (condition-case nil - (org-beginning-of-item) - (error nil)) - (if (looking-at "\\([ \t]*\\)[-+*0-9.)]+") - (cons (progn (goto-char (match-end 1)) (current-column)) - (progn (goto-char (match-end 0)) (1+ (current-column)))))))) ;;;; Finish up diff --git a/org.pdf b/org.pdf index 0fe9442218f6ea9e9670b78463fbad6735ec1a9b..838076cb903ef6afaafc40e6889d58d3092c8f93 100644 GIT binary patch delta 305518 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