Ver código fonte

Release 4.77

Carsten Dominik 17 anos atrás
pai
commit
a096d004d7
7 arquivos alterados com 502 adições e 298 exclusões
  1. 239 202
      org
  2. 208 78
      org.el
  3. BIN
      org.pdf
  4. 41 4
      org.texi
  5. BIN
      orgcard.pdf
  6. 1 1
      orgcard.tex
  7. 13 13
      xemacs/noutline.el

+ 239 - 202
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.76).
+   This manual is for Org-mode (version 4.77).
 
    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.76).
+This manual is for Org-mode (version 4.77).
 
    Copyright (C) 2004, 2005, 2006, 2007 Free Software Foundation
 
@@ -91,6 +91,7 @@ Tables
 
 * Built-in table editor::       Simple tables
 * Narrow columns::              Stop wasting space in tables
+* Column groups::               Grouping to trigger vertical lines
 * orgtbl-mode::                 The table editor as minor mode
 * The spreadsheet::             The table editor has spreadsheet capabilities.
 
@@ -982,6 +983,7 @@ Emacs `calc' package.
 
 * Built-in table editor::       Simple tables
 * Narrow columns::              Stop wasting space in tables
+* Column groups::               Grouping to trigger vertical lines
 * orgtbl-mode::                 The table editor as minor mode
 * The spreadsheet::             The table editor has spreadsheet capabilities.
 
@@ -1180,7 +1182,7 @@ Then the only table command that still works is `C-c C-c' to do a
 manual re-align.
 
 
-File: org,  Node: Narrow columns,  Next: orgtbl-mode,  Prev: Built-in table editor,  Up: Tables
+File: org,  Node: Narrow columns,  Next: Column groups,  Prev: Built-in table editor,  Up: Tables
 
 3.2 Narrow columns
 ==================
@@ -1223,9 +1225,42 @@ a per-file basis with:
    (1) This feature does not work on XEmacs.
 
 
-File: org,  Node: orgtbl-mode,  Next: The spreadsheet,  Prev: Narrow columns,  Up: Tables
+File: org,  Node: Column groups,  Next: orgtbl-mode,  Prev: Narrow columns,  Up: Tables
 
-3.3 The Orgtbl minor mode
+3.3 Column groups
+=================
+
+When Org-mode exports tables, it does so by default without vertical
+lines because that is visually more satisfying in general.  Occasionally
+however, vertical lines can be useful to structure a table into groups
+of columns, much like horizontal lines can do for groups of rows.  In
+order to specify column groups, you can use a special row where the
+first field contains only `/'.  The further fields can either contain
+`<' to indicate that this column should start a group, `>' to indicate
+the end of a column, or `<>' to make a column a group of its own.
+Boundaries between colum groups will upon export be marked with
+vertical lines.  Here is an example:
+
+     |   |  N | N^2 | N^3 | N^4 | sqrt(n) | sqrt[4](N) |
+     |---+----+-----+-----+-----+---------+------------|
+     | / | <> |   < |     |   > |       < |          > |
+     | # |  1 |   1 |   1 |   1 |       1 |          1 |
+     | # |  2 |   4 |   8 |  16 |  1.4142 |     1.1892 |
+     | # |  3 |   9 |  27 |  81 |  1.7321 |     1.3161 |
+     |---+----+-----+-----+-----+---------+------------|
+     #+TBLFM: $3=$2^2::$4=$2^3::$5=$2^4::$6=sqrt($2)::$7=sqrt(sqrt(($2))
+
+   It is also sufficient to just insert the colum group starters after
+every vertical line you'd like to have:
+
+     |  N | N^2 | N^3 | N^4 | sqrt(n) | sqrt[4](N) |
+     |----+-----+-----+-----+---------+------------|
+     | /  | <   |     |     | <       |            |
+
+
+File: org,  Node: orgtbl-mode,  Next: The spreadsheet,  Prev: Column groups,  Up: Tables
+
+3.4 The Orgtbl minor mode
 =========================
 
 If you like the intuitive way the Org-mode table editor works, you
@@ -1245,7 +1280,7 @@ Orgtbl-mode, including spreadsheet capabilities.  For details, see
 
 File: org,  Node: The spreadsheet,  Prev: orgtbl-mode,  Up: Tables
 
-3.4 The spreadsheet
+3.5 The spreadsheet
 ===================
 
 The table editor makes use of the Emacs `calc' package to implement
@@ -1270,7 +1305,7 @@ to each relevant field.
 
 File: org,  Node: References,  Next: Formula syntax for Calc,  Prev: The spreadsheet,  Up: The spreadsheet
 
-3.4.1 References
+3.5.1 References
 ----------------
 
 To compute fields in the table from other fields, formulas must
@@ -1370,7 +1405,7 @@ current buffer.
 
 File: org,  Node: Formula syntax for Calc,  Next: Formula syntax for Lisp,  Prev: References,  Up: The spreadsheet
 
-3.4.2 Formula syntax for Calc
+3.5.2 Formula syntax for Calc
 -----------------------------
 
 A formula can be any algebraic expression understood by the Emacs
@@ -1419,7 +1454,7 @@ the final result.  A few examples:
 
 File: org,  Node: Formula syntax for Lisp,  Next: Field formulas,  Prev: Formula syntax for Calc,  Up: The spreadsheet
 
-3.4.3 Emacs Lisp forms as formulas
+3.5.3 Emacs Lisp forms as formulas
 ----------------------------------
 
 It is also possible to write a formula in Emacs Lisp; this can be useful
@@ -1445,7 +1480,7 @@ in lisp.
 
 File: org,  Node: Field formulas,  Next: Column formulas,  Prev: Formula syntax for Lisp,  Up: The spreadsheet
 
-3.4.4 Field formulas
+3.5.4 Field formulas
 --------------------
 
 To assign a formula to a particular field, type it directly into the
@@ -1474,7 +1509,7 @@ following command
 
 File: org,  Node: Column formulas,  Next: Editing and debugging formulas,  Prev: Field formulas,  Up: The spreadsheet
 
-3.4.5 Column formulas
+3.5.5 Column formulas
 ---------------------
 
 Often in a table, the same formula should be used for all fields in a
@@ -1508,7 +1543,7 @@ following command:
 
 File: org,  Node: Editing and debugging formulas,  Next: Updating the table,  Prev: Column formulas,  Up: The spreadsheet
 
-3.4.6 Editing and Debugging formulas
+3.5.6 Editing and Debugging formulas
 ------------------------------------
 
 You can edit individual formulas in the minibuffer or directly in the
@@ -1612,7 +1647,7 @@ information will be displayed.
 
 File: org,  Node: Updating the table,  Next: Advanced features,  Prev: Editing and debugging formulas,  Up: The spreadsheet
 
-3.4.7 Updating the Table
+3.5.7 Updating the Table
 ------------------------
 
 Recalculation of a table is normally not automatic, but needs to be
