From 5e48ea5630e5787fba98941ea6932966b524b70b Mon Sep 17 00:00:00 2001 From: Carsten Dominik Date: Thu, 31 Jan 2008 11:33:51 +0100 Subject: [PATCH] Release 4.65 --- org | 699 +++++++++++++++++++++++++++++++++++++++++------------------- org.el | 545 +++++++++++++++++++++++++++++++++++++++++------ org.pdf | Bin 672587 -> 690098 bytes org.texi | 294 +++++++++++++++++++++++-- orgcard.pdf | Bin 58128 -> 58430 bytes orgcard.tex | 2 +- 6 files changed, 1236 insertions(+), 304 deletions(-) rewrite orgcard.pdf (70%) diff --git a/org b/org index 46eed1df0..72534ec2f 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.64). + This manual is for Org-mode (version 4.65). 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.64). +This manual is for Org-mode (version 4.65). Copyright (C) 2004, 2005, 2006, 2007 Free Software Foundation @@ -265,8 +265,15 @@ Interaction with other packages Extensions, Hooks and Hacking * Extensions:: Existing 3rd-part extensions +* Tables in arbitrary syntax:: Orgtbl for LaTeX and other programs * Dynamic blocks:: Automatically filled blocks -* Special agenda views:: +* Special agenda views:: Customized views + +Tables in arbitrary syntax + +* Radio tables:: Sending and receiving +* A LaTeX example:: Step by step, almost a tutorial +* Translator functions:: Copy and modify  File: org, Node: Introduction, Next: Document structure, Prev: Top, Up: Top @@ -331,7 +338,8 @@ example as: Org-mode's automatic, context sensitive table editor with spreadsheet capabilities can be integrated into any major mode by activating the -minor Orgtbl-mode. +minor Orgtbl-mode. Using a translation step, it can be used to maintain +tables in arbitray file types, for example in LaTeX. There is a website for Org-mode which provides links to the newest version of Org-mode, as well as additional information, frequently asked @@ -1193,6 +1201,12 @@ in mail mode, use (add-hook 'mail-mode-hook 'turn-on-orgtbl) + Furthermore, with some special setup, it is possible to maintain +tables in arbitrary syntax with Orgtbl-mode. For example, it is +possible to construct LaTeX tables with the underlying ease and power of +Orgtbl-mode, including spreadsheet capabulities. For details, see +*Note Tables in arbitrary syntax::. +  File: org, Node: The spreadsheet, Prev: orgtbl-mode, Up: Tables @@ -1458,6 +1472,16 @@ formulas of a table. `C-c C-q' Exit the buffer without installing changes. + `' + Pretty-print or indent lisp formula at point. When in a line + containing a lisp formula, format the formula according to + Emacs Lisp rules. Another collapses the formula back + again. In the open formula, re-indents just like in + Emacs-lisp-mode. + + `M-' + Complete Lisp symbols, just like in Emacs-lisp-mode. + `S-/' Move the reference line in the Org-mode buffer up and down. This is important for highlighting the references of column @@ -1593,6 +1617,10 @@ column formulas are not applied in rows with empty first field. All lines that should be recalculated should be marked with `#' or `*'. +`/' + Do not export this line. Useful for lines that contain the + narrowing `' markers. + Finally, just to whet your appetite on what can be done with the fantastic `calc' package, here is a table that computes the Taylor series of degree `n' at location `x' for a couple of functions @@ -5413,11 +5441,12 @@ Org-mode. * Menu: * Extensions:: Existing 3rd-part extensions +* Tables in arbitrary syntax:: Orgtbl for LaTeX and other programs * Dynamic blocks:: Automatically filled blocks -* Special agenda views:: +* Special agenda views:: Customized views  -File: org, Node: Extensions, Next: Dynamic blocks, Prev: Extensions and Hacking, Up: Extensions and Hacking +File: org, Node: Extensions, Next: Tables in arbitrary syntax, Prev: Extensions and Hacking, Up: Extensions and Hacking A.1 Third-party extensions for Org-mode ======================================= @@ -5426,14 +5455,13 @@ The following extensions for Org-mode have been written by other people: `org-publish.el' by David O'Toole This package provides facilities for publishing related sets of - Org-mode files together with linked files like images as a - webpages. It is highly configurable and can be used for other - publishing purposes as well. As of Org-mode version 4.30, - `org-publish.el' is part of the Org-mode distribution. It is not - yet part of Emacs, however, a delay caused by the preparations for - the 22.1 release. In the mean time, `org-publish.el' can be - downloaded from David's site: - `http://dto.freeshell.org/e/org-publish.el'. + Org-mode files together with linked files like images as webpages. + It is highly configurable and can be used for other publishing + purposes as well. As of Org-mode version 4.30, `org-publish.el' + is part of the Org-mode distribution. It is not yet part of + Emacs, however, a delay caused by the preparations for the 22.1 + release. In the mean time, `org-publish.el' can be downloaded + from David's site: `http://dto.freeshell.org/e/org-publish.el'. `org-mouse.el' by Piotr Zielinski This package implements extended mouse functionality for Org-mode. @@ -5460,9 +5488,219 @@ The following extensions for Org-mode have been written by other people: `http://www.cognition.ens.fr/~guerry/u/org2rem.el'.  -File: org, Node: Dynamic blocks, Next: Special agenda views, Prev: Extensions, Up: Extensions and Hacking +File: org, Node: Tables in arbitrary syntax, Next: Dynamic blocks, Prev: Extensions, Up: Extensions and Hacking + +A.2 Tables in arbitrary syntax +============================== + +Since Orgtbl-mode can be used as a minor mode in arbitrary buffers, a +frequent feature request has been to make it work with native tables in +specific languages, for example LaTeX. However, this is extremely hard +to do in a general way, would lead to a customization nightmare, and +would take away much of the simplicity of the Orgtbl-mode table editor. + + This appendix describes different approach. We keep the Orgtbl-mode +table in its native format (the source table), and use a custom +function to translate the table to the correct syntax, and to install +it in the right location (the target table). This puts the burden of +writing conversion functions on the user, but it allows for a very +flexible system. + +* Menu: -A.2 Dynamic blocks +* Radio tables:: Sending and receiving +* A LaTeX example:: Step by step, almost a tutorial +* Translator functions:: Copy and modify + + +File: org, Node: Radio tables, Next: A LaTeX example, Prev: Tables in arbitrary syntax, Up: Tables in arbitrary syntax + +A.2.1 Radio tables +------------------ + +To define the location of the target table, you first need to create two +lines that are comments in the current mode, but contain magic words for +Orgtbl-mode to find. Orgtbl-mode will insert the translated table +between these lines, replacing whatever was there before. For example: + + /* BEGIN RECEIVE ORGTBL table_name */ + /* END RECEIVE ORGTBL table_name */ + +Just above the source table, we put a special line that tells +Orgtbl-mode how to translate this table and where to install it. For +example: + #+ORGTBL: SEND table_name translation_function arguments.... + +`table_name' is the reference name for the table that is also used in +the receiver lines. `translation_function' is the Lisp function that +does the translation. Furthermore, the line can contain a list of +arguments (alternating key and value) at the end. The arguments will be +passed as a property list to the translation function for +interpretation. However, a few standard parameters are already +recognized and acted upon before the translation function is called: + +`:skip N' + Skip the first N lines of the table. Hlines do count! + +`:skipcols (n1 n2 ...)' + List of columns that should be skipped. If the table has a column + with calculation marks, that column is automatically discarded as + well. Please note that the translator function sees the table + _after_ the removal of these columns, the function never knows + that there have been additional columns. + +The one problem remaining is how to keep the source table in the buffer +without disturbing the normal workings of the file, for example during +compilation of a C file or processing of a LaTeX file. There are a +number of different solutions: + + * The table could be placed in a block comment if that is supported + by the language. For example, in C-mode you could wrap the table + between `/*' and `*/' lines. + + * Sometimes it is possible to put the table after some kind of END + statement, for example `\bye' in TeX and `\end{document}' in LaTeX. + + * If all else fails(1), you can just comment the table line by line + whenever you want to process the file, and uncomment it whenever + you need to edit the table. The command `M-x + orgtbl-toggle-comment' does make this a viable option, in + particular if you bind it to a key. + + ---------- Footnotes ---------- + + (1) In principle the source table could also be in a separate file, +but so far this is not implemented. + + +File: org, Node: A LaTeX example, Next: Translator functions, Prev: Radio tables, Up: Tables in arbitrary syntax + +A.2.2 A LaTeX example +--------------------- + +The best way to wrap the source table in LaTeX is to use the `comment' +environment provided by `comment.sty'. It has to be activated by +placing `\usepackage{comment}' into the document header. Orgtbl-mode +can insert a radio table skeleton(1) with the command `M-x +orgtbl-insert-radio-table'. You will be prompted for a table name, +lets say we use `salesfigures'. You will then get the following +template: + + % BEGIN RECEIVE ORGTBL salesfigures + % END RECEIVE ORGTBL salesfigures + \begin{comment} + #+ORGTBL: SEND salesfigures orgtbl-to-latex + | | | + \end{comment} + +The `#+ORGTBL: SEND' line tells orgtbl-mode to use the function +`orgtbl-to-latex' to convert the table into LaTeX and to put it into +the receiver location with name `salesfigures'. You may now fill in +the table, feel free to use the spreadsheet features(2): + + % BEGIN RECEIVE ORGTBL salesfigures + % END RECEIVE ORGTBL salesfigures + \begin{comment} + #+ORGTBL: SEND salesfigures orgtbl-to-latex + | Month | Days | Nr sold | per day | + |-------+------+---------+---------| + | Jan | 23 | 55 | 2.4 | + | Feb | 21 | 16 | 0.8 | + | March | 22 | 278 | 12.6 | + #+TBLFM: $4=$3/$2;%.1f + % $ (optional extra dollar to keep font-lock happy, see footnote) + \end{comment} + +When you are done, press `C-c C-c' in the table to get the converted +table inserted between the two marker lines. + + Now lets assume you want to make the table header by hand, because +you want to control how columns are aligned etc. In this case we make +sure that the table translator does skip the first 2 lines, and tell the +command to work as a splice, i.e. to not produce header and footer +commands of the table: + + \begin{tabular}{lrrr} + Month & \multicolumn{1}{c}{Days} & Nr.\ sold & per day\\ + % BEGIN RECEIVE ORGTBL salesfigures + % END RECEIVE ORGTBL salesfigures + \end{tabular} + % + \begin{comment} + #+ORGTBL: SEND salesfigures orgtbl-to-latex :splice t :skip 2 + | Month | Days | Nr sold | per day | + |-------+------+---------+---------| + | Jan | 23 | 55 | 2.4 | + | Feb | 21 | 16 | 0.8 | + | March | 22 | 278 | 12.6 | + #+TBLFM: $4=$3/$2;%.1f + \end{comment} + + The LaTeX translator function `orgtbl-to-latex' is already part of +Orgtbl-mode. It uses a `tabular' environment to typeset the table and +marks horizontal lines with `\hline'. Furthermore, it interprets the +following parameters: + +`:splice nil/t' + When set to t, return only table body lines, don't wrap them into a + tabular environment. Default is nil. + +`:fmt fmt' + A format to be used to wrap the field, should contain `%s' for the + original field value. For example, to wrap each field value in + dollars, you could use `:fmt "$%s$"'. This may also be a property + list with column numbers and formats. for example `:fmt (2 "$%s$" + 4 "%s%%")'. + +`:efmt efmt' + Use this format to print numbers with exponentials. The format + should have `%s' twice for inserting mantissa and exponent, for + example `"%s\\times10^{%s}"'. The default is `"%s\\,(%s)"'. This + may also be a property list with column numbers and formats, for + example `:efmt (2 "$%s\\times10^{%s}$" 4 "$%s\\cdot10^{%s}$")'. + After `efmt' has been applied to a value, `fmt' will also be + applied. + + ---------- Footnotes ---------- + + (1) By default this works only for LaTeX, HTML, and TeXInfo. +Configure the variable `orgtbl-radio-tables' to install templates for +other modes. + + (2) If the `#+TBLFM' line contains an odd number of dollar +characters, this may cause problems with font-lock in latex-mode. As +shown in the example you can fix this by adding an extra line inside the +`comment' environment that is used to balance the dollar expressions. +If you are using AUCTeX with the font-latex library, a much better +solution is to add the `comment' environment to the variable +`LaTeX-verbatim-environments'. + + +File: org, Node: Translator functions, Prev: A LaTeX example, Up: Tables in arbitrary syntax + +A.2.3 Translator functions +-------------------------- + +Orgtbl-mode has several translator functions built-in: +`orgtbl-to-latex', `orgtbl-to-html', and `orgtbl-to-texinfo'. For +deatils on each of them, please check the corresponding documentation +strings. + + In order to write your own translator function, start by looking at +`orgtbl-to-latex' which is well documented. Basically you have to +write a function that takes two arguments. The first argument is the +table, a list of lines, each line either the symbol `hline' or a list +of fields. The second argument is a property list that will contain +all parameters specified in the `#+ORGTBL: SEND' line. Orgtbl-mode +always handles the `:skip' and `:skipcols' parameters, but your +translator function may use any number of additional parameters. If +you write a generally useful translator, please post it on +`emacs-orgmode@gnu.org' so that others can benefit from your work. + + +File: org, Node: Dynamic blocks, Next: Special agenda views, Prev: Tables in arbitrary syntax, Up: Extensions and Hacking + +A.3 Dynamic blocks ================== Org-mode documents can contain _dynamic blocks_. These are specially @@ -5514,7 +5752,7 @@ Org-mode.  File: org, Node: Special agenda views, Prev: Dynamic blocks, Up: Extensions and Hacking -A.3 Special Agenda Views +A.4 Special Agenda Views ======================== Org-mode provides a special hook that can be used to narrow down the @@ -5572,17 +5810,21 @@ Appendix B History and Acknowledgments ************************************** Org-mode was borne in 2003, out of frustration over the user interface -of the Emacs outline-mode. All I initially wanted was to make working -with an outline tree possible without having to remember more than 10 -commands just for hiding and unhiding parts of the outline tree, and to -allow to restructure a tree easily. Visibility cycling and structure -editing were originally implemented in the package `outline-magic.el', -but quickly moved to the more general `org.el'. TODO entries, basic -time stamps, and table support were added next, and highlight the two -main goals that Org-mode still has today: To create a new, -outline-based, plain text mode with innovative and intuitive editing -features, and to incorporate project planning functionality directly -into a notes file. +of the Emacs outline-mode. I was trying to organize my notes and +projects, and using Emacs seemed to be the natural way to go. However, +having to remember eleven different commands with two or three keys per +command, only to hide and unhide parts of the outline tree, that seemed +entirely unacceptable to me. Also, when using outlines to take notes, I +constantly want to restructure the tree, organizing it parallel to my +thoughts and plans. _Visibility cycling_ and _structure editing_ were +originally implemented in the package `outline-magic.el', but quickly +moved to the more general `org.el'. As this environment became +comfortable for project planning, the next step was adding _TODO +entries_, basic _time stamps_, and _table support_. These areas +highlight the two main goals that Org-mode still has today: To create a +new, outline-based, plain text mode with innovative and intuitive +editing features, and to incorporate project planning functionality +directly into a notes file. Since the first release, hundreds of emails to me or on `emacs-orgmode@gnu.org' have provided a constant stream of bug reports, @@ -5734,6 +5976,8 @@ Index * agenda files, removing buffers: Agenda commands. (line 230) * agenda views: Agenda views. (line 6) * agenda views, custom: Custom agenda views. (line 6) +* agenda views, user-defined: Special agenda views. + (line 6) * agenda, batch production: Batch processing. (line 6) * agenda, with block views: Block agenda. (line 6) * align, STARTUP keyword: In-buffer settings. (line 29) @@ -5747,7 +5991,7 @@ Index * backtrace of an error: Feedback. (line 27) * BBDB links: External links. (line 6) * block agenda: Block agenda. (line 6) -* blorg.el: Extensions. (line 33) +* blorg.el: Extensions. (line 32) * bold text: Enhancing text. (line 15) * Boolean logic, for tag searches: Tag searches. (line 23) * bug reports: Feedback. (line 6) @@ -5785,8 +6029,8 @@ Index * completion, of link abbreviations: Completion. (line 6) * completion, of links: Handling links. (line 27) * completion, of option keywords <1>: Completion. (line 6) -* completion, of option keywords: Export options. (line 6) -* Completion, of option keywords: Per file keywords. (line 17) +* completion, of option keywords <2>: Export options. (line 6) +* completion, of option keywords: Per file keywords. (line 17) * completion, of tags <1>: Completion. (line 6) * completion, of tags: Setting tags. (line 11) * completion, of TeX symbols: Completion. (line 6) @@ -5815,9 +6059,9 @@ Index (line 6) * DEADLINE keyword: Time stamps. (line 53) * deadlines: Time stamps. (line 6) -* Deadlines, repeating: Repeating items. (line 6) +* deadlines, repeating: Repeating items. (line 6) * debugging, of table formulas: Editing and debugging formulas. - (line 60) + (line 70) * demotion, of subtrees: Structure editing. (line 6) * diary entries, creating from agenda: Agenda commands. (line 198) * diary integration: Weekly/Daily agenda. (line 24) @@ -5828,6 +6072,7 @@ Index * display changing, in agenda: Agenda commands. (line 65) * document structure: Document structure. (line 6) * DONE, final TODO keyword: Per file keywords. (line 20) +* dynamic blocks: Dynamic blocks. (line 6) * editing tables: Tables. (line 6) * editing, of table formulas: Editing and debugging formulas. (line 6) @@ -5839,10 +6084,11 @@ Index * exporting: Exporting. (line 6) * exporting, not: Comment lines. (line 6) * extended TODO keywords: TODO extensions. (line 6) +* extension, third-party: Extensions. (line 6) * external archiving: Moving subtrees. (line 6) * external links: External links. (line 6) * external links, in HTML export: Links. (line 6) -* FAQ: Summary. (line 52) +* FAQ: Summary. (line 53) * feedback: Feedback. (line 6) * field formula: Field formulas. (line 6) * field references: References. (line 14) @@ -5861,7 +6107,7 @@ Index (line 15) * format, of links: Link format. (line 6) * formula debugging: Editing and debugging formulas. - (line 60) + (line 70) * formula editing: Editing and debugging formulas. (line 6) * formula syntax, Calc: Formula syntax for Calc. @@ -5890,6 +6136,8 @@ Index (line 6) * horizontal rules, in exported files: Enhancing text. (line 18) * HTML export: HTML export. (line 6) +* HTML, and orgtbl-mode: Translator functions. + (line 6) * hyperlinks: Hyperlinks. (line 6) * iCalendar export: iCalendar export. (line 6) * images, inline in HTML: Images. (line 6) @@ -5915,6 +6163,7 @@ Index * LaTeX fragments, preview: Processing LaTeX fragments. (line 6) * LaTeX interpretation: Embedded LaTeX. (line 6) +* LaTeX, and orgtbl-mode: A LaTeX example. (line 6) * level, require for tags match: Tag searches. (line 68) * linebreak preservation: Export options. (line 25) * linebreak, forced: Enhancing text. (line 35) @@ -5968,12 +6217,14 @@ Index * options, for publishing: Publishing options. (line 6) * ordered lists: Plain lists. (line 6) * org-agenda, command: Weekly/Daily agenda. (line 9) -* org-blog.el: Extensions. (line 29) +* org-blog.el: Extensions. (line 28) * org-mode, turning on: Activation. (line 22) -* org-mouse.el: Extensions. (line 17) +* org-mouse.el: Extensions. (line 16) * org-publish-project-alist: Project alist. (line 6) * org-publish.el: Extensions. (line 8) -* org2rem.el: Extensions. (line 37) +* org2rem.el: Extensions. (line 36) +* orgtbl-mode <1>: Tables in arbitrary syntax. + (line 6) * orgtbl-mode: orgtbl-mode. (line 6) * outline tree: Headlines. (line 6) * outline-mode: Outlines. (line 6) @@ -5996,6 +6247,7 @@ Index * promotion, of subtrees: Structure editing. (line 6) * publishing: Publishing. (line 6) * quoted HTML tags: Export options. (line 25) +* radio tables: Radio tables. (line 6) * radio targets: Radio targets. (line 6) * range references: References. (line 44) * ranges, time: Time stamps. (line 6) @@ -6018,7 +6270,7 @@ Index * RMAIL links: External links. (line 6) * SCHEDULED keyword: Time stamps. (line 40) * scheduling: Time stamps. (line 6) -* Scheduling, repeating: Repeating items. (line 6) +* scheduling, repeating: Repeating items. (line 6) * search option in file links: Search options. (line 6) * search strings, custom: Custom searches. (line 6) * searching for tags: Tag searches. (line 6) @@ -6064,6 +6316,8 @@ Index * tables <1>: Export options. (line 25) * tables: Tables. (line 6) * tables, export: Enhancing text. (line 24) +* tables, in other modes: Tables in arbitrary syntax. + (line 6) * tag completion: Completion. (line 6) * tag searches: Tag searches. (line 6) * tags: Tags. (line 6) @@ -6110,6 +6364,8 @@ Index * transient-mark-mode <3>: Built-in table editor. (line 141) * transient-mark-mode: Structure editing. (line 64) +* translator function: Translator functions. + (line 6) * trees, sparse: Sparse trees. (line 6) * trees, visibility: Visibility cycling. (line 6) * tty keybindings: TTY keys. (line 6) @@ -6163,9 +6419,11 @@ Key Index * <1>: CDLaTeX mode. (line 23) * <2>: Agenda commands. (line 35) * <3>: Setting tags. (line 68) -* <4>: Built-in table editor. +* <4>: Editing and debugging formulas. + (line 37) +* <5>: Built-in table editor. (line 57) -* <5>: Plain lists. (line 37) +* <6>: Plain lists. (line 37) * : Visibility cycling. (line 10) * > <1>: Agenda commands. (line 173) * >: The date/time prompt. @@ -6337,7 +6595,7 @@ Key Index * L: Agenda commands. (line 32) * M: Agenda commands. (line 204) * M- <1>: Editing and debugging formulas. - (line 42) + (line 52) * M-: Built-in table editor. (line 82) * M- <1>: Built-in table editor. @@ -6350,9 +6608,11 @@ Key Index * M-: Structure editing. (line 24) * M- <1>: Completion. (line 10) * M- <2>: Setting tags. (line 6) -* M-: Per file keywords. (line 17) +* M- <3>: Per file keywords. (line 17) +* M-: Editing and debugging formulas. + (line 44) * M- <1>: Editing and debugging formulas. - (line 42) + (line 52) * M-: Built-in table editor. (line 82) * M-S- <1>: Built-in table editor. @@ -6402,7 +6662,7 @@ Key Index * S- <3>: Creating timestamps. (line 58) * S- <4>: Priorities. (line 25) * S- <5>: Editing and debugging formulas. - (line 37) + (line 47) * S-: Plain lists. (line 55) * S- <1>: Agenda commands. (line 169) * S- <2>: The date/time prompt. @@ -6425,7 +6685,7 @@ Key Index * S- <3>: Creating timestamps. (line 58) * S- <4>: Priorities. (line 25) * S- <5>: Editing and debugging formulas. - (line 37) + (line 47) * S-: Plain lists. (line 55) * T: Agenda commands. (line 126) * t: Agenda commands. (line 113) @@ -6437,175 +6697,182 @@ Key Index  Tag Table: Node: Top970 -Node: Introduction11179 -Node: Summary11594 -Node: Installation14495 -Node: Activation15873 -Node: Feedback17122 -Node: Document structure19198 -Node: Outlines19972 -Node: Headlines20632 -Node: Visibility cycling21255 -Ref: Visibility cycling-Footnote-123346 -Ref: Visibility cycling-Footnote-223404 -Ref: Visibility cycling-Footnote-323454 -Node: Motion23723 -Node: Structure editing24507 -Node: Archiving27333 -Node: ARCHIVE tag27891 -Node: Moving subtrees29684 -Node: Sparse trees30995 -Ref: Sparse trees-Footnote-133127 -Ref: Sparse trees-Footnote-233309 -Node: Plain lists33424 -Ref: Plain lists-Footnote-136949 -Ref: Plain lists-Footnote-237306 -Node: Tables37490 -Node: Built-in table editor38004 -Node: Narrow columns45000 -Ref: Narrow columns-Footnote-146932 -Node: orgtbl-mode46978 -Node: The spreadsheet47472 -Node: References48290 -Node: Formula syntax for Calc51547 -Node: Formula syntax for Lisp53864 -Node: Field formulas55092 -Node: Column formulas56403 -Node: Editing and debugging formulas57826 -Node: Updating the table60534 -Node: Advanced features61565 -Node: Hyperlinks65990 -Node: Link format66763 -Node: Internal links68056 -Ref: Internal links-Footnote-170045 -Node: Radio targets70177 -Node: CamelCase links70892 -Node: External links71486 -Node: Handling links73890 -Ref: Handling links-Footnote-178982 -Ref: Handling links-Footnote-279219 -Node: Link abbreviations79293 -Node: Search options80972 -Ref: Search options-Footnote-182752 -Node: Custom searches82833 -Node: Remember83881 -Node: Setting up remember84868 -Node: Remember templates85450 -Ref: Remember templates-Footnote-188765 -Node: Storing notes88863 -Node: TODO items90671 -Node: TODO basics91653 -Node: TODO extensions93180 -Node: Workflow states93975 -Node: TODO types94960 -Ref: TODO types-Footnote-196618 -Node: Per file keywords96700 -Ref: Per file keywords-Footnote-198154 -Node: Priorities98355 -Node: Breaking down tasks99599 -Ref: Breaking down tasks-Footnote-1100118 -Node: Checkboxes100214 -Node: Timestamps102969 -Node: Time stamps103503 -Ref: Time stamps-Footnote-1106997 -Ref: Time stamps-Footnote-2107113 -Node: Creating timestamps107268 -Node: The date/time prompt109894 -Ref: The date/time prompt-Footnote-1111660 -Node: Custom time format111766 -Node: Repeating items113324 -Node: Progress logging115134 -Node: Closing items115780 -Ref: Closing items-Footnote-1116714 -Ref: Closing items-Footnote-2116783 -Node: Tracking TODO state changes116856 -Node: Clocking work time117712 -Ref: Clocking work time-Footnote-1121358 -Ref: Clocking work time-Footnote-2121436 -Node: Tags121562 -Node: Tag inheritance122324 -Node: Setting tags123261 -Ref: Setting tags-Footnote-1127460 -Ref: Setting tags-Footnote-2127572 -Node: Tag searches127655 -Node: Agenda views130366 -Node: Agenda files132311 -Ref: Agenda files-Footnote-1133277 -Ref: Agenda files-Footnote-2133426 -Node: Agenda dispatcher133619 -Node: Built-in agenda views135310 -Node: Weekly/Daily agenda135888 -Node: Global TODO list138017 -Node: Matching headline tags140190 -Node: Timeline141261 -Node: Stuck projects141927 -Node: Presentation and sorting143626 -Node: Categories144417 -Node: Time-of-day specifications145081 -Node: Sorting of agenda items147052 -Node: Agenda commands148334 -Node: Custom agenda views154987 -Node: Storing searches155662 -Node: Block agenda157574 -Node: Setting Options158804 -Node: Batch processing161516 -Node: Embedded LaTeX162646 -Ref: Embedded LaTeX-Footnote-1163738 -Node: Math symbols163928 -Node: Subscripts and Superscripts164693 -Node: LaTeX fragments165537 -Ref: LaTeX fragments-Footnote-1167645 -Node: Processing LaTeX fragments167907 -Node: CDLaTeX mode168853 -Ref: CDLaTeX mode-Footnote-1171337 -Node: Exporting171485 -Node: ASCII export172799 -Node: HTML export174089 -Node: Export commands174708 -Node: Quoting HTML tags175432 -Node: Links175895 -Node: Images176592 -Ref: Images-Footnote-1177463 -Node: CSS support177524 -Ref: CSS support-Footnote-1178843 -Node: XOXO export178956 -Node: iCalendar export179395 -Node: Text interpretation180498 -Node: Comment lines180977 -Node: Enhancing text181448 -Node: Export options183266 -Node: Publishing184933 -Ref: Publishing-Footnote-1185729 -Node: Configuration185925 -Node: Project alist186643 -Node: Sources and destinations187709 -Node: Selecting files188439 -Node: Publishing action189187 -Node: Publishing options190420 -Node: Publishing links192572 -Node: Project page index194085 -Node: Sample configuration194863 -Node: Simple example195355 -Node: Complex example196028 -Node: Triggering publication198104 -Node: Miscellaneous198789 -Node: Completion199423 -Node: Customization200894 -Node: In-buffer settings201477 -Node: The very busy C-c C-c key205717 -Node: Clean view207361 -Node: TTY keys209938 -Node: Interaction211547 -Node: Cooperation211944 -Node: Conflicts214684 -Node: Bugs216276 -Node: Extensions and Hacking217772 -Node: Extensions218276 -Node: Dynamic blocks220219 -Node: Special agenda views222175 -Ref: Special agenda views-Footnote-1224454 -Node: History and Acknowledgments224714 -Node: Index230218 -Node: Key Index260293 +Node: Introduction11466 +Node: Summary11881 +Node: Installation14889 +Node: Activation16267 +Node: Feedback17516 +Node: Document structure19592 +Node: Outlines20366 +Node: Headlines21026 +Node: Visibility cycling21649 +Ref: Visibility cycling-Footnote-123740 +Ref: Visibility cycling-Footnote-223798 +Ref: Visibility cycling-Footnote-323848 +Node: Motion24117 +Node: Structure editing24901 +Node: Archiving27727 +Node: ARCHIVE tag28285 +Node: Moving subtrees30078 +Node: Sparse trees31389 +Ref: Sparse trees-Footnote-133521 +Ref: Sparse trees-Footnote-233703 +Node: Plain lists33818 +Ref: Plain lists-Footnote-137343 +Ref: Plain lists-Footnote-237700 +Node: Tables37884 +Node: Built-in table editor38398 +Node: Narrow columns45394 +Ref: Narrow columns-Footnote-147326 +Node: orgtbl-mode47372 +Node: The spreadsheet48176 +Node: References48994 +Node: Formula syntax for Calc52251 +Node: Formula syntax for Lisp54568 +Node: Field formulas55796 +Node: Column formulas57107 +Node: Editing and debugging formulas58530 +Node: Updating the table61640 +Node: Advanced features62671 +Node: Hyperlinks67196 +Node: Link format67969 +Node: Internal links69262 +Ref: Internal links-Footnote-171251 +Node: Radio targets71383 +Node: CamelCase links72098 +Node: External links72692 +Node: Handling links75096 +Ref: Handling links-Footnote-180188 +Ref: Handling links-Footnote-280425 +Node: Link abbreviations80499 +Node: Search options82178 +Ref: Search options-Footnote-183958 +Node: Custom searches84039 +Node: Remember85087 +Node: Setting up remember86074 +Node: Remember templates86656 +Ref: Remember templates-Footnote-189971 +Node: Storing notes90069 +Node: TODO items91877 +Node: TODO basics92859 +Node: TODO extensions94386 +Node: Workflow states95181 +Node: TODO types96166 +Ref: TODO types-Footnote-197824 +Node: Per file keywords97906 +Ref: Per file keywords-Footnote-199360 +Node: Priorities99561 +Node: Breaking down tasks100805 +Ref: Breaking down tasks-Footnote-1101324 +Node: Checkboxes101420 +Node: Timestamps104175 +Node: Time stamps104709 +Ref: Time stamps-Footnote-1108203 +Ref: Time stamps-Footnote-2108319 +Node: Creating timestamps108474 +Node: The date/time prompt111100 +Ref: The date/time prompt-Footnote-1112866 +Node: Custom time format112972 +Node: Repeating items114530 +Node: Progress logging116340 +Node: Closing items116986 +Ref: Closing items-Footnote-1117920 +Ref: Closing items-Footnote-2117989 +Node: Tracking TODO state changes118062 +Node: Clocking work time118918 +Ref: Clocking work time-Footnote-1122564 +Ref: Clocking work time-Footnote-2122642 +Node: Tags122768 +Node: Tag inheritance123530 +Node: Setting tags124467 +Ref: Setting tags-Footnote-1128666 +Ref: Setting tags-Footnote-2128778 +Node: Tag searches128861 +Node: Agenda views131572 +Node: Agenda files133517 +Ref: Agenda files-Footnote-1134483 +Ref: Agenda files-Footnote-2134632 +Node: Agenda dispatcher134825 +Node: Built-in agenda views136516 +Node: Weekly/Daily agenda137094 +Node: Global TODO list139223 +Node: Matching headline tags141396 +Node: Timeline142467 +Node: Stuck projects143133 +Node: Presentation and sorting144832 +Node: Categories145623 +Node: Time-of-day specifications146287 +Node: Sorting of agenda items148258 +Node: Agenda commands149540 +Node: Custom agenda views156193 +Node: Storing searches156868 +Node: Block agenda158780 +Node: Setting Options160010 +Node: Batch processing162722 +Node: Embedded LaTeX163852 +Ref: Embedded LaTeX-Footnote-1164944 +Node: Math symbols165134 +Node: Subscripts and Superscripts165899 +Node: LaTeX fragments166743 +Ref: LaTeX fragments-Footnote-1168851 +Node: Processing LaTeX fragments169113 +Node: CDLaTeX mode170059 +Ref: CDLaTeX mode-Footnote-1172543 +Node: Exporting172691 +Node: ASCII export174005 +Node: HTML export175295 +Node: Export commands175914 +Node: Quoting HTML tags176638 +Node: Links177101 +Node: Images177798 +Ref: Images-Footnote-1178669 +Node: CSS support178730 +Ref: CSS support-Footnote-1180049 +Node: XOXO export180162 +Node: iCalendar export180601 +Node: Text interpretation181704 +Node: Comment lines182183 +Node: Enhancing text182654 +Node: Export options184472 +Node: Publishing186139 +Ref: Publishing-Footnote-1186935 +Node: Configuration187131 +Node: Project alist187849 +Node: Sources and destinations188915 +Node: Selecting files189645 +Node: Publishing action190393 +Node: Publishing options191626 +Node: Publishing links193778 +Node: Project page index195291 +Node: Sample configuration196069 +Node: Simple example196561 +Node: Complex example197234 +Node: Triggering publication199310 +Node: Miscellaneous199995 +Node: Completion200629 +Node: Customization202100 +Node: In-buffer settings202683 +Node: The very busy C-c C-c key206923 +Node: Clean view208567 +Node: TTY keys211144 +Node: Interaction212753 +Node: Cooperation213150 +Node: Conflicts215890 +Node: Bugs217482 +Node: Extensions and Hacking218978 +Node: Extensions219574 +Node: Tables in arbitrary syntax221521 +Node: Radio tables222596 +Ref: Radio tables-Footnote-1225128 +Node: A LaTeX example225236 +Ref: A LaTeX example-Footnote-1228852 +Ref: A LaTeX example-Footnote-2229000 +Node: Translator functions229435 +Node: Dynamic blocks230466 +Node: Special agenda views232438 +Ref: Special agenda views-Footnote-1234717 +Node: History and Acknowledgments234977 +Node: Index240766 +Node: Key Index271825  End Tag Table diff --git a/org.el b/org.el index 8512aed8d..9bface768 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.64a +;; Version: 4.65 ;; ;; This file is part of GNU Emacs. ;; @@ -83,7 +83,7 @@ ;;; Version -(defvar org-version "4.64a" +(defvar org-version "4.65" "The version number of the file org.el.") (defun org-version () (interactive) @@ -679,6 +679,33 @@ this variable requires a restart of Emacs to become effective." :group 'org-table :type 'boolean) +(defcustom orgtbl-radio-table-templates + '((latex-mode "% BEGIN RECEIVE ORGTBL %n +% END RECEIVE ORGTBL %n +\\begin{comment} +#+ORGTBL: SEND %n orgtbl-to-latex :splice nil :skip 0 +| | | +\\end{comment}\n") + (texinfo-mode "@c BEGIN RECEIVE ORGTBL %n +@c END RECEIVE ORGTBL %n +@ignore +#+ORGTBL: SEND %n orgtbl-to-html :splice nil :skip 0 +| | | +@end ignore\n") + (html-mode " + +\n")) + "Templates for radio tables in different major modes. +All occurrences of %n in a template will be replaced with the name of the +table, obtained by prompting the user." + :group 'org-table + :type '(repeat + (list (symbol :tag "Major mode") + (string :tag "Format")))) + (defgroup org-table-settings nil "Settings for tables in Org-mode." :tag "Org Table Settings" @@ -2540,7 +2567,7 @@ Otherwise the buffer will just be saved to a file and stay hidden." table { border-collapse: collapse; } td, th { vertical-align: top; - border: 1pt solid #ADB9CC; + } " "The default style specification for exported HTML files. @@ -2610,7 +2637,7 @@ This option can also be set with the +OPTIONS line, e.g. \"@:nil\"." :type 'boolean) (defcustom org-export-html-table-tag - "" + "
" "The HTML tag used to start a table. This must be a
tag, but you may change the options like borders and spacing." @@ -7945,6 +7972,10 @@ Parameters get priority." (define-key org-edit-formulas-map [(shift right)] 'org-table-edit-next-field) (define-key org-edit-formulas-map [(meta up)] 'org-table-edit-scroll-down) (define-key org-edit-formulas-map [(meta down)] 'org-table-edit-scroll) +(define-key org-edit-formulas-map [(meta tab)] 'lisp-complete-symbol) +(define-key org-edit-formulas-map "\M-\C-i" 'lisp-complete-symbol) +(define-key org-edit-formulas-map [(tab)] 'org-edit-formula-lisp-indent) +(define-key org-edit-formulas-map "\C-i" 'org-edit-formula-lisp-indent) (defvar org-pos) @@ -7965,39 +7996,45 @@ Parameters get priority." (use-local-map org-edit-formulas-map) (org-add-hook 'post-command-hook 'org-table-edit-formulas-post-command t t) (setq s "# `C-c C-c' to finish, `C-u C-c C-c' to also apply, `C-c C-q' to abort. -# `M-up/down' to scroll table, `S-up/down' to change line for column formulas\n") +# `TAB' to pretty-print Lisp expressions, `M-TAB' to complete List symbols +# `M-up/down' to scroll table, `S-up/down' to change line for column formulas\n\n") (put-text-property 0 (length s) 'face 'font-lock-comment-face s) (insert s) (while (setq entry (pop eql)) (setq s (concat (if (equal (string-to-char (car entry)) ?@) "" "$") - (car entry) "=" (cdr entry) "\n")) + (car entry) " = " (cdr entry) "\n")) (remove-text-properties 0 (length s) '(face nil) s) (insert s)) (goto-char (point-min)) (message "Edit formulas and finish with `C-c C-c'."))) (defun org-table-edit-formulas-post-command () - (let ((win (selected-window))) - (save-excursion - (condition-case nil - (org-show-reference) - (error nil)) - (select-window win)))) + (when (not (memq this-command '(lisp-complete-symbol))) + (let ((win (selected-window))) + (save-excursion + (condition-case nil + (org-show-reference) + (error nil)) + (select-window win))))) (defun org-finish-edit-formulas (&optional arg) "Parse the buffer for formula definitions and install them. With prefix ARG, apply the new formulas to the table." (interactive "P") (org-table-remove-rectangle-highlight) - (let ((pos org-pos) eql) + (let ((pos org-pos) eql var form) (setq org-pos nil) (goto-char (point-min)) (while (re-search-forward - "^\\(@[0-9]+\\$[0-9]+\\|\\$\\([a-zA-Z0-9]+\\)\\) *= *\\(.*?\\) *$" + "^\\(@[0-9]+\\$[0-9]+\\|\\$\\([a-zA-Z0-9]+\\)\\) *= *\\(.*\\(\n[ \t]+.*$\\)*\\)" nil t) - (push (cons (if (match-end 2) (match-string 2) (match-string 1)) - (match-string 3)) eql)) + (setq var (if (match-end 2) (match-string 2) (match-string 1)) + form (match-string 3)) + (setq form (org-trim form)) + (while (string-match "[ \t]*\n[ \t]*" form) + (setq form (replace-match " " t t form))) + (push (cons var form) eql)) (set-window-configuration org-window-configuration) (select-window (get-buffer-window (marker-buffer pos))) (goto-char pos) @@ -8021,6 +8058,45 @@ With prefix ARG, apply the new formulas to the table." (move-marker pos nil) (message "Formula editing aborted without installing changes"))) +(defun org-edit-formula-lisp-indent () + "Pretty-print and re-indent Lisp expressions in the Formula Editor." + (interactive) + (let ((pos (point)) beg end ind) + (beginning-of-line 1) + (cond + ((looking-at "[ \t]") + (goto-char pos) + (call-interactively 'lisp-indent-line)) + ((looking-at "[$@0-9a-zA-Z]+ *= *[^ \t\n']") (goto-char pos)) + ((not (fboundp 'pp-buffer)) + (error "Cannot pretty-print. Command `pp-buffer' is not available.")) + ((looking-at "[$@0-9a-zA-Z]+ *= *'(") + (goto-char (- (match-end 0) 2)) + (setq beg (point)) + (setq ind (make-string (current-column) ?\ )) + (condition-case nil (forward-sexp 1) + (error + (error "Cannot pretty-print Lisp expression: Unbalanced parenthesis"))) + (setq end (point)) + (save-restriction + (narrow-to-region beg end) + (if (eq last-command this-command) + (progn + (goto-char (point-min)) + (setq this-command nil) + (while (re-search-forward "[ \t]*\n[ \t]*" nil t) + (replace-match " "))) + (pp-buffer) + (untabify (point-min) (point-max)) + (goto-char (1+ (point-min))) + (while (re-search-forward "^." nil t) + (beginning-of-line 1) + (insert ind)) + (goto-char (point-max)) + (backward-delete-char 1))) + (goto-char beg)) + (t nil)))) + (defvar org-show-positions nil) (defun org-show-reference (&optional local) @@ -8132,7 +8208,7 @@ With prefix ARG, apply the new formulas to the table." (let ((min (apply 'min org-show-positions)) (max (apply 'max org-show-positions))) (when (or (not (pos-visible-in-window-p min)) - (no t(pos-visible-in-window-p max))) + (not (pos-visible-in-window-p max))) (goto-char min) (set-window-start (selected-window) (point-at-bol)) (goto-char pos)))) @@ -8283,6 +8359,14 @@ table editor in arbitrary modes.") (defvar org-old-auto-fill-inhibit-regexp nil "Local variable used by `orgtbl-mode'") +(defconst orgtbl-line-start-regexp "[ \t]*\\(|\\|#\\+\\(TBLFM\\|ORGTBL\\):\\)" + "Matches a line belonging to an orgtbl.") + +(defconst orgtbl-extra-font-lock-keywords + (list (list (concat "^" orgtbl-line-start-regexp ".*") + 0 (quote 'org-table) 'prepend)) + "Extra font-lock-keywords to be added when orgtbl-mode is active.") + ;;;###autoload (defun orgtbl-mode (&optional arg) "The `org-mode' table editor as a minor mode for use in other modes." @@ -8307,15 +8391,22 @@ table editor in arbitrary modes.") auto-fill-inhibit-regexp) (org-set-local 'auto-fill-inhibit-regexp (if auto-fill-inhibit-regexp - (concat "\\([ \t]*|\\|" auto-fill-inhibit-regexp) - "[ \t]*|")) + (concat orgtbl-line-start-regexp "\\|" + auto-fill-inhibit-regexp) + orgtbl-line-start-regexp)) (org-add-to-invisibility-spec '(org-cwidth)) + (when (fboundp 'font-lock-add-keywords) + (font-lock-add-keywords nil orgtbl-extra-font-lock-keywords) + (org-restart-font-lock)) (easy-menu-add orgtbl-mode-menu) (run-hooks 'orgtbl-mode-hook)) (setq auto-fill-inhibit-regexp org-old-auto-fill-inhibit-regexp) (org-cleanup-narrow-column-properties) (org-remove-from-invisibility-spec '(org-cwidth)) (remove-hook 'before-change-functions 'org-before-change-function t) + (when (fboundp 'font-lock-remove-keywords) + (font-lock-remove-keywords nil orgtbl-extra-font-lock-keywords) + (org-restart-font-lock)) (easy-menu-remove orgtbl-mode-menu) (force-mode-line-update 'all)))) @@ -8418,7 +8509,7 @@ to execute outside of tables." (define-key orgtbl-mode-map "\C-i" (orgtbl-make-binding 'orgtbl-tab 104 [(shift tab)])) (define-key orgtbl-mode-map "\C-c\C-c" - (orgtbl-make-binding 'org-ctrl-c-ctrl-c 105 "\C-c\C-c")) + (orgtbl-make-binding 'orgtbl-ctrl-c-ctrl-c 105 "\C-c\C-c")) (when orgtbl-optimized ;; If the user wants maximum table support, we need to hijack ;; some standard editing functions @@ -8429,6 +8520,11 @@ to execute outside of tables." (define-key orgtbl-mode-map "|" 'org-force-self-insert)) (easy-menu-define orgtbl-mode-menu orgtbl-mode-map "OrgTbl menu" '("OrgTbl" + ("Radio tables" + ["Insert radio table" orgtbl-insert-radio-table + (assq major-mode orgtbl-radio-table-templates)] + ["Comment/uncomment table" orgtbl-toggle-comment t]) ;; FIXME: only at a table + "--" ["Align" org-ctrl-c-ctrl-c :active (org-at-table-p) :keys "C-c C-c"] ["Next Field" org-cycle :active (org-at-table-p) :keys "TAB"] ["Previous Field" org-shifttab :active (org-at-table-p) :keys "S-TAB"] @@ -8476,6 +8572,18 @@ to execute outside of tables." )) t) +(defun orgtbl-ctrl-c-ctrl-c (arg) + "If the cursor is inside a table, realign the table. +It it is a table to be sent away to a receiver, do it. +With prefix arg, also recompute table." + (interactive "P") + (org-table-maybe-eval-formula) + (if arg + (call-interactively 'org-table-recalculate) + (org-table-maybe-recalculate-line)) + (call-interactively 'org-table-align) + (orgtbl-send-table 'maybe)) + (defun orgtbl-tab (arg) "Justification and field motion for `orgtbl-mode'." (interactive "P") @@ -8522,6 +8630,272 @@ overwritten, and the table is not marked as requiring realignment." (interactive "p") (self-insert-command N)) +(defvar orgtbl-exp-regexp "^\\([-+]?[0-9][0-9.]*\\)[eE]\\([-+]?[0-9]+\\)$" + "Regula expression matching exponentials as produced by calc.") + +(defvar org-table-clean-did-remove-column-1 nil) + +(defun orgtbl-send-table (&optional maybe) + "Send a tranformed version of this table to the receiver position. +With argument MAYBE, fail quietly if no transformation is defined for +this table." + (interactive) + (catch 'exit + (unless (org-at-table-p) (error "Not at a table")) + ;; when non-interactive, we assume align has just happened. + (when (interactive-p) (org-table-align)) + (save-excursion + (goto-char (org-table-begin)) + (beginning-of-line 0) + (unless (looking-at "#\\+ORGTBL: *SEND +\\([a-zA-Z0-9_]+\\) +\\([^ \t\r\n]+\\)\\( +.*\\)?") + (if maybe + (throw 'exit nil) + (error "Don't know how to transform this table.")))) + (let* ((name (match-string 1)) + i line beg + (transform (intern (match-string 2))) + (params (if (match-end 3) (read (concat "(" (match-string 3) ")")))) + (skip (plist-get params :skip)) + (skipcols (plist-get params :skipcols)) + (txt (buffer-substring-no-properties + (org-table-begin) (org-table-end))) + (lines (nthcdr (or skip 0) (org-split-string txt "[ \t]*\n[ \t]*"))) + (lines (org-table-clean-before-export lines)) + (table (mapcar + (lambda (x) + (if (string-match org-table-hline-regexp x) + 'hline + (setq line (org-split-string (org-trim x) "\\s-*|\\s-*")) + (when skipcols + ;; Remove columns that should be skipped + (setq i (if org-table-clean-did-remove-column-1 1 0) + line + (delq nil + (mapcar (lambda (x) + (if (member (setq i (1+ i)) + skipcols) nil x)) + line)))) + line)) + lines))) + + (unless (fboundp transform) + (error "No such transformation function %s" transform)) + (setq txt (funcall transform table params)) + ;; Find the insertion place + (save-excursion + (goto-char (point-min)) + (unless (re-search-forward + (concat "BEGIN RECEIVE ORGTBL +" name "\\([ \t]\\|$\\)") nil t) + (error "Don't know where to insert translated table")) + (goto-char (match-beginning 0)) + (beginning-of-line 2) + (setq beg (point)) + (unless (re-search-forward (concat "END RECEIVE ORGTBL +" name) nil t) + (error "Cannot find end of insertion region")) + (beginning-of-line 1) + (delete-region beg (point)) + (goto-char beg) + (insert txt "\n")) + (message "Table converted and installed at receiver location")))) + +(defun orgtbl-toggle-comment () + "Comment or uncomment the orgtbl at point." + (interactive) + (let* ((re1 (concat "^" (regexp-quote comment-start) orgtbl-line-start-regexp)) + (re2 (concat "^" orgtbl-line-start-regexp)) + (commented (save-excursion (beginning-of-line 1) + (cond ((looking-at re1) t) + ((looking-at re2) nil) + (t (error "Not at an org table"))))) + (re (if commented re1 re2)) + beg end) + (save-excursion + (beginning-of-line 1) + (while (looking-at re) (beginning-of-line 0)) + (beginning-of-line 2) + (setq beg (point)) + (while (looking-at re) (beginning-of-line 2)) + (setq end (point))) + (comment-region beg end (if commented '(4) nil)))) + +(defun orgtbl-insert-radio-table () + "Insert a radio table template appropriate for this major mode." + (interactive) + (let* ((e (assq major-mode orgtbl-radio-table-templates)) + (txt (nth 1 e)) + name pos) + (unless e (error "No radio table setup defined for %s" major-mode)) + (setq name (read-string "Table name: ")) + (while (string-match "%n" txt) + (setq txt (replace-match name t t txt))) + (or (bolp) (insert "\n")) + (setq pos (point)) + (insert txt) + (goto-char pos))) + +(defun orgtbl-to-latex (table params) + "Convert the orgtbl-mode TABLE to LaTeX. +TABLE is a list, each entry either the symbol `hline' for a horizontal +separator line, or a list of fields for that line. +PARAMS is a property list of parameters that can influence the conversion. +Valid parameters are + +:splice nil/t When set to t, return only table body lines, don't wrap + them into a tabular environment. Default is nil. + +:fmt fmt A format to be used to wrap the field, should contain + %s for the original field value. For example, to wrap + everything in dollars, you could use :fmt \"$%s$\". + This may also be a property list with column numbers and + formats. for example :fmt (2 \"$%s$\" 4 \"%s%%\") + +:efmt efmt Use this format to print numbers with exponentials. + The format should have %s twice for inserting mantissa + and exponent, for example \"%s\\\\times10^{%s}\". Default + is \"%s\\\\,(%s)\". This may also be a property list + with column numbers and formats. + +In addition to this, a number of standard parameters are always handled +directly by `orgtbl-send-table'. See manual." + (interactive) + (let* ((splicep (plist-get params :splice)) ; do we need table header? + (fmt (plist-get params :fmt)) ; General format + (efmt (plist-get params :efmt)) ; Format for numbers with exp + rtn ; list collecting converted lines + alignment line i fm efm) + + ;; First check if we need to put the tabular environment ourselves + (unless splicep + ;; yes, we do + (setq alignment (mapconcat (lambda (x) (if x "r" "l")) + org-table-last-alignment "")) + (push (concat "\\begin{tabular}{" alignment "}") rtn)) + + ;; Now loop over all lines + (while (setq line (pop table)) + (if (eq line 'hline) + ;; A horizontal separator line + (push "\\hline" rtn) + ;; A normal line. Convert the fields, push line onto the result list + (setq i 0) ; counter for column, to access column-specific settings + (push + (concat + (mapconcat + (lambda (f) + ;; First get the settings that apply here. + (setq i (1+ i) + fm (if (stringp fmt) fmt (or (plist-get fmt i) "%s")) + efm (if (stringp efmt) efmt (or (plist-get efmt i) + "%s\\,(%s)"))) + (if (string-match orgtbl-exp-regexp f) + ;; exponential, format accordingly + (setq f (format efm (match-string 1 f) (match-string 2 f)))) + ;; Apply standard format + (format fm f)) + line + " & ") ; Field separator + "\\\\") ; Line separator + rtn))) + + ;; Close the tabular environment? + (unless splicep (push "\\end{tabular}" rtn)) + + ;; Concatenate the lines, to return a single block of text + (mapconcat 'identity (nreverse rtn) "\n"))) + +(defun orgtbl-to-html (table params) + "Convert the orgtbl-mode TABLE to LaTeX. +TABLE is a list, each entry either the symbol `hline' for a horizontal +separator line, or a list of fields for that line. +PARAMS is a property list of parameters that can influence the conversion. +Currently this function recognizes the following parameters: + +:splice nil/t When set to t, return only table body lines, don't wrap + them into a
environment. Default is nil. + +A number of standard parameters are always handled directly by +`orgtbl-send-table'. See manual." + (interactive) + (let* ((splicep (plist-get params :splice)) + html) + ;; Just call the formatter we already have + ;; We need to make text lines for it, so put the fields back together. + (setq html (org-format-org-table-html + (mapcar + (lambda (x) + (if (eq x 'hline) + "|----+----|" + (concat "| " (mapconcat 'identity x " | ") " |"))) + table) + splicep)) + (if (string-match "\n+\\'" html) + (setq html (replace-match "" t t html))) + html)) + +(defun orgtbl-to-texinfo (table params) + "Convert the orgtbl-mode TABLE to TeXInfo. +TABLE is a list, each entry either the symbol `hline' for a horizontal +separator line, or a list of fields for that line. +PARAMS is a property list of parameters that can influence the conversion. +Valid parameters are + +:splice nil/t When set to t, return only table body lines, don't wrap + them into a multitable environment. Default is nil. + +:fmt fmt A format to be used to wrap the field, should contain + %s for the original field value. For example, to wrap + everything in @kbd{}, you could use :fmt \"@kbd{%s}\". + This may also be a property list with column numbers and + formats. for example :fmt (2 \"@kbd{%s}\" 4 \"@code{%s}\"). + +:cf \"f1 f2..\" The column fractions for the table. Bye default these + are computed automatically from the width of the columns + under org-mode. + +Furthermore, a number of standard parameters are always handled directly +by `orgtbl-send-table'. See manual." + (interactive) + (let* ((splicep (plist-get params :splice)) ; do we need table header? + (fmt (plist-get params :fmt)) ; General format + (colfrac (plist-get params :cf)) ; Column fractions + rtn ; list collecting converted lines + total line head i fm) + + (if (and (not splicep) (listp (car table)) (eq 'hline (nth 1 table))) + (setq head t)) + + ;; First check if we need to put the multitable environment ourselves + (unless splicep + (unless colfrac + (setq total (float (apply '+ org-table-last-column-widths)) + colfrac (mapconcat + (lambda (x) (format "%.3f" (/ (float x) total))) + org-table-last-column-widths " "))) + (push (concat "@multitable @columnfractions " colfrac) rtn)) + + ;; Loop over all lines + (while (setq line (pop table)) + (if (eq line 'hline) + ;; A horizontal separator line - TeXinfo cannot handle this + nil + ;; A normal line. Convert the fields, push line onto the result list + (setq i 0) ; counter for column, to access column-specific settings + (push + (concat + (if head (progn (setq head nil) "@headitem ") "@item ") + (mapconcat + (lambda (f) + ;; First get the settings that apply here. + (setq i (1+ i) + fm (if (stringp fmt) fmt (or (plist-get fmt i) "%s"))) + (format fm f)) + line + " @tab ") ; Field separator + "") + rtn))) + (unless splicep (push "@end multitable" rtn)) + (mapconcat 'identity (nreverse rtn) "\n"))) + ;;;; Link Stuff ;;; Link abbreviations @@ -10047,7 +10421,7 @@ to be run from that hook to fucntion properly." (or headline "")))) (insert tpl) (goto-char (point-min)) ;; Simple %-escapes - (while (re-search-forward "%\\([tTuTai]\\)" nil t) + (while (re-search-forward "%\\([tTuUai]\\)" nil t) (when (and initial (equal (match-string 0) "%i")) (save-match-data (let* ((lead (buffer-substring @@ -10098,7 +10472,7 @@ to be run from that hook to fucntion properly." ;;;###autoload (defun org-remember () "Call `remember'. If this is already a remember buffer, re-apply template. -If there is an active region, amke sure remember uses it as initial content +If there is an active region, make sure remember uses it as initial content of the remember buffer." (interactive) (if (eq org-finish-function 'remember-buffer) @@ -11028,7 +11402,7 @@ are included in the output." (goto-char lspos) (setq marker (org-agenda-new-marker)) (org-add-props txt props - 'org-marker marker 'org-hd-marker marker 'category category) + 'org-marker marker 'org-hd-marker marker 'org-category category) (push txt rtn)) ;; if we are to skip sublevels, jump to end of subtree (or org-tags-match-list-sublevels (org-end-of-subtree t)))))) @@ -12487,7 +12861,8 @@ The following commands are available: ;; Make sure properties are removed when copying text (when (boundp 'buffer-substring-filters) (org-set-local 'buffer-substring-filters - (cons (lambda (x) (set-text-properties 0 (length x) nil x) x) + (cons (lambda (x) + (set-text-properties 0 (length x) nil x) x) buffer-substring-filters))) (unless org-agenda-keep-modes (setq org-agenda-follow-mode org-agenda-start-with-follow-mode @@ -14022,7 +14397,7 @@ the documentation of `org-diary'." 1))) (org-add-props txt props 'org-marker marker 'org-hd-marker marker - 'priority priority 'category category) + 'priority priority 'org-category category) (push txt ee) (if org-agenda-todo-list-sublevels (goto-char (match-end 1)) @@ -14091,13 +14466,13 @@ the documentation of `org-diary'." (org-add-props txt nil 'face (if donep 'org-done 'org-warning) 'undone-face 'org-warning 'done-face 'org-done - 'category category 'priority (+ 100 priority)) + 'org-category category 'priority (+ 100 priority)) (if scheduledp (org-add-props txt nil 'face 'org-scheduled-today 'undone-face 'org-scheduled-today 'done-face 'org-done - 'category category 'priority (+ 99 priority)) - (org-add-props txt nil 'priority priority 'category category))) + 'org-category category 'priority (+ 99 priority)) + (org-add-props txt nil 'priority priority 'org-category category))) (push txt ee)) (outline-next-heading))) (nreverse ee))) @@ -14148,7 +14523,7 @@ the documentation of `org-diary'." (setq priority 100000) (org-add-props txt props 'org-marker marker 'org-hd-marker hdmarker 'face 'org-done - 'priority priority 'category category + 'priority priority 'org-category category 'undone-face 'org-warning 'done-face 'org-done) (push txt ee)) (outline-next-heading))) @@ -14204,7 +14579,7 @@ the documentation of `org-diary'." 'org-marker (org-agenda-new-marker pos) 'org-hd-marker (org-agenda-new-marker pos1) 'priority (+ (- 10 diff) (org-get-priority txt)) - 'category category + 'org-category category 'face face 'undone-face face 'done-face 'org-done) (push txt ee)))))) ee)) @@ -14257,7 +14632,7 @@ the documentation of `org-diary'." 'org-marker (org-agenda-new-marker pos) 'org-hd-marker (org-agenda-new-marker pos1) 'priority (+ (- 5 diff) (org-get-priority txt)) - 'category category) + 'org-category category) (push txt ee)))))) ee)) @@ -14303,7 +14678,7 @@ the documentation of `org-diary'." (setq txt org-agenda-no-heading-message)) (org-add-props txt props 'org-marker marker 'org-hd-marker hdmarker - 'priority (org-get-priority txt) 'category category) + 'priority (org-get-priority txt) 'org-category category) (push txt ee))) (goto-char pos))) ;; Sort the entries by expiration date. @@ -14420,7 +14795,7 @@ only the correctly processes TXT should be returned - this is used by ;; And finally add the text properties (org-add-props rtn nil - 'category (downcase category) 'tags tags + 'org-category (downcase category) 'tags tags 'prefix-length (- (length rtn) (length txt)) 'time-of-day time-of-day 'dotime dotime)))) @@ -15084,7 +15459,7 @@ the new TODO state." (equal m hdmarker)) (setq props (text-properties-at (point)) dotime (get-text-property (point) 'dotime) - cat (get-text-property (point) 'category) + cat (get-text-property (point) 'org-category) tags (get-text-property (point) 'tags) new (org-format-agenda-item "x" newhead cat tags dotime 'noprefix) pl (get-text-property (point) 'prefix-length) @@ -15111,6 +15486,8 @@ the new TODO state." (beginning-of-line 0))) (org-finalize-agenda))) +;; FIXME: allow negative value for org-agenda-align-tags-to-column +;; See the code in set-tags for the way to do this. (defun org-agenda-align-tags (&optional line) "Align all tags in agenda items to `org-agenda-align-tags-to-column'." (let ((buffer-read-only)) @@ -17415,8 +17792,9 @@ lang=\"%s\" xml:lang=\"%s\"> ;; Need to use the code generator in table.el, with the original text. (org-format-table-table-html-using-table-generate-source olines))))) -(defun org-format-org-table-html (lines) +(defun org-format-org-table-html (lines &optional splice) "Format a table into HTML." + ;; Get rid of hlines at beginning and end (if (string-match "^[ \t]*|-" (car lines)) (setq lines (cdr lines))) (setq lines (nreverse lines)) (if (string-match "^[ \t]*|-" (car lines)) (setq lines (cdr lines))) @@ -17424,52 +17802,84 @@ lang=\"%s\" xml:lang=\"%s\"> (when org-export-table-remove-special-lines ;; Check if the table has a marking column. If yes remove the ;; column and the special lines - (let* ((special - (not - (memq nil - (mapcar - (lambda (x) - (or (string-match "^[ \t]*|-" x) - (string-match "^[ \t]*| *\\([#!$*_^ ]\\) *|" x))) - lines))))) - (if special - (setq lines - (delq nil - (mapcar - (lambda (x) - (if (string-match "^[ \t]*| *[!_^] *|" x) - nil ; ignore this line - (and (or (string-match "^[ \t]*|-+\\+" x) - (string-match "^[ \t]*|[^|]*|" x)) - (replace-match "|" t t x)))) - lines)))))) + (setq lines (org-table-clean-before-export lines))) (let ((head (and org-export-highlight-first-table-line (delq nil (mapcar (lambda (x) (string-match "^[ \t]*|-" x)) (cdr lines))))) - line fields html) - (setq html (concat org-export-html-table-tag "\n")) + (nlines 0) fnum i align al2 + tbopen line fields html) + (if splice (setq head nil)) + (unless splice (push (if head "" "") html)) + (setq tbopen t) (while (setq line (pop lines)) (catch 'next-line (if (string-match "^[ \t]*|-" line) (progn + (unless splice + (push (if head "" "") html) + (if lines (push "" html) (setq tbopen nil))) (setq head nil) ;; head ends here, first time around ;; ignore this line (throw 'next-line t))) ;; Break the line into fields (setq fields (org-split-string line "[ \t]*|[ \t]*")) - (setq html (concat - html - "" - (mapconcat (lambda (x) - (if head - (concat "") - (concat ""))) - fields "") - "\n")))) - (setq html (concat html "
" x "" x "
\n")) - html)) + (unless fnum (setq fnum (make-vector (length fields) 0))) + (setq nlines (1+ nlines) i -1) + (push (concat "" + (mapconcat + (lambda (x) + (setq i (1+ i)) + (if (and (< i nlines) + (string-match org-table-number-regexp x)) + (incf (aref fnum i))) + (if head + (concat "" x "") + (concat "" x ""))) + fields "") + "") + html))) + (unless splice (if tbopen (push "" html))) + (unless splice (push "\n" html)) + (setq html (nreverse html)) + (unless splice + (setq align (mapcar + (lambda (x) + (if (> (/ (float x) nlines) org-table-number-fraction) + "right" "left")) + fnum)) + ;; Put in COL tags with the alignment (unfortuntely often ignored...) + (push (mapconcat + (lambda (x) + (format "" + (if (> (/ (float x) nlines) org-table-number-fraction) + "right" "left"))) + fnum "") + html) + (push org-export-html-table-tag html)) + (concat (mapconcat 'identity html "\n") "\n"))) + +(defun org-table-clean-before-export (lines) + "Check if the table has a marking column. +If yes remove the column and the special lines." + (if (memq nil + (mapcar + (lambda (x) (or (string-match "^[ \t]*|-" x) + (string-match "^[ \t]*| *\\([#!$*_^ /]\\) *|" x))) + lines)) + (progn + (setq org-table-clean-did-remove-column-1 nil) + lines) + (setq org-table-clean-did-remove-column-1 t) + (delq nil + (mapcar + (lambda (x) (if (string-match "^[ \t]*| *[!_^/] *|" x) + nil ; ignore this line + (and (or (string-match "^[ \t]*|-+\\+" x) + (string-match "^[ \t]*|[^|]*|" x)) + (replace-match "|" t t x)))) + lines)))) (defun org-fake-empty-table-line (line) "Replace everything except \"|\" with spaces." @@ -19314,6 +19724,7 @@ This function should be run in the `org-after-todo-state-change-hook'." (setq org-log-post-message msg) (message msg)))) + ;;;; Finish up (provide 'org) diff --git a/org.pdf b/org.pdf index a2b991d06cef6dda13c013b97b124a2f37bb2b7e..6e696f0c781c75c560e7faab43bbc62890063d28 100644 GIT binary patch delta 341700 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