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 | 770 +++++++++++++++++++---------------- org-install.el | 1 + org.el | 1060 +++++++++++++++++++++++++++++++++++------------- org.pdf | Bin 718235 -> 720816 bytes org.texi | 354 ++++++++++------ orgcard.pdf | Bin 58569 -> 58889 bytes orgcard.tex | 2 +- 7 files changed, 1421 insertions(+), 766 deletions(-) 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,6 +2677,31 @@ PLAIN TIME STAMP * Meet Peter at the movies <2006-11-01 Wed 19:15> +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: + + * 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/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> + 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 @@ -2670,64 +2709,14 @@ INACTIVE TIME STAMP * Gillian comes late for the fifth time [2006-11-01 Wed] -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 - 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> - -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. - -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: Progress logging, Prev: Repeating items, Up: Timestamps +File: org, Node: Inserting deadline/schedule, Next: Repeated tasks, Prev: Deadlines and scheduling, Up: Deadlines and scheduling -6.5 Progress Logging +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: Repeated tasks, Prev: Inserting deadline/schedule, Up: Deadlines and scheduling + +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"))) + (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")) - (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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%0AW`{ngugw;r2&G( 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