@@ -1641,7 +1676,7 @@ the following commands:
 
 File: org,  Node: Advanced features,  Prev: Updating the table,  Up: The spreadsheet
 
-3.4.8 Advanced features
+3.5.8 Advanced features
 -----------------------
 
 If you want the recalculation of fields to happen automatically, or if
@@ -6669,6 +6704,7 @@ Index
 * global TODO list:                      Global TODO list.    (line   6)
 * global visibility states:              Visibility cycling.  (line  22)
 * GNUS links:                            External links.      (line   6)
+* grouping columns in tables:            Column groups.       (line   6)
 * hand-formatted lists:                  Enhancing text.      (line  11)
 * headline levels:                       Export options.      (line  25)
 * headline levels, for exporting <1>:    Export commands.     (line  34)
@@ -7289,193 +7325,194 @@ Key Index
 
 Tag Table:
 Node: Top970
-Node: Introduction11676
-Node: Summary12091
-Node: Installation15100
-Node: Activation16478
-Node: Feedback17727
-Node: Document structure19803
-Node: Outlines20577
-Node: Headlines21237
-Ref: Headlines-Footnote-122245
-Node: Visibility cycling22344
-Ref: Visibility cycling-Footnote-124554
-Ref: Visibility cycling-Footnote-224612
-Ref: Visibility cycling-Footnote-324662
-Node: Motion24932
-Node: Structure editing25886
-Node: Archiving28712
-Node: ARCHIVE tag29270
-Node: Moving subtrees31063
-Node: Sparse trees32374
-Ref: Sparse trees-Footnote-134506
-Ref: Sparse trees-Footnote-234688
-Node: Plain lists34803
-Ref: Plain lists-Footnote-138572
-Ref: Plain lists-Footnote-238930
-Node: Tables39114
-Node: Built-in table editor39628
-Node: Narrow columns46867
-Ref: Narrow columns-Footnote-148800
-Node: orgtbl-mode48846
-Node: The spreadsheet49650
-Node: References50737
-Ref: References-Footnote-154866
-Node: Formula syntax for Calc55155
-Node: Formula syntax for Lisp57612
-Node: Field formulas58881
-Node: Column formulas60189
-Node: Editing and debugging formulas61788
-Node: Updating the table65941
-Node: Advanced features66976
-Node: Hyperlinks71501
-Node: Link format72274
-Node: Internal links73567
-Ref: Internal links-Footnote-175492
-Node: Radio targets75624
-Node: External links76315
-Node: Handling links78719
-Ref: Handling links-Footnote-184006
-Ref: Handling links-Footnote-284243
-Node: Link abbreviations84317
-Node: Search options85996
-Ref: Search options-Footnote-187776
-Node: Custom searches87857
-Node: Remember88905
-Node: Setting up remember89892
-Node: Remember templates90474
-Ref: Remember templates-Footnote-193766
-Node: Storing notes93864
-Node: TODO items95751
-Node: TODO basics96734
-Node: TODO extensions98431
-Node: Workflow states99250
-Ref: Workflow states-Footnote-1100425
-Node: TODO types100518
-Ref: TODO types-Footnote-1102101
-Node: Multiple sets in one file102183
-Node: Per file keywords103794
-Ref: Per file keywords-Footnote-1105083
-Node: Priorities105284
-Node: Breaking down tasks106894
-Ref: Breaking down tasks-Footnote-1107414
-Node: Checkboxes107510
-Node: Timestamps110265
-Node: Time stamps110706
-Ref: Time stamps-Footnote-1113011
-Node: Creating timestamps113127
-Node: The date/time prompt115201
-Ref: The date/time prompt-Footnote-1117189
-Node: Custom time format117295
-Node: Deadlines and scheduling118843
-Ref: Deadlines and scheduling-Footnote-1120193
-Node: Inserting deadline/schedule120348
-Node: Repeated tasks121286
-Node: Progress logging122925
-Node: Closing items123580
-Ref: Closing items-Footnote-1124514
-Ref: Closing items-Footnote-2124583
-Node: Tracking TODO state changes124656
-Node: Clocking work time125512
-Ref: Clocking work time-Footnote-1129158
-Ref: Clocking work time-Footnote-2129236
-Node: Tags129362
-Node: Tag inheritance130124
-Node: Setting tags131061
-Ref: Setting tags-Footnote-1135584
-Ref: Setting tags-Footnote-2135696
-Node: Tag searches135779
-Node: Agenda views138490
-Node: Agenda files140435
-Ref: Agenda files-Footnote-1141401
-Ref: Agenda files-Footnote-2141550
-Node: Agenda dispatcher141743
-Node: Built-in agenda views143434
-Node: Weekly/Daily agenda144012
-Node: Global TODO list146953
-Node: Matching headline tags149225
-Node: Timeline150296
-Node: Stuck projects150962
-Node: Presentation and sorting152813
-Node: Categories153604
-Node: Time-of-day specifications154268
-Node: Sorting of agenda items156239
-Node: Agenda commands157521
-Node: Custom agenda views164675
-Node: Storing searches165394
-Node: Block agenda167306
-Node: Setting Options168536
-Node: Exporting Agenda Views171275
-Ref: Exporting Agenda Views-Footnote-1175559
-Ref: Exporting Agenda Views-Footnote-2175616
-Node: Extracting Agenda Information for other programs175802
-Node: Embedded LaTeX179928
-Ref: Embedded LaTeX-Footnote-1181020
-Node: Math symbols181210
-Node: Subscripts and Superscripts181975
-Node: LaTeX fragments182819
-Ref: LaTeX fragments-Footnote-1185053
-Node: Processing LaTeX fragments185315
-Node: CDLaTeX mode186261
-Ref: CDLaTeX mode-Footnote-1188745
-Node: Exporting188893
-Node: ASCII export190207
-Node: HTML export191497
-Node: Export commands192116
-Node: Quoting HTML tags193360
-Node: Links193990
-Node: Images194687
-Ref: Images-Footnote-1195558
-Node: CSS support195619
-Ref: CSS support-Footnote-1196938
-Node: XOXO export197051
-Node: iCalendar export197490
-Node: Text interpretation198709
-Node: Comment lines199300
-Node: Initial text199695
-Node: Footnotes201364
-Node: Enhancing text202179
-Ref: Enhancing text-Footnote-1204038
-Node: Export options204128
-Node: Publishing206021
-Ref: Publishing-Footnote-1206817
-Node: Configuration207013
-Node: Project alist207731
-Node: Sources and destinations208797
-Node: Selecting files209527
-Node: Publishing action210275
-Node: Publishing options211508
-Node: Publishing links213660
-Node: Project page index215173
-Node: Sample configuration215951
-Node: Simple example216443
-Node: Complex example217116
-Node: Triggering publication219192
-Node: Miscellaneous219877
-Node: Completion220511
-Node: Customization221982
-Node: In-buffer settings222565
-Node: The very busy C-c C-c key227441
-Node: Clean view229085
-Node: TTY keys231662
-Node: Interaction233272
-Node: Cooperation233669
-Node: Conflicts236545
-Node: Bugs238548
-Node: Extensions and Hacking240044
-Node: Extensions240640
-Node: Tables in arbitrary syntax242587
-Node: Radio tables243664
-Node: A LaTeX example246167
-Ref: A LaTeX example-Footnote-1249813
-Ref: A LaTeX example-Footnote-2249961
-Node: Translator functions250396
-Ref: Translator functions-Footnote-1253505
-Node: Dynamic blocks253593
-Node: Special agenda views255565
-Ref: Special agenda views-Footnote-1257844
-Node: History and Acknowledgments258104
-Node: Index264198
-Node: Key Index296279
+Node: Introduction11743
+Node: Summary12158
+Node: Installation15167
+Node: Activation16545
+Node: Feedback17794
+Node: Document structure19870
+Node: Outlines20644
+Node: Headlines21304
+Ref: Headlines-Footnote-122312
+Node: Visibility cycling22411
+Ref: Visibility cycling-Footnote-124621
+Ref: Visibility cycling-Footnote-224679
+Ref: Visibility cycling-Footnote-324729
+Node: Motion24999
+Node: Structure editing25953
+Node: Archiving28779
+Node: ARCHIVE tag29337
+Node: Moving subtrees31130
+Node: Sparse trees32441
+Ref: Sparse trees-Footnote-134573
+Ref: Sparse trees-Footnote-234755
+Node: Plain lists34870
+Ref: Plain lists-Footnote-138639
+Ref: Plain lists-Footnote-238997
+Node: Tables39181
+Node: Built-in table editor39762
+Node: Narrow columns47001
+Ref: Narrow columns-Footnote-148936
+Node: Column groups48982
+Node: orgtbl-mode50515
+Node: The spreadsheet51318
+Node: References52405
+Ref: References-Footnote-156534
+Node: Formula syntax for Calc56823
+Node: Formula syntax for Lisp59280
+Node: Field formulas60549
+Node: Column formulas61857
+Node: Editing and debugging formulas63456
+Node: Updating the table67609
+Node: Advanced features68644
+Node: Hyperlinks73169
+Node: Link format73942
+Node: Internal links75235
+Ref: Internal links-Footnote-177160
+Node: Radio targets77292
+Node: External links77983
+Node: Handling links80387
+Ref: Handling links-Footnote-185674
+Ref: Handling links-Footnote-285911
+Node: Link abbreviations85985
+Node: Search options87664
+Ref: Search options-Footnote-189444
+Node: Custom searches89525
+Node: Remember90573
+Node: Setting up remember91560
+Node: Remember templates92142
+Ref: Remember templates-Footnote-195434
+Node: Storing notes95532
+Node: TODO items97419
+Node: TODO basics98402
+Node: TODO extensions100099
+Node: Workflow states100918
+Ref: Workflow states-Footnote-1102093
+Node: TODO types102186
+Ref: TODO types-Footnote-1103769
+Node: Multiple sets in one file103851
+Node: Per file keywords105462
+Ref: Per file keywords-Footnote-1106751
+Node: Priorities106952
+Node: Breaking down tasks108562
+Ref: Breaking down tasks-Footnote-1109082
+Node: Checkboxes109178
+Node: Timestamps111933
+Node: Time stamps112374
+Ref: Time stamps-Footnote-1114679
+Node: Creating timestamps114795
+Node: The date/time prompt116869
+Ref: The date/time prompt-Footnote-1118857
+Node: Custom time format118963
+Node: Deadlines and scheduling120511
+Ref: Deadlines and scheduling-Footnote-1121861
+Node: Inserting deadline/schedule122016
+Node: Repeated tasks122954
+Node: Progress logging124593
+Node: Closing items125248
+Ref: Closing items-Footnote-1126182
+Ref: Closing items-Footnote-2126251
+Node: Tracking TODO state changes126324
+Node: Clocking work time127180
+Ref: Clocking work time-Footnote-1130826
+Ref: Clocking work time-Footnote-2130904
+Node: Tags131030
+Node: Tag inheritance131792
+Node: Setting tags132729
+Ref: Setting tags-Footnote-1137252
+Ref: Setting tags-Footnote-2137364
+Node: Tag searches137447
+Node: Agenda views140158
+Node: Agenda files142103
+Ref: Agenda files-Footnote-1143069
+Ref: Agenda files-Footnote-2143218
+Node: Agenda dispatcher143411
+Node: Built-in agenda views145102
+Node: Weekly/Daily agenda145680
+Node: Global TODO list148621
+Node: Matching headline tags150893
+Node: Timeline151964
+Node: Stuck projects152630
+Node: Presentation and sorting154481
+Node: Categories155272
+Node: Time-of-day specifications155936
+Node: Sorting of agenda items157907
+Node: Agenda commands159189
+Node: Custom agenda views166343
+Node: Storing searches167062
+Node: Block agenda168974
+Node: Setting Options170204
+Node: Exporting Agenda Views172943
+Ref: Exporting Agenda Views-Footnote-1177227
+Ref: Exporting Agenda Views-Footnote-2177284
+Node: Extracting Agenda Information for other programs177470
+Node: Embedded LaTeX181596
+Ref: Embedded LaTeX-Footnote-1182688
+Node: Math symbols182878
+Node: Subscripts and Superscripts183643
+Node: LaTeX fragments184487
+Ref: LaTeX fragments-Footnote-1186721
+Node: Processing LaTeX fragments186983
+Node: CDLaTeX mode187929
+Ref: CDLaTeX mode-Footnote-1190413
+Node: Exporting190561
+Node: ASCII export191875
+Node: HTML export193165
+Node: Export commands193784
+Node: Quoting HTML tags195028
+Node: Links195658
+Node: Images196355
+Ref: Images-Footnote-1197226
+Node: CSS support197287
+Ref: CSS support-Footnote-1198606
+Node: XOXO export198719
+Node: iCalendar export199158
+Node: Text interpretation200377
+Node: Comment lines200968
+Node: Initial text201363
+Node: Footnotes203032
+Node: Enhancing text203847
+Ref: Enhancing text-Footnote-1205706
+Node: Export options205796
+Node: Publishing207689
+Ref: Publishing-Footnote-1208485
+Node: Configuration208681
+Node: Project alist209399
+Node: Sources and destinations210465
+Node: Selecting files211195
+Node: Publishing action211943
+Node: Publishing options213176
+Node: Publishing links215328
+Node: Project page index216841
+Node: Sample configuration217619
+Node: Simple example218111
+Node: Complex example218784
+Node: Triggering publication220860
+Node: Miscellaneous221545
+Node: Completion222179
+Node: Customization223650
+Node: In-buffer settings224233
+Node: The very busy C-c C-c key229109
+Node: Clean view230753
+Node: TTY keys233330
+Node: Interaction234940
+Node: Cooperation235337
+Node: Conflicts238213
+Node: Bugs240216
+Node: Extensions and Hacking241712
+Node: Extensions242308
+Node: Tables in arbitrary syntax244255
+Node: Radio tables245332
+Node: A LaTeX example247835
+Ref: A LaTeX example-Footnote-1251481
+Ref: A LaTeX example-Footnote-2251629
+Node: Translator functions252064
+Ref: Translator functions-Footnote-1255173
+Node: Dynamic blocks255261
+Node: Special agenda views257233
+Ref: Special agenda views-Footnote-1259512
+Node: History and Acknowledgments259772
+Node: Index265866
+Node: Key Index298020
 
 End Tag Table

+ 208 - 78
org.el

@@ -5,7 +5,7 @@
 ;; Author: Carsten Dominik <dominik at science dot uva dot nl>
 ;; Keywords: outlines, hypermedia, calendar, wp
 ;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/
-;; Version: 4.76
+;; Version: 4.77
 ;;
 ;; This file is part of GNU Emacs.
 ;;
@@ -324,7 +324,7 @@ contexts.  Valid contexts are
 		    (const default))
 		   (boolean)))))
 
-(defcustom org-show-following-heading '((default . t))
+(defcustom org-show-following-heading '((default . nil))
   "Non-nil means, show following heading when revealing a location.
 Org-mode often shows locations in an org-mode file which might have
 been invisible before.  When this is set, the heading following the
@@ -838,7 +838,7 @@ t:      accept as input and present for editing"
   :type '(choice
 	  (const :tag "Never, don't even check unser input for them" nil)
 	  (const :tag "Always, both as user input, and when editing" t)
-	  (const :tag "Conver user input, don't offerr during editing" 'from)))
+	  (const :tag "Convert user input, don't offer during editing" 'from)))
 
 (defcustom org-table-copy-increment t
   "Non-nil means, increment when copying current field with \\[org-table-copy-down]."
@@ -2951,9 +2951,7 @@ specify what is allowed/forbidden in each part:
 
 pre          Chars allowed as prematch.  Beginning of line will be allowed too.
 post         Chars allowed as postmatch.  End of line will be allowed too.
-border       The chars *forbidden* as border characters.  In addition to the
-             characters given here, all marker characters are forbidden too.
-             FIXME: the last statement is no longer true.
+border       The chars *forbidden* as border characters.
 body-regexp  A regexp like \".\" to match a body character.  Don't use
              non-shy groups here, and don't allow newline here.
 newline      The maximum number of newlines allowed in an emphasis exp.
@@ -3438,7 +3436,7 @@ means to push this value onto the list in the variable.")
 			    (org-trim (match-string 2 value)))
 		      links)))
 	     ((equal key "PRIORITIES")
-	      (setq prio (org-split-string " +" value)))
+	      (setq prio (org-split-string value " +")))
 	     ((equal key "STARTUP")
 	      (let ((opts (org-split-string value splitre))
 		    l var val)
@@ -3984,20 +3982,15 @@ that will be added to PLIST.  Returns the string that was modified."
 	  org-plain-link-re "\\)")
   "Regular expression matching any link.")
 
-(defconst org-ts-lengths
-  (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>]*?\\)>"
   "Regular expression for fast time stamp matching.")
 (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\\}\\)\\)?\\)"
   "Regular expression matching time strings for analysis.")
-(defconst org-ts-regexp2 (concat "<" org-ts-regexp1 "[^>\n]\\{0,5\\}>")
+(defconst org-ts-regexp2 (concat "<" org-ts-regexp1 "[^>\n]\\{0,6\\}>")
   "Regular expression matching time stamps, with groups.")
-;; FIXME need to exclude ] here as well, also need to think about lengths
-(defconst org-ts-regexp3 (concat "[[<]" org-ts-regexp1 "[^]>\n]\\{0,5\\}[]>]")
+(defconst org-ts-regexp3 (concat "[[<]" org-ts-regexp1 "[^]>\n]\\{0,6\\}[]>]")
   "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.")
@@ -4476,12 +4469,20 @@ between words."
 	 ((= eos eoh)
 	  ;; Nothing is hidden behind this heading
 	  (message "EMPTY ENTRY")
-	  (setq org-cycle-subtree-status nil))
+	  (setq org-cycle-subtree-status nil)
+	  (save-excursion
+	    (goto-char eos)
+	    (outline-next-heading)
+	    (if (org-invisible-p) (org-flag-heading nil))))
 	 ((>= eol eos)
 	  ;; Entire subtree is hidden in one line: open it
 	  (org-show-entry)
 	  (show-children)
 	  (message "CHILDREN")
+	  (save-excursion
+	    (goto-char eos)
+	    (outline-next-heading)
+	    (if (org-invisible-p) (org-flag-heading nil)))
 	  (setq org-cycle-subtree-status 'children)
 	  (run-hook-with-args 'org-cycle-hook 'children))
 	 ((and (eq last-command this-command)
@@ -6281,7 +6282,6 @@ When NSPACE is non-nil, it indicates the minimum number of spaces that
 separate columns.  By default, the function first checks if every line
 contains at lease one TAB.  If yes, it assumes that the material is TAB
 separated.  If not, it assumes a single space as separator."
-  ;; FIXME:  Allow CSV?????
   (interactive "rP")
   (let* ((beg (min beg0 end0))
 	 (end (max beg0 end0))
@@ -8239,7 +8239,7 @@ and TABLE is a vector with line types."
 	    (setq i 0 hdir "+")
 	    (if (eq (aref table 0) 'hline) (setq hn (1- hn)))))
       (if (and (not hn) on (not odir))
-	  (error "should never happen");;(aref org-table-dlines on) FIXME
+	  (error "should never happen");;(aref org-table-dlines on)
 	(if (and hn (> hn 0))
 	    (setq i (org-find-row-type table i 'hline (equal hdir "-") nil hn)))
 	(if on
@@ -8338,7 +8338,7 @@ With prefix arg ALL, do this for all lines in the table."
       (goto-char beg)
       (and all (message "Re-applying formulas to full table..."))
       (while (re-search-forward line-re end t)
-	(unless (string-match "^ *[_^!$] *$" (org-table-get-field 1))
+	(unless (string-match "^ *[_^!$/] *$" (org-table-get-field 1))
 	  ;; Unprotected line, recalculate
 	  (and all (message "Re-applying formulas to full table...(line %d)"
 			    (setq cnt (1+ cnt))))
@@ -8551,9 +8551,15 @@ Works for single references, but also for entire formulas and even the
 full TBLFM line."
   (let ((start 0))
     (while (string-match "\\<\\([a-zA-Z]+\\)\\([0-9]+\\>\\|&\\)\\|\\(;[^\r\n:]+\\)" s start)
-      (if (match-end 3)
-	  ;; format match, just advance
-	  (setq start (match-end 0))
+      (cond
+       ((match-end 3)
+	;; format match, just advance
+	(setq start (match-end 0)))
+       ((and (> (match-beginning 0) 0)
+	     (equal ?. (aref s (max (1- (match-beginning 0)) 0))))
+	;; 3.e5 or something like this.  FIXME: is this ok????
+	(setq start (match-end 0)))
+       (t
 	(setq start (match-beginning 0)
 	      s (replace-match
 		 (if (equal (match-string 2 s) "&")
@@ -8561,7 +8567,7 @@ full TBLFM line."
 		   (format "@%d$%d"
 			   (string-to-number (match-string 2 s))
 			   (org-letters-to-number (match-string 1 s))))
-		 t t s))))
+		 t t s)))))
     s))
 
 (defun org-table-convert-refs-to-an (s)
@@ -9038,7 +9044,7 @@ Use COMMAND to do the motion, repeat if necessary to end up in a data line."
 		  ic (1+ ic)
 		  s1 (concat "$" (int-to-string ic))
 		  s2 (org-number-to-letters ic)
-		  str (if org-table-use-standard-references s2 s1))
+		  str (if (eq org-table-use-standard-references t) s2 s1))
 	    (setq ov (org-make-overlay beg (+ beg (length str))))
 	    (push ov org-table-coordinate-overlays)
 	    (org-overlay-display ov str 'org-special-keyword 'evaporate)))
@@ -9412,7 +9418,7 @@ overwritten, and the table is not marked as requiring realignment."
 (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)
+(defvar org-table-clean-did-remove-column nil)
 
 (defun orgtbl-export (table target)
   (let ((func (intern (concat "orgtbl-to-" (symbol-name target))))
@@ -9464,7 +9470,7 @@ this table."
 		 (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))
-	   (i0 (if org-table-clean-did-remove-column-1 2 1))
+	   (i0 (if org-table-clean-did-remove-column 2 1))
 	   (table (mapcar
 		   (lambda (x)
 		     (if (string-match org-table-hline-regexp x)
@@ -12001,7 +12007,7 @@ be removed."
 The auto-repeater uses this.")
 
 (defun org-add-log-maybe (&optional purpose state findpos)
-  "FIXME"
+  "Set up the post command hook to take a note."
   (save-excursion
     (when (and (listp org-log-done)
 	       (memq purpose org-log-done))
@@ -13042,20 +13048,24 @@ 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
-	       (org-parse-time-string (buffer-substring beg end) t)))
-	 (w1 (- end beg))
-	 (with-hm (and (nth 1 t1) (nth 2 t1)))
-	 (tf (funcall (if with-hm 'cdr 'car) org-time-stamp-custom-formats))
-	 (time (org-fix-decoded-time t1))
-	 (str (org-add-props
+  (let* ((ts (buffer-substring beg end))
+	 t1 w1 with-hm tf time str w2 (off 0))
+    (save-match-data
+      (setq t1 (org-parse-time-string ts t))
+      (if (string-match " \\+[0-9]+[dwmy]\\'" ts)
+	  (setq off (- (match-end 0) (match-beginning 0)))))
+    (setq end (- end off))
+    (setq w1 (- end beg)
+	  with-hm (and (nth 1 t1) (nth 2 t1))
+	  tf (funcall (if with-hm 'cdr 'car) org-time-stamp-custom-formats)
+	  time (org-fix-decoded-time t1)
+	  str (org-add-props
 		  (format-time-string
 		   (substring tf 1 -1) (apply 'encode-time time))
-		  nil 'mouse-face 'highlight))
-	 (w2 (length str)))
+		  nil 'mouse-face 'highlight)
+	  w2 (length str))
     (if (not (= w2 w1))
 	(add-text-properties (1+ beg) (+ 2 beg)
 			     (list 'org-dwidth t 'org-dwidth-n (- w1 w2))))
@@ -13443,14 +13453,13 @@ in the timestamp determines what will be changed."
 	     (not (get-text-property (1- (point)) 'display)))
 	(setq org-ts-what 'day))
     (setq org-ts-what (or what org-ts-what)
-	  with-hm (<= (abs (- (cdr org-ts-lengths)
-			      (- (match-end 0) (match-beginning 0))))
-		      1)
 	  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)))
+    (if (string-match "^.\\{10\\}.*?[0-9]+:[0-9][0-9]" ts)
+	(setq with-hm t))
     (setq time0 (org-parse-time-string ts))
     (setq time
 	  (apply 'encode-time
@@ -14409,7 +14418,7 @@ L   Timeline for current buffer          #   List stuck projects (!=configure)
 	       ((fboundp type)
 		(org-let lprops '(funcall type match)))
 	       (t (error "Invalid custom agenda command type %s" type))))
-	  (org-run-agenda-series (cddr entry))))
+	  (org-run-agenda-series (nth 1 entry) (cddr entry))))
        ((equal c ?C) (customize-variable 'org-agenda-custom-commands))
        ((equal c ?a) (call-interactively 'org-agenda-list))
        ((equal c ?t) (call-interactively 'org-todo-list))
@@ -14425,10 +14434,10 @@ L   Timeline for current buffer          #   List stuck projects (!=configure)
        ((equal c ?!) (customize-variable 'org-stuck-projects))
        (t (error "Invalid key"))))))
 
-(defun org-run-agenda-series (series)
-  (org-prepare-agenda)
+(defun org-run-agenda-series (name series)
+  (org-prepare-agenda name)
   (let* ((org-agenda-multi t)
-	 (redo (list 'org-run-agenda-series (list 'quote series)))
+	 (redo (list 'org-run-agenda-series name (list 'quote series)))
 	 (cmds (car series))
 	 (gprops (nth 1 series))
 	 match ;; The byte compiler incorrectly complains about this.  Keep it!
@@ -14480,7 +14489,12 @@ before running the agenda command."
       (flet ((read-char-exclusive () (string-to-char cmd-key)))
 	(eval (list 'let (nreverse pars) '(org-agenda nil)))))
     (set-buffer "*Org Agenda*")
-    (princ (buffer-string))))
+    (princ (org-encode-for-stdout (buffer-string)))))
+
+(defun org-encode-for-stdout (string)
+  (if (fboundp 'encode-coding-string)
+      (encode-coding-string string buffer-file-coding-system)
+    string))
 
 (defvar org-agenda-info nil)
 
@@ -14537,10 +14551,11 @@ priority-n   The computed numerical priority"
 	  (setq org-agenda-info
 		(org-fix-agenda-info (text-properties-at 0 line)))
 	  (princ
-	   (mapconcat 'org-agenda-export-csv-mapper
-		      '(org-category txt type todo tags date time-of-day extra
-				     priority-letter priority)
-		      ","))
+	   (org-encode-for-stdout
+	    (mapconcat 'org-agenda-export-csv-mapper
+		       '(org-category txt type todo tags date time-of-day extra
+				      priority-letter priority)
+		      ",")))
 	  (princ "\n"))))))
 
 (defun org-fix-agenda-info (props)
@@ -14551,8 +14566,15 @@ priority-n   The computed numerical priority"
     (when (setq tmp (plist-get props 'date))
       (if (integerp tmp) (setq tmp (calendar-gregorian-from-absolute tmp)))
       (let ((calendar-date-display-form '(year "-" month "-" day)))
+	'((format "%4d, %9s %2s, %4s" dayname monthname day year))
+
 	(setq tmp (calendar-date-string tmp)))
       (setq props (plist-put props 'date tmp)))
+    (when (setq tmp (plist-get props 'day))
+      (if (integerp tmp) (setq tmp (calendar-gregorian-from-absolute tmp)))
+      (let ((calendar-date-display-form '(year "-" month "-" day)))
+	(setq tmp (calendar-date-string tmp)))
+      (setq props (plist-put props 'day tmp)))
     (when (setq tmp (plist-get props 'txt))
       (when (string-match "\\[#\\([A-Z0-9]\\)\\] ?" tmp)
 	(plist-put props 'priority-letter (match-string 1 tmp))
@@ -14589,6 +14611,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)
+	(dir (default-directory))
 	pars cmd thiscmdkey files opts)
     (while parameters
       (push (list (pop parameters) (if parameters (pop parameters))) pars))
@@ -14607,7 +14630,8 @@ 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) t)))))
+			(list 'org-write-agenda 
+			      (expand-file-name (pop files) dir) t)))))
 	(kill-buffer org-agenda-buffer-name)))))
 
 (defun org-write-agenda (file &optional nosettings)
@@ -14807,7 +14831,8 @@ Optional argument FILE means, use this file instead of the current."
 (defvar org-agenda-multi nil)  ; dynammically scoped
 (defvar org-agenda-buffer-name "*Org Agenda*")
 (defvar org-pre-agenda-window-conf nil)
-(defun org-prepare-agenda ()
+(defvar org-agenda-name nil)
+(defun org-prepare-agenda (&optional name)
   (setq org-todo-keywords-for-agenda nil)
   (setq org-done-keywords-for-agenda nil)
   (if org-agenda-multi
@@ -14840,7 +14865,9 @@ Optional argument FILE means, use this file instead of the current."
 	(switch-to-buffer-other-window abuf))))
     (setq buffer-read-only nil)
     (erase-buffer)
-    (org-agenda-mode))
+    (org-agenda-mode)
+    (and name (not org-agenda-name)
+	 (org-set-local 'org-agenda-name name)))
   (setq buffer-read-only nil))
 
 (defun org-finalize-agenda ()
@@ -15037,7 +15064,8 @@ dates."
 	(setq day-numbers (delq nil (mapcar (lambda(x)
 					      (if (>= x today) x nil))
 					    day-numbers))))
-    (org-prepare-agenda)
+    (org-prepare-agenda (concat "Timeline " 
+				(file-name-nondirectory buffer-file-name)))
     (if doclosed (push :closed args))
     (push :timestamp args)
     (push :sexp args)
@@ -15182,7 +15210,7 @@ NDAYS defaults to `org-agenda-ndays'."
       (push (1+ (car day-numbers)) day-numbers)
       (setq ndays (1- ndays)))
     (setq day-numbers (nreverse day-numbers))
-    (org-prepare-agenda)
+    (org-prepare-agenda "Day/Week")
     (org-set-local 'org-starting-day (car day-numbers))
     (org-set-local 'org-include-all-loc include-all)
     (when (and (or include-all org-agenda-include-all-todo)
@@ -15282,7 +15310,7 @@ for a keyword.  A numeric prefix directly selects the Nth keyword in
   (require 'calendar)
   (org-compile-prefix-format 'todo)
   (org-set-sorting-strategy 'todo)
-  (org-prepare-agenda)
+  (org-prepare-agenda "TODO")
   (let* ((today (time-to-days (current-time)))
 	 (date (calendar-gregorian-from-absolute today))
 	 (kwds org-todo-keywords-for-agenda)
@@ -15353,7 +15381,7 @@ The prefix arg TODO-ONLY limits the search to TODO entries."
 	 buffer)
     (setq matcher (org-make-tags-matcher match)
 	  match (car matcher) matcher (cdr matcher))
-    (org-prepare-agenda)
+    (org-prepare-agenda (concat "TAGS " match))
     (setq org-agenda-redo-command
 	  (list 'org-tags-view (list 'quote todo-only)
 		(list 'if 'current-prefix-arg nil match)))
@@ -18411,7 +18439,8 @@ underlined headlines.  The default is 3."
 		   (plist-get opt-plist :skip-before-1st-heading)
 		   :add-text (plist-get opt-plist :text))
 		  "[\r\n]")))
-	 thetoc have-headings first-heading-pos)
+	 thetoc have-headings first-heading-pos
+	 table-open table-buffer)
 
     (let (buffer-read-only)
       (org-unmodified
@@ -18520,6 +18549,24 @@ underlined headlines.  The default is 3."
 	(setq level (org-tr-level (- (match-end 1) (match-beginning 1)))
 	      txt (match-string 2 line))
 	(org-ascii-level-start level txt umax lines))
+
+       ((and org-export-with-tables
+	     (string-match "^\\([ \t]*\\)\\(|\\|\\+-+\\+\\)" line))
+	(if (not table-open)
+	    ;; New table starts
+	    (setq table-open t table-buffer nil))
+	;; Accumulate lines
+	(setq table-buffer (cons line table-buffer))
+	(when (or (not lines)
+		  (not (string-match "^\\([ \t]*\\)\\(|\\|\\+-+\\+\\)"
+				     (car lines))))
+	  (setq table-open nil
+		table-buffer (nreverse table-buffer))
+	  (insert (mapconcat
+		   (lambda (x)
+		     (org-fix-indentation x org-ascii-current-indentation))
+		   (org-format-table-ascii table-buffer)
+		   "\n") "\n")))
        (t
 	(insert (org-fix-indentation line org-ascii-current-indentation) "\n"))))
     (normal-mode)
@@ -19295,6 +19342,17 @@ lang=\"%s\" xml:lang=\"%s\">
                       (concat (substring line 0 (match-beginning 2))
                               "<span class=\"todo\">" (match-string 2 line)
                               "</span>" (substring line (match-end 2))))))
+
+	  ;; Does this contain a reference to a footnote?
+	  (while (string-match "\\([^* \t].*?\\)\\[\\([0-9]+\\)\\]" line)
+	    (let ((n (match-string 2 line)))
+	      (setq line
+		    (replace-match
+		     (format
+		      "%s<sup><a class=\"footref\" name=\"fnr.%s\" href=\"#fn.%s\">%s</a></sup>"
+		      (match-string 1 line) n n n)
+		     t t line))))
+
 	  (cond
 	   ((string-match "^\\(\\*+\\)[ \t]*\\(.*\\)" line)
 	    ;; This is a headline
@@ -19395,19 +19453,13 @@ lang=\"%s\" xml:lang=\"%s\">
 	    ;; are not fully interpreted, lines starting with "-", "+", "*"
 	    ;; also start a new paragraph.
 	    (if (string-match "^ [-+*]-\\|^[ \t]*$" line) (org-open-par))
+
 	    ;; Is this the start of a footnote?
 	    (when (string-match "^[ \t]*\\[\\([0-9]+\\)\\]" line)
 	      (org-close-par-maybe)
 	      (let ((n (match-string 1 line)))
 		(setq line (replace-match
-			    (format "<p class=\"footnote\"><sup><a class=\"footnum\"name=\"fn.%s\" href=\"#fnr.%s\">%s</a></sup>" n n n) t t line))))
-	    ;; Does this contain a reference to a footnote?
-	    (while (string-match "\\[\\([0-9]+\\)\\]" line)
-	      (let ((n (match-string 1 line)))
-		(setq line (replace-match
-			    (format
-			     "<sup><a class=\"footref\" name=\"fnr.%s\" href=\"#fn.%s\">%s</a></sup>"
-			     n n n) t t line))))
+			    (format "<p class=\"footnote\"><sup><a class=\"footnum\" name=\"fn.%s\" href=\"#fnr.%s\">%s</a></sup>" n n n) t t line))))
 
 	    ;; Check if the line break needs to be conserved
 	    (cond
@@ -19484,6 +19536,50 @@ lang=\"%s\" xml:lang=\"%s\">
 	    (kill-buffer (current-buffer)))
 	(current-buffer)))))
 
+(defvar org-table-colgroup-info nil) ;; FIXME: mode to a better place
+(defun org-format-table-ascii (lines)
+  "Format a table for ascii export."
+  (if (stringp lines)
+      (setq lines (org-split-string lines "\n")))
+  (if (not (string-match "^[ \t]*|" (car lines)))
+      ;; Table made by table.el - test for spanning
+      lines
+
+    ;; A normal org table
+    ;; 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)))
+    (setq lines (nreverse lines))
+    (when org-export-table-remove-special-lines
+      ;; Check if the table has a marking column.  If yes remove the
+      ;; column and the special lines
+      (setq lines (org-table-clean-before-export lines)))
+    ;; Get rid of the vertical lines except for grouping
+    (let ((vl (org-colgroup-info-to-vline-list org-table-colgroup-info))
+	  rtn line vl1 start)
+      (while (setq line (pop lines))
+	(if (string-match org-table-hline-regexp line)
+	    (and (string-match "|\\(.*\\)|" line)
+		 (setq line (replace-match " \\1" t nil line)))
+	  (setq start 0 vl1 vl)
+	  (while (string-match "|" line start)
+	    (setq start (match-end 0))
+	    (or (pop vl1) (setq line (replace-match " " t t line)))))
+	(push line rtn))
+      (nreverse rtn))))
+
+(defun org-colgroup-info-to-vline-list (info)
+  (let (vl new last rtn line)
+    (while info
+      (setq last new new (pop info))
+      (if (or (memq last '(:end :startend))
+	      (memq new  '(:start :startend)))
+	  (push t vl)
+	(push nil vl)))
+    (setq vl (cons nil (nreverse vl)))))
+
+
 (defun org-format-table-html (lines olines)
   "Find out which HTML converter to use and return the HTML code."
   (if (stringp lines)
@@ -19527,7 +19623,7 @@ lang=\"%s\" xml:lang=\"%s\">
 			      (lambda (x) (string-match "^[ \t]*|-" x))
 			      (cdr lines)))))
 	(nlines 0) fnum i
-	tbopen line fields html)
+	tbopen line fields html gr)
     (if splice (setq head nil))
     (unless splice (push (if head "<thead>" "<tbody>") html))
     (setq tbopen t)
@@ -19567,9 +19663,12 @@ lang=\"%s\" xml:lang=\"%s\">
       ;; Put in COL tags with the alignment (unfortuntely often ignored...)
       (push (mapconcat
 	     (lambda (x)
-	       (format "<COL align=\"%s\">"
+	       (setq gr (pop org-table-colgroup-info))
+	       (format "%s<COL align=\"%s\">%s"
+		       (if (memq gr '(:start :startend)) "<colgroup>" "")
 		       (if (> (/ (float x) nlines) org-table-number-fraction)
-			   "right" "left")))
+			   "right" "left")
+		       (if (memq gr '(:end :startend)) "</colgroup>" "")))
 	     fnum "")
 	    html)
       (push org-export-html-table-tag html))
@@ -19578,22 +19677,50 @@ lang=\"%s\" xml:lang=\"%s\">
 (defun org-table-clean-before-export (lines)
   "Check if the table has a marking column.
 If yes remove the column and the special lines."
+  (setq org-table-colgroup-info nil)
   (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)
+	(setq org-table-clean-did-remove-column nil)
+	(delq nil
+	      (mapcar
+	       (lambda (x)
+		 (cond
+		  ((string-match  "^[ \t]*| */ *|" x)
+		   (setq org-table-colgroup-info
+			 (mapcar (lambda (x)
+				   (cond ((member x '("<" "&lt;")) :start)
+					 ((member x '(">" "&gt;")) :end)
+					 ((member x '("<>" "&lt;&gt;")) :startend)
+					 (t nil)))
+				 (org-split-string x "[ \t]*|[ \t]*")))
+		   nil)
+		  (t x)))
+	       lines)))
+    (setq org-table-clean-did-remove-column 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))))
+	   (lambda (x)
+	     (cond
+	      ((string-match  "^[ \t]*| */ *|" x)
+	       (setq org-table-colgroup-info
+		     (mapcar (lambda (x)
+			       (cond ((member x '("<" "&lt;")) :start)
+				     ((member x '(">" "&gt;")) :end)
+				     ((member x '("<>" "&lt;&gt;")) :startend)
+				     (t nil)))
+			     (cdr (org-split-string x "[ \t]*|[ \t]*"))))
+	       nil)
+	      ((string-match "^[ \t]*| *[!_^/] *|" x)
+	       nil) ; ignore this line
+	      ((or (string-match "^\\([ \t]*\\)|-+\\+" x)
+		   (string-match "^\\([ \t]*\\)|[^|]*|" x))
+	       ;; remove the first column
+	       (replace-match "\\1|" t nil x))
+	      (t (error "This should not happen"))))
 	   lines))))
 
 (defun org-format-table-table-html (lines)
@@ -21347,8 +21474,10 @@ In particular, this makes sure hanging paragraphs for hand-formatted lists
 work correctly."
   (cond ((looking-at "#[ \t]+")
 	 (match-string 0))
-	((looking-at " *\\([-*+] \\|[0-9]+[.)] \\)?")
-	 (make-string (- (match-end 0) (match-beginning 0)) ?\ ))
+	((looking-at "[ \t]*\\([-*+] \\|[0-9]+[.)] \\)?")
+	 (save-excursion
+	   (goto-char (match-end 0))
+	   (make-string (current-column) ?\ )))
 	(t nil)))
 
 ;;;; Functions extending outline functionality
@@ -21568,7 +21697,7 @@ Show the heading too, if it is currently invisible."
 ;;;; Experimental code
 
 (defun org-closed-in-range ()
-  "Sparse treee of items closed in a certain time range.
+  "Sparse tree of items closed in a certain time range.
 Still experimental, may disappear in the furture."
   (interactive)
   ;; Get the time interval from the user.
@@ -21596,3 +21725,4 @@ Still experimental, may disappear in the furture."
 
 ;; arch-tag: e77da1a7-acc7-4336-b19e-efa25af3f9fd
 ;;; org.el ends here
+

BIN
org.pdf


+ 41 - 4
org.texi

@@ -3,8 +3,8 @@
 @setfilename ../info/org
 @settitle Org Mode Manual
 
-@set VERSION 4.76
-@set DATE May 2007
+@set VERSION 4.77
+@set DATE June 2007
 
 @dircategory Emacs
 @direntry
@@ -122,6 +122,7 @@ Tables
 
 * Built-in table editor::       Simple tables
 * Narrow columns::              Stop wasting space in tables   
+* Column groups::               Grouping to trigger vertical lines
 * orgtbl-mode::                 The table editor as minor mode
 * The spreadsheet::             The table editor has spreadsheet capabilities.
 
@@ -1109,6 +1110,7 @@ Emacs @file{calc} package.
 @menu
 * Built-in table editor::       Simple tables
 * Narrow columns::              Stop wasting space in tables   
+* Column groups::               Grouping to trigger vertical lines
 * orgtbl-mode::                 The table editor as minor mode
 * The spreadsheet::             The table editor has spreadsheet capabilities.
 @end menu
@@ -1328,7 +1330,7 @@ it off with
 @noindent Then the only table command that still works is
 @kbd{C-c C-c} to do a manual re-align.
 
-@node Narrow columns, orgtbl-mode, Built-in table editor, Tables
+@node Narrow columns, Column groups, Built-in table editor, Tables
 @section Narrow columns
 @cindex narrow columns in tables
 
@@ -1374,7 +1376,42 @@ on a per-file basis with:
 #+STARTUP: noalign
 @end example
 
-@node orgtbl-mode, The spreadsheet, Narrow columns, Tables
+@node Column groups, orgtbl-mode, Narrow columns, Tables
+@section Column groups
+@cindex grouping columns in tables
+
+When Org-mode exports tables, it does so by default without vertical
+lines because that is visually more satisfying in general.  Occasionally
+however, vertical lines can be useful to structure a table into groups
+of columns, much like horizontal lines can do for groups of rows.  In
+order to specify column groups, you can use a special row where the
+first field contains only @samp{/}.  The further fields can either
+contain @samp{<} to indicate that this column should start a group,
+@samp{>} to indicate the end of a column, or @samp{<>} to make a column
+a group of its own.  Boundaries between colum groups will upon export be
+marked with vertical lines.  Here is an example:
+
+@example
+|   |  N | N^2 | N^3 | N^4 | sqrt(n) | sqrt[4](N) |
+|---+----+-----+-----+-----+---------+------------|
+| / | <> |   < |     |   > |       < |          > |
+| # |  1 |   1 |   1 |   1 |       1 |          1 |
+| # |  2 |   4 |   8 |  16 |  1.4142 |     1.1892 |
+| # |  3 |   9 |  27 |  81 |  1.7321 |     1.3161 |
+|---+----+-----+-----+-----+---------+------------|
+#+TBLFM: $3=$2^2::$4=$2^3::$5=$2^4::$6=sqrt($2)::$7=sqrt(sqrt(($2))
+@end example
+
+It is also sufficient to just insert the colum group starters after
+every vertical line you'd like to have:
+
+@example
+|  N | N^2 | N^3 | N^4 | sqrt(n) | sqrt[4](N) |
+|----+-----+-----+-----+---------+------------|
+| /  | <   |     |     | <       |            |
+@end example
+
+@node orgtbl-mode, The spreadsheet, Column groups, Tables
 @section The Orgtbl minor mode
 @cindex orgtbl-mode
 @cindex minor mode for tables

BIN
orgcard.pdf


+ 1 - 1
orgcard.tex

@@ -1,5 +1,5 @@
 % Reference Card for Org Mode
-\def\orgversionnumber{4.75}
+\def\orgversionnumber{4.77}
 \def\versionyear{2007}          % latest update
 \def\year{2007}                 % latest copyright year
 

+ 13 - 13
xemacs/noutline.el

@@ -299,7 +299,7 @@ Turning on outline mode calls the value of `text-mode-hook' and then of
   (setq line-move-ignore-invisible t)
   ;; Cause use of ellipses for invisible text.
   (add-to-invisibility-spec '(outline . t))
-
+  
   (easy-menu-add outline-mode-menu-heading)
   (easy-menu-add outline-mode-menu-show)
   (easy-menu-add outline-mode-menu-hide)
@@ -719,15 +719,15 @@ BEG and END default respectively to the beginning and end of buffer."
     (map-extents 
      #'(lambda (ex ignored) 
 	 (if (< (extent-start-position ex) beg)
-	    (if (> (extent-end-position ex) end)
-		(progn
-		  (set-extent-endpoints (copy-extent ex)
-					(extent-start-position ex) beg)
-		  (set-extent-endpoints ex end (extent-end-position ex)))
-	      (set-extent-endpoints ex (extent-start-position ex) beg)))
-	  (if (> (extent-end-position ex) end)
-	      (set-extent-endpoints ex end (extent-end-position ex))
-	       (delete-extent ex)))
+	     (if (> (extent-end-position ex) end)
+		 (progn
+		   (set-extent-endpoints (copy-extent ex)
+					 (extent-start-position ex) beg)
+		   (set-extent-endpoints ex end (extent-end-position ex)))
+	       (set-extent-endpoints ex (extent-start-position ex) beg))
+	   (if (> (extent-end-position ex) end)
+	       (set-extent-endpoints ex end (extent-end-position ex))
+	     (delete-extent ex))))
      (current-buffer) beg end nil 'end-closed 'outline)))
 
 (defun outline-flag-region (from to flag)
@@ -881,8 +881,8 @@ Show the heading too, if it is currently invisible."
     (outline-back-to-heading)
     (outline-end-of-heading)
     (outline-flag-region (point)
-			  (progn (outline-end-of-subtree) (point))
-			  flag)))
+			 (progn (outline-end-of-subtree) (point))
+			 flag)))
 
 (defun outline-end-of-subtree ()
   (outline-back-to-heading)
@@ -1008,7 +1008,7 @@ Stop at the first and last subheadings of a superior heading."
       (outline-previous-visible-heading 1))
     (if (< (funcall outline-level) level)
 	nil
-        (point))))
+      (point))))
 
 (defun outline-headers-as-kill (beg end)
   "Save the visible outline headers in region at the start of the kill ring.