Mercurial > emacs
annotate lisp/textmodes/org.el @ 65221:33a4813c9bf4
(mode-popup-menu): Add defvar.
author | Juanma Barranquero <lekktu@gmail.com> |
---|---|
date | Tue, 30 Aug 2005 10:23:09 +0000 |
parents | 5b1a238fcbb4 |
children | d0087dcb8981 2d92f5c9d6ae |
rev | line source |
---|---|
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
1 ;; org.el --- Outline-based notes management and organizer |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
2 ;; Carstens outline-mode for keeping track of everything. |
64751
5b1a238fcbb4
Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
64518
diff
changeset
|
3 |
5b1a238fcbb4
Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
64518
diff
changeset
|
4 ;; Copyright (C) 2004, 2005 Free Software Foundation, Inc. |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
5 ;; |
58792 | 6 ;; Author: Carsten Dominik <dominik at science dot uva dot nl> |
7 ;; Keywords: outlines, hypermedia, calendar | |
8 ;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/ | |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
9 ;; Version: 3.14 |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
10 ;; |
58794 | 11 ;; This file is part of GNU Emacs. |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
12 ;; |
58794 | 13 ;; GNU Emacs is free software; you can redistribute it and/or modify |
14 ;; it under the terms of the GNU General Public License as published by | |
15 ;; the Free Software Foundation; either version 2, or (at your option) | |
58792 | 16 ;; any later version. |
17 | |
58794 | 18 ;; GNU Emacs is distributed in the hope that it will be useful, |
19 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
20 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
21 ;; GNU General Public License for more details. | |
58792 | 22 |
23 ;; You should have received a copy of the GNU General Public License | |
24 ;; along with GNU Emacs; see the file COPYING. If not, write to the | |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
25 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
26 ;; Boston, MA 02111-1307, USA. |
58792 | 27 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
28 ;; | |
29 ;;; Commentary: | |
30 ;; | |
31 ;; Org-mode is a mode for keeping notes, maintaining ToDo lists, and doing | |
32 ;; project planning with a fast and effective plain-text system. | |
33 ;; | |
34 ;; Org-mode develops organizational tasks around a NOTES file that contains | |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
35 ;; information about projects as plain text. Org-mode is implemented on top |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
36 ;; of outline-mode - ideal to keep the content of large files well structured. |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
37 ;; It supports ToDo items, deadlines and time stamps, which can be extracted |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
38 ;; to create a daily/weekly agenda that also integrates the diary of the Emacs |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
39 ;; calendar. Tables are easily created with a built-in table editor. Plain |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
40 ;; text URL-like links connect to websites, emails (VM, RMAIL, WANDERLUST), |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
41 ;; Usenet messages (Gnus), BBDB entries, and any files related to the |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
42 ;; projects. For printing and sharing of notes, an Org-mode file (or a part |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
43 ;; of it) can be exported as a structured ASCII file, or as HTML. |
58792 | 44 ;; |
45 ;; Installation | |
46 ;; ------------ | |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
47 ;; If Org-mode is part of the Emacs distribution or an XEmacs package, you |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
48 ;; only need to copy the following lines to your .emacs file. The last two |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
49 ;; lines define *global* keys for the commands `org-store-link' and |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
50 ;; `org-agenda' - please choose suitable keys yourself. |
58792 | 51 ;; |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
52 ;; (add-to-list 'auto-mode-alist '("\\.org$" . org-mode)) |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
53 ;; (define-key global-map "\C-cl" 'org-store-link) |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
54 ;; (define-key global-map "\C-ca" 'org-agenda) |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
55 ;; |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
56 ;; If you have downloaded Org-mode from the Web, you must byte-compile |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
57 ;; org.el and put it on your load path. In addition to the Emacs Lisp |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
58 ;; lines above, you also need to add the following lines to .emacs: |
58792 | 59 ;; |
60 ;; (autoload 'org-mode "org" "Org mode" t) | |
61 ;; (autoload 'org-diary "org" "Diary entries from Org mode") | |
62 ;; (autoload 'org-agenda "org" "Multi-file agenda from Org mode" t) | |
63 ;; (autoload 'org-store-link "org" "Store a link to the current location" t) | |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
64 ;; (autoload 'orgtbl-mode "org" "Org tables as a minor mode" t) |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
65 ;; (autoload 'turn-on-orgtbl "org" "Org tables as a minor mode") |
58792 | 66 ;; |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
67 ;; This setup will put all files with extension ".org" into Org-mode. As |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
68 ;; an alternative, make the first line of a file look like this: |
58792 | 69 ;; |
70 ;; MY PROJECTS -*- mode: org; -*- | |
71 ;; | |
72 ;; which will select Org-mode for this buffer no matter what the file's | |
73 ;; name is. | |
74 ;; | |
75 ;; Documentation | |
76 ;; ------------- | |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
77 ;; The documentation of Org-mode can be found in the TeXInfo file. The |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
78 ;; distribution also contains a PDF version of it. At the homepage of |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
79 ;; Org-mode, you can read the same text online as HTML. There is also an |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
80 ;; excellent reference card made by Philip Rooke. |
58792 | 81 ;; |
82 ;; Changes: | |
83 ;; ------- | |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
84 ;; Version 3.14 |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
85 ;; - Formulas for individual fields in table. |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
86 ;; - Automatic recalculation in calculating tables. |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
87 ;; - Named fields and columns in tables. |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
88 ;; - Fixed bug with calling `org-archive' several times in a row. |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
89 ;; |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
90 ;; Version 3.13 |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
91 ;; - Efficiency improvements: Fewer table re-alignments needed. |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
92 ;; - New special lines in tables, for defining names for individual cells. |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
93 ;; |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
94 ;; Version 3.12 |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
95 ;; - Tables can store formulas (one per column) and compute fields. |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
96 ;; Not quite like a full spreadsheet, but very powerful. |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
97 ;; - table.el keybinding is now `C-c ~'. |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
98 ;; - Numeric argument to org-cycle does `show-subtree' above on level ARG. |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
99 ;; - Small changes to keys in agenda buffer. Affected keys: |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
100 ;; [w] weekly view; [d] daily view; [D] toggle diary inclusion. |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
101 ;; - Bug fixes. |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
102 ;; |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
103 ;; Version 3.11 |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
104 ;; - Links inserted with C-c C-l are now by default enclosed in angle |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
105 ;; brackets. See the new variable `org-link-format'. |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
106 ;; - ">" terminates a link, this is a way to have several links in a line. |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
107 ;; Both "<" and ">" are no longer allowed as characters in a link. |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
108 ;; - Archiving of finished tasks. |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
109 ;; - C-<up>/<down> bindings removed, to allow access to paragraph commands. |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
110 ;; - Compatibility with CUA-mode (see variable `org-CUA-compatible'). |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
111 ;; - Compatibility problems with viper-mode fixed. |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
112 ;; - Improved html export of tables. |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
113 ;; - Various clean-up changes. |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
114 ;; |
62712
b9935dc86aa4
(org-mode): Use `define-derived-mode' to define
Carsten Dominik <dominik@science.uva.nl>
parents:
62546
diff
changeset
|
115 ;; Version 3.10 |
b9935dc86aa4
(org-mode): Use `define-derived-mode' to define
Carsten Dominik <dominik@science.uva.nl>
parents:
62546
diff
changeset
|
116 ;; - Using `define-derived-mode' to derive `org-mode' from `outline-mode'. |
b9935dc86aa4
(org-mode): Use `define-derived-mode' to define
Carsten Dominik <dominik@science.uva.nl>
parents:
62546
diff
changeset
|
117 ;; |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
118 ;; Version 3.09 |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
119 ;; - Time-of-day specifications in agenda are extracted and placed |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
120 ;; into the prefix. Timed entries can be placed into a time grid for |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
121 ;; day. |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
122 ;; |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
123 ;; Version 3.08 |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
124 ;; - "|" no longer allowed as part of a link, to allow links in tables. |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
125 ;; - The prefix of items in the agenda buffer can be configured. |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
126 ;; - Cleanup. |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
127 ;; |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
128 ;; Version 3.07 |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
129 ;; - Some folding incinsistencies removed. |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
130 ;; - BBDB links to company-only entries. |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
131 ;; - Bug fixes and global cleanup. |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
132 ;; |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
133 ;; Version 3.06 |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
134 ;; - M-S-RET inserts a new TODO heading. |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
135 ;; - New startup option `content'. |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
136 ;; - Better visual response when TODO items in agenda change status. |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
137 ;; - Window positioning after visibility state changes optimized and made |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
138 ;; configurable. See `org-cycle-hook' and `org-occur-hook'. |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
139 ;; |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
140 ;; Version 3.05 |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
141 ;; - Agenda entries from the diary are linked to the diary file, so |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
142 ;; adding and editing diary entries can be done directly from the agenda. |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
143 ;; - Many calendar/diary commands available directly from agenda. |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
144 ;; - Field copying in tables with S-RET does increment. |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
145 ;; - C-c C-x C-v extracts the visible part of the buffer for printing. |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
146 ;; - Moving subtrees up and down preserves the whitespace at the tree end. |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
147 ;; |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
148 ;; Version 3.04 |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
149 ;; - Table editor optimized to need fewer realignments, and to keep |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
150 ;; table shape when typing in fields. |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
151 ;; - A new minor mode, orgtbl-mode, introduces the Org-mode table editor |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
152 ;; into arbitrary major modes. |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
153 ;; - Fixed bug with realignment in XEmacs. |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
154 ;; - Startup options can be set with special #+STARTUP line. |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
155 ;; - Heading following a match in org-occur can be suppressed. |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
156 ;; |
58792 | 157 ;; Version 3.03 |
158 ;; - Copyright transfer to the FSF. | |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
159 ;; - Effect of C-u and C-u C-u in org-timeline swapped. |
58792 | 160 ;; - Timeline now always contains today, and `.' jumps to it. |
161 ;; - Table editor: | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
162 ;; - cut and paste of rectangular regions in tables |
58792 | 163 ;; - command to convert org-mode table to table.el table and back |
164 ;; - command to treat several cells like a paragraph and fill it | |
165 ;; - command to convert a buffer region to a table | |
166 ;; - import/export tables as tab-separated files (exchange with Excel) | |
167 ;; - Agenda: | |
168 ;; - Sorting mechanism for agenda items rewritten from scratch. | |
169 ;; - Sorting fully configurable. | |
170 ;; - Entries specifying a time are sorted together. | |
171 ;; - Completion also covers option keywords after `#-'. | |
172 ;; - Bug fixes. | |
173 ;; | |
174 ;; Version 3.01 | |
175 ;; - New reference card, thanks to Philip Rooke for creating it. | |
176 ;; - Single file agenda renamed to "Timeline". It no longer shows | |
177 ;; warnings about upcoming deadlines/overdue scheduled items. | |
178 ;; That functionality is now limited to the (multifile) agenda. | |
179 ;; - When reading a date, the calendar can be manipulated with keys. | |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
180 ;; - Link support for RMAIL and Wanderlust (from planner.el, untested). |
58792 | 181 ;; - Minor bug fixes and documentation improvements. |
182 | |
183 ;;; Code: | |
184 | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
185 (eval-when-compile (require 'cl) (require 'calendar)) |
58792 | 186 (require 'outline) |
187 (require 'time-date) | |
188 (require 'easymenu) | |
189 | |
190 ;;; Customization variables | |
191 | |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
192 (defvar org-version "3.14" |
58792 | 193 "The version number of the file org.el.") |
59596
8e7a2f6f9fa7
(org-version): Unnecessary prefix arg removed.
Carsten Dominik <dominik@science.uva.nl>
parents:
59547
diff
changeset
|
194 (defun org-version () |
8e7a2f6f9fa7
(org-version): Unnecessary prefix arg removed.
Carsten Dominik <dominik@science.uva.nl>
parents:
59547
diff
changeset
|
195 (interactive) |
58792 | 196 (message "Org-mode version %s" org-version)) |
197 | |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
198 ;; The following two constants are for compatibility with different Emacs |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
199 ;; versions (Emacs versus XEmacs) and with different versions of outline.el. |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
200 ;; The compatibility code in org.el is based on these two constants. |
58792 | 201 (defconst org-xemacs-p (featurep 'xemacs) |
202 "Are we running xemacs?") | |
203 (defconst org-noutline-p (featurep 'noutline) | |
204 "Are we using the new outline mode?") | |
205 | |
206 (defgroup org nil | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
207 "Outline-based notes management and organizer " |
58792 | 208 :tag "Org" |
209 :group 'outlines | |
210 :group 'hypermedia | |
211 :group 'calendar) | |
212 | |
213 (defgroup org-startup nil | |
214 "Options concerning startup of Org-mode." | |
215 :tag "Org Startup" | |
216 :group 'org) | |
217 | |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
218 (defcustom org-CUA-compatible nil |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
219 "Non-nil means use alternative key bindings for S-<cursor movement>. |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
220 Org-mode used S-<cursor movement> for changing timestamps and priorities. |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
221 S-<cursor movement> is also used for example by `CUA-mode' to select text. |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
222 If you want to use Org-mode together with `CUA-mode', Org-mode needs to use |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
223 alternative bindings. Setting this variable to t will replace the following |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
224 keys both in Org-mode and in the Org-agenda buffer. |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
225 |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
226 S-RET -> C-S-RET |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
227 S-up -> M-p |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
228 S-down -> M-n |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
229 S-left -> M-- |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
230 S-right -> M-+ |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
231 |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
232 If you do not like the alternative keys, take a look at the variable |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
233 `org-disputed-keys'. |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
234 |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
235 This option is only relevant at load-time of Org-mode. Changing it requires |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
236 a restart of Emacs to become effective." |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
237 :group 'org-startup |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
238 :type 'boolean) |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
239 |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
240 (defvar org-disputed-keys |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
241 '((S-up [(shift up)] [(meta ?p)]) |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
242 (S-down [(shift down)] [(meta ?n)]) |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
243 (S-left [(shift left)] [(meta ?-)]) |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
244 (S-right [(shift right)] [(meta ?+)]) |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
245 (S-return [(shift return)] [(control shift return)])) |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
246 "Keys for which Org-mode and other modes compete. |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
247 This is an alist, cars are symbols for lookup, 1st element is the default key, |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
248 second element will be used when `org-CUA-compatible' is t.") |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
249 |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
250 (defun org-key (key) |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
251 "Select a key according to `org-CUA-compatible'." |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
252 (nth (if org-CUA-compatible 2 1) |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
253 (or (assq key org-disputed-keys) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
254 (error "Invalid Key %s in `org-key'" key)))) |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
255 |
58792 | 256 (defcustom org-startup-folded t |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
257 "Non-nil means, entering Org-mode will switch to OVERVIEW. |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
258 This can also be configured on a per-file basis by adding one of |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
259 the following lines anywhere in the buffer: |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
260 |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
261 #+STARTUP: fold |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
262 #+STARTUP: nofold |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
263 #+STARTUP: content" |
58792 | 264 :group 'org-startup |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
265 :type '(choice |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
266 (const :tag "nofold: show all" nil) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
267 (const :tag "fold: overview" t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
268 (const :tag "content: all headlines" content))) |
58792 | 269 |
270 (defcustom org-startup-truncated t | |
271 "Non-nil means, entering Org-mode will set `truncate-lines'. | |
272 This is useful since some lines containing links can be very long and | |
273 uninteresting. Also tables look terrible when wrapped." | |
274 :group 'org-startup | |
275 :type 'boolean) | |
276 | |
277 (defcustom org-startup-with-deadline-check nil | |
278 "Non-nil means, entering Org-mode will run the deadline check. | |
279 This means, if you start editing an org file, you will get an | |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
280 immediate reminder of any due deadlines. |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
281 This can also be configured on a per-file basis by adding one of |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
282 the following lines anywhere in the buffer: |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
283 |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
284 #+STARTUP: dlcheck |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
285 #+STARTUP: nodlcheck" |
58792 | 286 :group 'org-startup |
287 :type 'boolean) | |
288 | |
61312
6939a6683ac3
(org-diary-default-entry): Fixed call to
Carsten Dominik <dominik@science.uva.nl>
parents:
61134
diff
changeset
|
289 (defcustom org-insert-mode-line-in-empty-file nil |
58792 | 290 "Non-nil means insert the first line setting Org-mode in empty files. |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
291 When the function `org-mode' is called interactively in an empty file, this |
58792 | 292 normally means that the file name does not automatically trigger Org-mode. |
293 To ensure that the file will always be in Org-mode in the future, a | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
294 line enforcing Org-mode will be inserted into the buffer, if this option |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
295 has been set." |
58792 | 296 :group 'org-startup |
297 :type 'boolean) | |
298 | |
299 (defgroup org-keywords nil | |
300 "Options concerning TODO items in Org-mode." | |
301 :tag "Org Keywords" | |
302 :group 'org) | |
303 | |
304 (defcustom org-todo-keywords '("TODO" "DONE") | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
305 "List of TODO entry keywords. |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
306 \\<org-mode-map>By default, this is '(\"TODO\" \"DONE\"). The last entry in the list is |
58792 | 307 considered to mean that the entry is \"done\". All the other mean that |
308 action is required, and will make the entry show up in todo lists, diaries | |
309 etc. | |
310 The command \\[org-todo] cycles an entry through these states, and an | |
311 additional state where no keyword is present. For details about this | |
312 cycling, see also the variable `org-todo-interpretation' | |
313 Changes become only effective after restarting Emacs." | |
314 :group 'org-keywords | |
315 :type '(repeat (string :tag "Keyword"))) | |
316 | |
317 (defcustom org-todo-interpretation 'sequence | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
318 "Controls how TODO keywords are interpreted. |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
319 \\<org-mode-map>Possible values are `sequence' and `type'. |
58792 | 320 This variable is only relevant if `org-todo-keywords' contains more than two |
321 states. There are two ways how these keywords can be used: | |
322 | |
323 - As a sequence in the process of working on a TODO item, for example | |
324 (setq org-todo-keywords '(\"TODO\" \"STARTED\" \"VERIFY\" \"DONE\") | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
325 org-todo-interpretation 'sequence) |
58792 | 326 |
327 - As different types of TODO items, for example | |
328 (setq org-todo-keywords '(\"URGENT\" \"RELAXED\" \"REMIND\" \"FOR_TOM\" \"DONE\") | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
329 org-todo-interpretation 'type) |
58792 | 330 |
331 When the states are interpreted as a sequence, \\[org-todo] always cycles | |
332 to the next state, in order to walk through all different states. So with | |
333 \\[org-todo], you turn an empty entry into the state TODO. When you started | |
334 working on the item, you use \\[org-todo] again to switch it to \"STARTED\", | |
335 later to VERIFY and finally to DONE. | |
336 | |
337 When the states are interpreted as types, \\[org-todo] still cycles through | |
338 when it is called several times in direct succession, in order to initially | |
339 select the type. However, if not called immediately after a previous | |
340 \\[org-todo], it switches from each type directly to DONE. So with the | |
341 above example, you could use `\\[org-todo] \\[org-todo]' to label an entry | |
342 RELAXED. If you later return to this entry and press \\[org-todo] again, | |
343 RELAXED will not be changed REMIND, but directly to DONE. | |
344 | |
345 You can create a large number of types. To initially select a | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
346 type, it is then best to use \\[universal-argument] \\[org-todo] in order to specify the |
58792 | 347 type with completion. Of course, you can also type the keyword |
348 directly into the buffer. M-TAB completes TODO keywords at the | |
349 beginning of a headline." | |
350 :group 'org-keywords | |
351 :type '(choice (const sequence) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
352 (const type))) |
58792 | 353 |
354 (defcustom org-default-priority ?B | |
355 "The default priority of TODO items. | |
356 This is the priority an item get if no explicit priority is given." | |
357 :group 'org-keywords | |
358 :type 'character) | |
359 | |
360 (defcustom org-lowest-priority ?C | |
361 "The lowest priority of TODO items. A character like ?A, ?B etc." | |
362 :group 'org-keywords | |
363 :type 'character) | |
364 | |
365 (defcustom org-deadline-string "DEADLINE:" | |
366 "String to mark deadline entries. | |
367 A deadline is this string, followed by a time stamp. Should be a word, | |
368 terminated by a colon. You can insert a schedule keyword and | |
369 a timestamp with \\[org-deadline]. | |
370 Changes become only effective after restarting Emacs." | |
371 :group 'org-keywords | |
372 :type 'string) | |
373 | |
374 (defcustom org-scheduled-string "SCHEDULED:" | |
375 "String to mark scheduled TODO entries. | |
376 A schedule is this string, followed by a time stamp. Should be a word, | |
377 terminated by a colon. You can insert a schedule keyword and | |
378 a timestamp with \\[org-schedule]. | |
379 Changes become only effective after restarting Emacs." | |
380 :group 'org-keywords | |
381 :type 'string) | |
382 | |
383 (defcustom org-comment-string "COMMENT" | |
384 "Entries starting with this keyword will never be exported. | |
385 An entry can be toggled between COMMENT and normal with | |
386 \\[org-toggle-comment]. | |
387 Changes become only effective after restarting Emacs." | |
388 :group 'org-keywords | |
389 :type 'string) | |
390 | |
391 (defcustom org-after-todo-state-change-hook nil | |
392 "Hook which is run after the state of a TODO item was changed. | |
393 The new state (a string with a todo keyword, or nil) is available in the | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
394 Lisp variable `state'." |
58792 | 395 :group 'org-keywords |
396 :type 'hook) | |
397 | |
398 ;; Variables for pre-computed regular expressions, all buffer local | |
399 (defvar org-todo-kwd-priority-p nil | |
400 "Do TODO items have priorities?") | |
401 (make-variable-buffer-local 'org-todo-kwd-priority-p) | |
402 (defvar org-todo-kwd-max-priority nil | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
403 "Maximum priority of TODO items.") |
58792 | 404 (make-variable-buffer-local 'org-todo-kwd-max-priority) |
405 (defvar org-ds-keyword-length 12 | |
406 "Maximum length of the Deadline and SCHEDULED keywords.") | |
407 (make-variable-buffer-local 'org-ds-keyword-length) | |
408 (defvar org-done-string nil | |
409 "The last string in `org-todo-keywords', indicating an item is DONE.") | |
410 (make-variable-buffer-local 'org-done-string) | |
411 (defvar org-todo-regexp nil | |
412 "Matches any of the TODO state keywords.") | |
413 (make-variable-buffer-local 'org-todo-regexp) | |
414 (defvar org-not-done-regexp nil | |
415 "Matches any of the TODO state keywords except the last one.") | |
416 (make-variable-buffer-local 'org-not-done-regexp) | |
417 (defvar org-todo-line-regexp nil | |
418 "Matches a headline and puts TODO state into group 2 if present.") | |
419 (make-variable-buffer-local 'org-todo-line-regexp) | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
420 (defvar org-nl-done-regexp nil |
58792 | 421 "Matches newline followed by a headline with the DONE keyword.") |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
422 (make-variable-buffer-local 'org-nl-done-regexp) |
58792 | 423 (defvar org-looking-at-done-regexp nil |
424 "Matches the DONE keyword a point.") | |
425 (make-variable-buffer-local 'org-looking-at-done-regexp) | |
426 (defvar org-deadline-regexp nil | |
427 "Matches the DEADLINE keyword.") | |
428 (make-variable-buffer-local 'org-deadline-regexp) | |
429 (defvar org-deadline-time-regexp nil | |
430 "Matches the DEADLINE keyword together with a time stamp.") | |
431 (make-variable-buffer-local 'org-deadline-time-regexp) | |
432 (defvar org-deadline-line-regexp nil | |
433 "Matches the DEADLINE keyword and the rest of the line.") | |
434 (make-variable-buffer-local 'org-deadline-line-regexp) | |
435 (defvar org-scheduled-regexp nil | |
436 "Matches the SCHEDULED keyword.") | |
437 (make-variable-buffer-local 'org-scheduled-regexp) | |
438 (defvar org-scheduled-time-regexp nil | |
439 "Matches the SCHEDULED keyword together with a time stamp.") | |
440 (make-variable-buffer-local 'org-scheduled-time-regexp) | |
441 | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
442 (defvar org-category nil |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
443 "Variable used by org files to set a category for agenda display. |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
444 Such files should use a file variable to set it, for example |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
445 |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
446 -*- mode: org; org-category: \"ELisp\" |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
447 |
62712
b9935dc86aa4
(org-mode): Use `define-derived-mode' to define
Carsten Dominik <dominik@science.uva.nl>
parents:
62546
diff
changeset
|
448 or contain a special line |
b9935dc86aa4
(org-mode): Use `define-derived-mode' to define
Carsten Dominik <dominik@science.uva.nl>
parents:
62546
diff
changeset
|
449 |
b9935dc86aa4
(org-mode): Use `define-derived-mode' to define
Carsten Dominik <dominik@science.uva.nl>
parents:
62546
diff
changeset
|
450 #+CATEGORY: ELisp |
b9935dc86aa4
(org-mode): Use `define-derived-mode' to define
Carsten Dominik <dominik@science.uva.nl>
parents:
62546
diff
changeset
|
451 |
b9935dc86aa4
(org-mode): Use `define-derived-mode' to define
Carsten Dominik <dominik@science.uva.nl>
parents:
62546
diff
changeset
|
452 If the file does not specify a category, then file's base name |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
453 is used instead.") |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
454 |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
455 (defun org-set-regexps-and-options () |
58792 | 456 "Precompute regular expressions for current buffer." |
457 (when (eq major-mode 'org-mode) | |
458 (let ((re (org-make-options-regexp | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
459 '("CATEGORY" "SEQ_TODO" "PRI_TODO" "TYP_TODO" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
460 "STARTUP" "ARCHIVE"))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
461 (splitre "[ \t]+") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
462 kwds int key value cat arch) |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
463 (save-excursion |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
464 (save-restriction |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
465 (widen) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
466 (goto-char (point-min)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
467 (while (re-search-forward re nil t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
468 (setq key (match-string 1) value (match-string 2)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
469 (cond |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
470 ((equal key "CATEGORY") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
471 (if (string-match "[ \t]+$" value) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
472 (setq value (replace-match "" t t value))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
473 (setq cat (intern value))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
474 ((equal key "SEQ_TODO") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
475 (setq int 'sequence |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
476 kwds (append kwds (org-split-string value splitre)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
477 ((equal key "PRI_TODO") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
478 (setq int 'priority |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
479 kwds (append kwds (org-split-string value splitre)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
480 ((equal key "TYP_TODO") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
481 (setq int 'type |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
482 kwds (append kwds (org-split-string value splitre)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
483 ((equal key "STARTUP") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
484 (let ((opts (org-split-string value splitre)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
485 (set '(("fold" org-startup-folded t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
486 ("nofold" org-startup-folded nil) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
487 ("content" org-startup-folded content) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
488 ("dlcheck" org-startup-with-deadline-check t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
489 ("nodlcheck" org-startup-with-deadline-check nil))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
490 l var val) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
491 (while (setq l (assoc (pop opts) set)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
492 (setq var (nth 1 l) val (nth 2 l)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
493 (set (make-local-variable var) val)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
494 ((equal key "ARCHIVE") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
495 (string-match " *$" value) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
496 (setq arch (replace-match "" t t value)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
497 (remove-text-properties 0 (length arch) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
498 '(face t fontified t) arch))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
499 ))) |
58792 | 500 (and cat (set (make-local-variable 'org-category) cat)) |
501 (and kwds (set (make-local-variable 'org-todo-keywords) kwds)) | |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
502 (and arch (set (make-local-variable 'org-archive-location) arch)) |
58792 | 503 (and int (set (make-local-variable 'org-todo-interpretation) int))) |
504 ;; Compute the regular expressions and other local variables | |
505 (setq org-todo-kwd-priority-p (equal org-todo-interpretation 'priority) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
506 org-todo-kwd-max-priority (1- (length org-todo-keywords)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
507 org-ds-keyword-length (+ 2 (max (length org-deadline-string) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
508 (length org-scheduled-string))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
509 org-done-string |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
510 (nth (1- (length org-todo-keywords)) org-todo-keywords) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
511 org-todo-regexp |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
512 (concat "\\<\\(" (mapconcat 'regexp-quote org-todo-keywords |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
513 "\\|") "\\)\\>") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
514 org-not-done-regexp |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
515 (concat "\\<\\(" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
516 (mapconcat 'regexp-quote |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
517 (nreverse (cdr (reverse org-todo-keywords))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
518 "\\|") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
519 "\\)\\>") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
520 org-todo-line-regexp |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
521 (concat "^\\(\\*+\\)[ \t]*\\(" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
522 (mapconcat 'regexp-quote org-todo-keywords "\\|") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
523 "\\)? *\\(.*\\)") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
524 org-nl-done-regexp |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
525 (concat "[\r\n]\\*+[ \t]+" org-done-string "\\>") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
526 org-looking-at-done-regexp (concat "^" org-done-string "\\>") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
527 org-deadline-regexp (concat "\\<" org-deadline-string) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
528 org-deadline-time-regexp |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
529 (concat "\\<" org-deadline-string " *<\\([^>]+\\)>") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
530 org-deadline-line-regexp |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
531 (concat "\\<\\(" org-deadline-string "\\).*") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
532 org-scheduled-regexp |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
533 (concat "\\<" org-scheduled-string) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
534 org-scheduled-time-regexp |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
535 (concat "\\<" org-scheduled-string " *<\\([^>]+\\)>")) |
58792 | 536 (org-set-font-lock-defaults))) |
537 | |
538 (defgroup org-time nil | |
539 "Options concerning time stamps and deadlines in Org-mode." | |
540 :tag "Org Time" | |
541 :group 'org) | |
542 | |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
543 (defconst org-time-stamp-formats '("<%Y-%m-%d %a>" . "<%Y-%m-%d %a %H:%M>") |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
544 "Formats for `format-time-string' which are used for time stamps. |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
545 It is not recommended to change this constant.") |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
546 |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
547 |
58792 | 548 (defcustom org-deadline-warning-days 30 |
549 "No. of days before expiration during which a deadline becomes active. | |
550 This variable governs the display in the org file." | |
551 :group 'org-time | |
552 :type 'number) | |
553 | |
554 (defcustom org-popup-calendar-for-date-prompt t | |
555 "Non-nil means, pop up a calendar when prompting for a date. | |
556 In the calendar, the date can be selected with mouse-1. However, the | |
557 minibuffer will also be active, and you can simply enter the date as well. | |
558 When nil, only the minibuffer will be available." | |
559 :group 'org-time | |
560 :type 'number) | |
561 | |
562 (defcustom org-calendar-follow-timestamp-change t | |
563 "Non-nil means, make the calendar window follow timestamp changes. | |
564 When a timestamp is modified and the calendar window is visible, it will be | |
565 moved to the new date." | |
566 :group 'org-time | |
567 :type 'boolean) | |
568 | |
569 (defgroup org-agenda nil | |
570 "Options concerning agenda display Org-mode." | |
571 :tag "Org Agenda" | |
572 :group 'org) | |
573 | |
574 (defcustom org-agenda-files nil | |
575 "A list of org files for agenda/diary display. | |
576 Entries are added to this list with \\[org-add-file] and removed with | |
577 \\[org-remove-file]. You can also use customize to edit the list." | |
578 :group 'org-agenda | |
579 :type '(repeat file)) | |
580 | |
581 (defcustom org-select-timeline-window t | |
582 "Non-nil means, after creating a timeline, move cursor into Timeline window. | |
583 When nil, cursor will remain in the current window." | |
584 :group 'org-agenda | |
585 :type 'boolean) | |
586 | |
587 (defcustom org-select-agenda-window t | |
588 "Non-nil means, after creating an agenda, move cursor into Agenda window. | |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
589 When nil, cursor will remain in the current window." |
58792 | 590 :group 'org-agenda |
591 :type 'boolean) | |
592 | |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
593 (defcustom org-fit-agenda-window t |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
594 "Non-nil means, change window size of agenda to fit content." |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
595 :group 'org-agenda |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
596 :type 'boolean) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
597 |
58792 | 598 (defcustom org-agenda-show-all-dates t |
599 "Non-nil means, `org-agenda' shows every day in the selected range. | |
600 When nil, only the days which actually have entries are shown." | |
601 :group 'org-agenda | |
602 :type 'boolean) | |
603 | |
604 ;; FIXME: First day of month works only for current month because it would | |
605 ;; require a variable ndays treatment. | |
606 (defcustom org-agenda-start-on-weekday 1 | |
607 "Non-nil means, start the overview always on the specified weekday. | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
608 0 Denotes Sunday, 1 denotes Monday etc. |
58792 | 609 When nil, always start on the current day." |
610 :group 'org-agenda | |
611 :type '(choice (const :tag "Today" nil) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
612 (const :tag "First day of month" t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
613 (number :tag "Weekday No."))) |
58792 | 614 |
615 (defcustom org-agenda-ndays 7 | |
616 "Number of days to include in overview display." | |
617 :group 'org-agenda | |
618 :type 'number) | |
619 | |
620 (defcustom org-agenda-include-all-todo t | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
621 "Non-nil means, the agenda will always contain all TODO entries. |
58792 | 622 When nil, date-less entries will only be shown if `org-agenda' is called |
623 with a prefix argument. | |
624 When non-nil, the TODO entries will be listed at the top of the agenda, before | |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
625 the entries for specific days." |
58792 | 626 :group 'org-agenda |
627 :type 'boolean) | |
628 | |
629 (defcustom org-agenda-include-diary nil | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
630 "If non-nil, include in the agenda entries from the Emacs Calendar's diary." |
58792 | 631 :group 'org-agenda |
632 :type 'boolean) | |
633 | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
634 (defcustom org-calendar-to-agenda-key [?c] |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
635 "The key to be installed in `calendar-mode-map' for switching to the agenda. |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
636 The command `org-calendar-goto-agenda' will be bound to this key. The |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
637 default is the character `c' because then`c' can be used to switch back and |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
638 force between agenda and calendar." |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
639 :group 'org-agenda |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
640 :type 'sexp) |
58792 | 641 |
642 (defcustom org-agenda-sorting-strategy '(time-up category-keep priority-down) | |
643 "Sorting structure for the agenda items of a single day. | |
644 This is a list of symbols which will be used in sequence to determine | |
645 if an entry should be listed before another entry. The following | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
646 symbols are recognized. |
58792 | 647 |
648 time-up Put entries with time-of-day indications first, early first | |
649 time-down Put entries with time-of-day indications first, late first | |
650 category-keep Keep the default order of categories, corresponding to the | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
651 sequence in `org-agenda-files'. |
58792 | 652 category-up Sort alphabetically by category, A-Z. |
653 category-down Sort alphabetically by category, Z-A. | |
654 priority-up Sort numerically by priority, high priority last. | |
655 priority-down Sort numerically by priority, high priority first. | |
656 | |
657 The different possibilities will be tried in sequence, and testing stops | |
658 if one comparison returns a \"not-equal\". For example, the default | |
659 '(time-up category-keep priority-down) | |
660 means: Pull out all entries having a specified time of day and sort them, | |
661 in order to make a time schedule for the current day the first thing in the | |
662 agenda listing for the day. Of the entries without a time indication, keep | |
663 the grouped in categories, don't sort the categories, but keep them in | |
664 the sequence given in `org-agenda-files'. Within each category sort by | |
665 priority. | |
666 | |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
667 Leaving out `category-keep' would mean that items will be sorted across |
58792 | 668 categories by priority." |
669 :group 'org-agenda | |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
670 :type '(repeat |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
671 (choice |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
672 (const time-up) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
673 (const time-down) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
674 (const category-keep) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
675 (const category-up) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
676 (const category-down) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
677 (const priority-up) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
678 (const priority-down)))) |
58792 | 679 |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
680 (defcustom org-agenda-prefix-format " %-12:c%?-12t% s" |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
681 "Format specification for the prefix of items in the agenda buffer. |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
682 This format works similar to a printf format, with the following meaning: |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
683 |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
684 %c the category of the item, \"Diary\" for entries from the diary, or |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
685 as given by the CATEGORY keyword or derived from the file name. |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
686 %t the time-of-day specification if one applies to the entry, in the |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
687 format HH:MM |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
688 %s Scheduling/Deadline information, a short string |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
689 |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
690 All specifiers work basically like the standard `%s' of printf, but may |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
691 contain two additional characters: A question mark just after the `%' and |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
692 a whitespace/punctuation character just before the final letter. |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
693 |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
694 If the first character after `%' is a question mark, the entire field |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
695 will only be included if the corresponding value applies to the |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
696 current entry. This is useful for fields which should have fixed |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
697 width when present, but zero width when absent. For example, |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
698 \"%?-12t\" will result in a 12 character time field if a time of the |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
699 day is specified, but will completely disappear in entries which do |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
700 not contain a time. |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
701 |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
702 If there is punctuation or whitespace character just before the final |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
703 format letter, this character will be appended to the field value if |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
704 the value is not empty. For example, the format \"%-12:c\" leads to |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
705 \"Diary: \" if the category is \"Diary\". If the category were be |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
706 empty, no additional colon would be interted. |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
707 |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
708 The default value of this option is \" %-12:c%?-12t% s\", meaning: |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
709 - Indent the line with two space characters |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
710 - Give the category in a 12 chars wide field, padded with whitespace on |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
711 the right (because of `-'). Append a colon if there is a category |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
712 (because of `:'). |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
713 - If there is a time-of-day, put it into a 12 chars wide field. If no |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
714 time, don't put in an empty field, just skip it (because of '?'). |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
715 - Finally, put the scheduling information and append a whitespace. |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
716 |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
717 As another example, if you don't want the time-of-day of entries in |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
718 the prefix, you could use: |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
719 |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
720 (setq org-agenda-prefix-format \" %-11:c% s\") |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
721 |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
722 See also the variable `org-agenda-remove-times-when-in-prefix'." |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
723 :type 'string |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
724 :group 'org-agenda) |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
725 |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
726 (defcustom org-timeline-prefix-format " % s" |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
727 "Like `org-agenda-prefix-format', but for the timeline of a single file." |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
728 :type 'string |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
729 :group 'org-agenda) |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
730 |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
731 (defvar org-prefix-format-compiled nil |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
732 "The compiled version of the most recently used prefix format. |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
733 Depending on which command was used last, this may be the compiled version |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
734 of `org-agenda-prefix-format' or `org-timeline-prefix-format'.") |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
735 |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
736 (defcustom org-agenda-use-time-grid t |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
737 "Non-nil means, show a time grid in the agenda schedule. |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
738 A time grid is a set of lines for specific times (like every two hours between |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
739 8:00 and 20:00. The items scheduled for a day at specific times are |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
740 sorted in between these lines. |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
741 For deails about when the grid will be shown, and what it will look like, see |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
742 the variable `org-agenda-time-grid'." |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
743 :group 'org-agenda |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
744 :type 'boolean) |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
745 |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
746 (defcustom org-agenda-time-grid |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
747 '((daily today require-timed) |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
748 "----------------" |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
749 (800 1000 1200 1400 1600 1800 2000)) |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
750 |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
751 "The settings for time grid for agenda display. |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
752 This is a list of three items. The first item is again a list. It contains |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
753 symbols specifying conditions when the grid should be displayed: |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
754 |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
755 daily if the agenda shows a single day |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
756 weekly if the agenda shows an entire week |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
757 today show grid on current date, independent of daily/weekly display |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
758 require-timed show grid only if at least on item has a time specification |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
759 |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
760 The second item is a string which will be places behing the grid time. |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
761 |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
762 The third item is a list of integers, indicating the times that should have |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
763 a grid line." |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
764 :group 'org-agenda |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
765 :type |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
766 '(list |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
767 (set :greedy t :tag "Grid Display Options" |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
768 (const :tag "Show grid in single day agenda display" daily) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
769 (const :tag "Show grid in weekly agenda display" weekly) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
770 (const :tag "Always show grid for today" today) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
771 (const :tag "Show grid only if any timed entries are present" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
772 require-timed) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
773 (const :tag "Skip grid times already present in an entry" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
774 remove-match)) |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
775 (string :tag "Grid String") |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
776 (repeat :tag "Grid Times" (integer :tag "Time")))) |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
777 |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
778 (defcustom org-agenda-remove-times-when-in-prefix t |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
779 "Non-nil means, remove duplicate time specifications in agenda items. |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
780 When the format `org-agenda-prefix-format' contains a `%t' specifier, a |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
781 time-of-day specification in a headline or diary entry is extracted and |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
782 placed into the prefix. If this option is non-nil, the original specification |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
783 \(a timestamp or -range, or just a plain time(range) specification like |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
784 11:30-4pm) will be removed for agenda display. This makes the agenda less |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
785 cluttered. |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
786 The option can be t or nil. It may also be the symbol `beg', indicating |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
787 that the time should only be removed what it is located at the beginning of |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
788 the headline/diary entry." |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
789 :group 'org-agenda |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
790 :type '(choice |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
791 (const :tag "Always" t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
792 (const :tag "Never" nil) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
793 (const :tag "When at beginning of entry" beg))) |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
794 |
58792 | 795 (defcustom org-sort-agenda-notime-is-late t |
796 "Non-nil means, items without time are considered late. | |
797 This is only relevant for sorting. When t, items which have no explicit | |
798 time like 15:30 will be considered as 24:01, i.e. later than any items which | |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
799 do have a time. When nil, the default time is before 0:00. You can use this |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
800 option to decide if the schedule for today should come before or after timeless |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
801 agenda entries." |
58792 | 802 :group 'org-agenda |
803 :type 'boolean) | |
804 | |
805 (defgroup org-structure nil | |
806 "Options concerning structure editing in Org-mode." | |
807 :tag "Org Structure" | |
808 :group 'org) | |
809 | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
810 (defcustom org-cycle-hook '(org-optimize-window-after-visibility-change) |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
811 "Hook that is run after `org-cycle' has changed the buffer visibility. |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
812 The function(s) in this hook must accept a single argument which indicates |
62076
4f2150e05f24
(org-get-entries-from-diary): Remove unused vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61924
diff
changeset
|
813 the new state that was set by the most recent `org-cycle' command. The |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
814 argument is a symbol. After a global state change, it can have the values |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
815 `overview', `content', or `all'. After a local state change, it can have |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
816 the values `folded', `children', or `subtree'." |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
817 :group 'org-structure |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
818 :type 'hook) |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
819 |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
820 (defcustom org-occur-hook '(org-first-headline-recenter) |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
821 "Hook that is run after `org-occur' has constructed a sparse tree. |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
822 This can be used to recenter the window to show as much of the structure |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
823 as possible." |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
824 :group 'org-structure |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
825 :type 'hook) |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
826 |
58792 | 827 (defcustom org-adapt-indentation t |
828 "Non-nil means, adapt indentation when promoting and demoting. | |
829 When this is set and the *entire* text in an entry is indented, the | |
830 indentation is increased by one space in a demotion command, and | |
831 decreased by one in a promotion command. If any line in the entry | |
832 body starts at column 0, indentation is not changed at all." | |
833 :group 'org-structure | |
834 :type 'boolean) | |
835 | |
836 (defcustom org-cycle-emulate-tab t | |
837 "Where should `org-cycle' emulate TAB. | |
838 nil Never | |
839 white Only in completely white lines | |
840 t Everywhere except in headlines" | |
841 :group 'org-structure | |
842 :type '(choice (const :tag "Never" nil) | |
843 (const :tag "Only in completely white lines" white) | |
844 (const :tag "Everywhere except in headlines" t) | |
845 )) | |
846 | |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
847 (defcustom org-show-following-heading t |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
848 "Non-nil means, show heading following match in `org-occur'. |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
849 When doing an `org-occur' it is useful to show the headline which |
62076
4f2150e05f24
(org-get-entries-from-diary): Remove unused vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61924
diff
changeset
|
850 follows the match, even if they do not match the regexp. This makes it |
4f2150e05f24
(org-get-entries-from-diary): Remove unused vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61924
diff
changeset
|
851 easier to edit directly inside the sparse tree. However, if you use |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
852 org-occur mainly as an overview, the following headlines are |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
853 unnecessary clutter." |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
854 :group 'org-structure |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
855 :type 'boolean) |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
856 |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
857 (defcustom org-archive-location "%s_archive::" |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
858 "The location where subtrees should be archived. |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
859 This string consists of two parts, separated by a double-colon. |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
860 |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
861 The first part is a file name - when omitted, archiving happens in the same |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
862 file. %s will be replaced by the current file name (without directory part). |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
863 Archiving to a different file is useful to keep archived entries from |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
864 contributing to the Org-mode Agenda. |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
865 |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
866 The part after the double colon is a headline. The archived entries will be |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
867 filed under that headline. When omitted, the subtrees are simply filed away |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
868 at the end of the file, as top-level entries. |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
869 |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
870 Here are a few examples: |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
871 \"%s_archive::\" |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
872 If the current file is Projects.org, archive in file |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
873 Projects.org_archive, as top-level trees. This is the default. |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
874 |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
875 \"::* Archived Tasks\" |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
876 Archive in the current file, under the top-level headline |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
877 \"* Archived Tasks\". |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
878 |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
879 \"~/org/archive.org::\" |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
880 Archive in file ~/org/archive.org (absolute path), as top-level trees. |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
881 |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
882 \"basement::** Finished Tasks\" |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
883 Archive in file ./basement (relative path), as level 3 trees |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
884 below the level 2 heading \"** Finished Tasks\". |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
885 |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
886 You may set this option on a per-file basis by adding to the buffer a |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
887 line like |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
888 |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
889 #+ARCHIVE: basement::** Finished Tasks" |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
890 :group 'org-structure |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
891 :type 'string) |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
892 |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
893 (defcustom org-archive-mark-done t |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
894 "Non-nil means, mark archived entries as DONE." |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
895 :group 'org-structure |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
896 :type 'boolean) |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
897 |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
898 (defcustom org-archive-stamp-time t |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
899 "Non-nil means, add a time stamp to archived entries. |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
900 The time stamp will be added directly after the TODO state keyword in the |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
901 first line, so it is probably best to use this in combinations with |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
902 `org-archive-mark-done'." |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
903 :group 'org-structure |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
904 :type 'boolean) |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
905 |
58792 | 906 (defgroup org-link nil |
907 "Options concerning links in Org-mode." | |
908 :tag "Org Link" | |
909 :group 'org) | |
910 | |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
911 (defcustom org-link-format "<%s>" |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
912 "Default format for linkes in the buffer. |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
913 This is a format string for printf, %s will be replaced by the link text. |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
914 If you want to make sure that your link is always properly terminated, |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
915 include angle brackets into this format, like \"<%s>\". Some people also |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
916 recommend an additional URL: prefix, so the format would be \"<URL:%s>\"." |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
917 :group 'org-link |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
918 :type '(choice |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
919 (const :tag "\"%s\" (e.g. http://www.there.com)" "%s") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
920 (const :tag "\"<%s>\" (e.g. <http://www.there.com>)" "<%s>") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
921 (const :tag "\"<URL:%s>\" (e.g. <URL:http://www.there.com>)" "<URL:%s>") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
922 (string :tag "Other" :value "<%s>"))) |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
923 |
58792 | 924 (defcustom org-allow-space-in-links t |
925 "Non-nil means, file names in links may contain space characters. | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
926 When nil, it becomes possible to put several links into a line. |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
927 Note that in tables, a link never extends accross fields, so in a table |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
928 it is always possible to put several links into a line. |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
929 Changing this varable requires a re-launch of Emacs of become effective." |
58792 | 930 :group 'org-link |
931 :type 'boolean) | |
932 | |
933 (defcustom org-line-numbers-in-file-links t | |
934 "Non-nil means, file links from `org-store-link' contain line numbers. | |
935 The line number will be added to the file name with :NNN and interpreted | |
936 by the command `org-open-at-point'. | |
937 Using a prefix arg to the command \\[org-store-link] (`org-store-link') | |
938 negates this setting for the duration of the command." | |
939 :group 'org-link | |
940 :type 'boolean) | |
941 | |
942 (defcustom org-keep-stored-link-after-insertion nil | |
943 "Non-nil means, keep link in list for entire session. | |
944 | |
945 The command `org-store-link' adds a link pointing to the current | |
62076
4f2150e05f24
(org-get-entries-from-diary): Remove unused vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61924
diff
changeset
|
946 location to an internal list. These links accumulate during a session. |
58792 | 947 The command `org-insert-link' can be used to insert links into any |
948 Org-mode file (offering completion for all stored links). When this | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
949 option is nil, every link which has been inserted once using \\[org-insert-link] |
58792 | 950 will be removed from the list, to make completing the unused links |
951 more efficient." | |
952 :group 'org-link | |
953 :type 'boolean) | |
954 | |
955 (defcustom org-link-frame-setup | |
956 '((vm . vm-visit-folder-other-frame) | |
957 (gnus . gnus-other-frame) | |
958 (file . find-file-other-window)) | |
959 "Setup the frame configuration for following links. | |
960 When following a link with Emacs, it may often be useful to display | |
961 this link in another window or frame. This variable can be used to | |
962 set this up for the different types of links. | |
963 For VM, use any of | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
964 `vm-visit-folder' |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
965 `vm-visit-folder-other-frame' |
58792 | 966 For Gnus, use any of |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
967 `gnus' |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
968 `gnus-other-frame' |
58792 | 969 For FILE, use any of |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
970 `find-file' |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
971 `find-file-other-window' |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
972 `find-file-other-frame' |
58792 | 973 For the calendar, use the variable `calendar-setup'. |
974 For BBDB, it is currently only possible to display the matches in | |
975 another window." | |
976 :group 'org-link | |
977 :type '(list | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
978 (cons (const vm) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
979 (choice |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
980 (const vm-visit-folder) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
981 (const vm-visit-folder-other-window) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
982 (const vm-visit-folder-other-frame))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
983 (cons (const gnus) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
984 (choice |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
985 (const gnus) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
986 (const gnus-other-frame))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
987 (cons (const file) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
988 (choice |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
989 (const find-file) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
990 (const find-file-other-window) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
991 (const find-file-other-frame))))) |
58792 | 992 |
993 (defcustom org-usenet-links-prefer-google nil | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
994 "Non-nil means, `org-store-link' will create web links to google groups. |
58792 | 995 When nil, Gnus will be used for such links. |
996 Using a prefix arg to the command \\[org-store-link] (`org-store-link') | |
997 negates this setting for the duration of the command." | |
998 :group 'org-link | |
999 :type 'boolean) | |
1000 | |
1001 (defcustom org-open-non-existing-files nil | |
1002 "Non-nil means, `org-open-file' will open non-existing file. | |
1003 When nil, an error will be generated." | |
1004 :group 'org-link | |
1005 :type 'boolean) | |
1006 | |
1007 (defcustom org-confirm-shell-links t | |
1008 "Non-nil means, ask for confirmation before executing shell links. | |
1009 The default is true, to keep new users from shooting into their own foot." | |
1010 :group 'org-link | |
1011 :type 'boolean) | |
1012 | |
64078
ebf5ec3a071e
(org-file-apps-defaults-gnu): Renamed from org-file-apps-defaults-linux.
Richard M. Stallman <rms@gnu.org>
parents:
64057
diff
changeset
|
1013 (defconst org-file-apps-defaults-gnu |
58792 | 1014 '((t . emacs) |
1015 ("jpg" . "xv %s") | |
1016 ("gif" . "xv %s") | |
1017 ("ppm" . "xv %s") | |
1018 ("pgm" . "xv %s") | |
1019 ("pbm" . "xv %s") | |
1020 ("tif" . "xv %s") | |
1021 ("png" . "xv %s") | |
1022 ("ps" . "gv %s") | |
1023 ("ps.gz" . "gv %s") | |
1024 ("eps" . "gv %s") | |
1025 ("eps.gz" . "gv %s") | |
1026 ("dvi" . "xdvi %s") | |
1027 ("mpeg" . "plaympeg %s") | |
1028 ("mp3" . "plaympeg %s") | |
1029 ("fig" . "xfig %s") | |
1030 ("pdf" . "acroread %s") | |
1031 ("doc" . "soffice %s") | |
1032 ("ppt" . "soffice %s") | |
1033 ("pps" . "soffice %s") | |
1034 ("html" . "netscape -remote openURL(%s,new-window)") | |
1035 ("htm" . "netscape -remote openURL(%s,new-window)") | |
1036 ("xs" . "soffice %s")) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1037 "Default file applications on a UNIX/LINUX system. |
58792 | 1038 See `org-file-apps'.") |
1039 | |
1040 (defconst org-file-apps-defaults-macosx | |
1041 '((t . "open %s") | |
1042 ("ps" . "gv %s") | |
1043 ("ps.gz" . "gv %s") | |
1044 ("eps" . "gv %s") | |
1045 ("eps.gz" . "gv %s") | |
1046 ("dvi" . "xdvi %s") | |
1047 ("fig" . "xfig %s")) | |
1048 "Default file applications on a MacOS X system. | |
1049 The system \"open\" is known as a default, but we use X11 applications | |
1050 for some files for which the OS does not have a good default. | |
1051 See `org-file-apps'.") | |
1052 | |
1053 (defconst org-file-apps-defaults-windowsnt | |
1054 '((t . (w32-shell-execute "open" file))) | |
1055 "Default file applications on a Windows NT system. | |
1056 The system \"open\" is used for most files. | |
1057 See `org-file-apps'.") | |
1058 | |
1059 (defcustom org-file-apps | |
1060 '( | |
1061 ("txt" . emacs) | |
1062 ("tex" . emacs) | |
1063 ("ltx" . emacs) | |
1064 ("org" . emacs) | |
1065 ("el" . emacs) | |
1066 ) | |
1067 "External applications for opening `file:path' items in a document. | |
1068 Org-mode uses system defaults for different file types, but | |
1069 you can use this variable to set the application for a given file | |
1070 extension. The entries in this list are cons cells with a file extension | |
1071 and the corresponding command. Possible values for the command are: | |
1072 `emacs' The file will be visited by the current Emacs process. | |
1073 `default' Use the default application for this file type. | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
1074 string A command to be executed by a shell; %s will be replaced |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1075 by the path to the file. |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
1076 sexp A Lisp form which will be evaluated. The file path will |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1077 be available in the Lisp variable `file'. |
58792 | 1078 For more examples, see the system specific constants |
1079 `org-file-apps-defaults-macosx' | |
1080 `org-file-apps-defaults-windowsnt' | |
64078
ebf5ec3a071e
(org-file-apps-defaults-gnu): Renamed from org-file-apps-defaults-linux.
Richard M. Stallman <rms@gnu.org>
parents:
64057
diff
changeset
|
1081 `org-file-apps-defaults-gnu'." |
58792 | 1082 :group 'org-link |
1083 :type '(repeat | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1084 (cons (string :tag "Extension") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1085 (choice :value "" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1086 (const :tag "Visit with Emacs" 'emacs) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1087 (const :tag "Use system default" 'default) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1088 (string :tag "Command") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1089 (sexp :tag "Lisp form"))))) |
58792 | 1090 |
1091 | |
1092 (defgroup org-remember nil | |
1093 "Options concerning interaction with remember.el." | |
1094 :tag "Org Remember" | |
1095 :group 'org) | |
1096 | |
1097 (defcustom org-directory "~/org" | |
1098 "Directory with org files. | |
1099 This directory will be used as default to prompt for org files. | |
1100 Used by the hooks for remember.el." | |
1101 :group 'org-remember | |
1102 :type 'directory) | |
1103 | |
1104 (defcustom org-default-notes-file "~/.notes" | |
1105 "Default target for storing notes. | |
1106 Used by the hooks for remember.el. This can be a string, or nil to mean | |
1107 the value of `remember-data-file'." | |
1108 :group 'org-remember | |
1109 :type '(choice | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1110 (const :tag "Default from remember-data-file" nil) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1111 file)) |
58792 | 1112 |
1113 (defcustom org-reverse-note-order nil | |
1114 "Non-nil means, store new notes at the beginning of a file or entry. | |
1115 When nil, new notes will be filed to the end of a file or entry." | |
1116 :group 'org-remember | |
1117 :type '(choice | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1118 (const :tag "Reverse always" t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1119 (const :tag "Reverse never" nil) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1120 (repeat :tag "By file name regexp" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1121 (cons regexp boolean)))) |
58792 | 1122 |
1123 (defgroup org-table nil | |
1124 "Options concerning tables in Org-mode." | |
1125 :tag "Org Table" | |
1126 :group 'org) | |
1127 | |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
1128 (defcustom org-enable-table-editor 'optimized |
58792 | 1129 "Non-nil means, lines starting with \"|\" are handled by the table editor. |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
1130 When nil, such lines will be treated like ordinary lines. |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
1131 |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
1132 When equal to the symbol `optimized', the table editor will be optimized to |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1133 do the following |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
1134 - Use automatic overwrite mode in front of whitespace in table fields. |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1135 This make the structure of the table stay in tact as long as the edited |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
1136 field does not exceed the column width. |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
1137 - Minimize the number of realigns. Normally, the table is aligned each time |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
1138 TAB or RET are pressed to move to another field. With optimization this |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1139 happens only if changes to a field might have changed the column width. |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
1140 Optimization requires replacing the functions `self-insert-command', |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
1141 `delete-char', and `backward-delete-char' in Org-mode buffers, with a |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
1142 slight (in fact: unnoticeable) speed impact for normal typing. Org-mode is |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
1143 very good at guessing when a re-align will be necessary, but you can always |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
1144 force one with `C-c C-c'. |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
1145 |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
1146 If you would like to use the optimized version in Org-mode, but the |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
1147 un-optimized version in OrgTbl-mode, see the variable `orgtbl-optimized'. |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
1148 |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
1149 This variable can be used to turn on and off the table editor during a session, |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
1150 but in order to toggle optimization, a restart is required." |
58792 | 1151 :group 'org-table |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
1152 :type '(choice |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1153 (const :tag "off" nil) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1154 (const :tag "on" t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1155 (const :tag "on, optimized" optimized))) |
58792 | 1156 |
1157 (defcustom org-table-default-size "5x2" | |
1158 "The default size for newly created tables, Columns x Rows." | |
1159 :group 'org-table | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
1160 :type 'string) |
58792 | 1161 |
1162 (defcustom org-table-automatic-realign t | |
1163 "Non-nil means, automatically re-align table when pressing TAB or RETURN. | |
1164 When nil, aligning is only done with \\[org-table-align], or after column | |
1165 removal/insertion." | |
1166 :group 'org-table | |
1167 :type 'boolean) | |
1168 | |
1169 (defcustom org-table-spaces-around-separators '(1 . 1) | |
1170 "The number of spaces to be placed before and after separators." | |
1171 :group 'org-table | |
1172 :type '(cons (number :tag "Before \"|\"") (number :tag " After \"|\""))) | |
1173 | |
1174 (defcustom org-table-spaces-around-invisible-separators '(1 . 2) | |
1175 "The number of spaces to be placed before and after separators. | |
1176 This option applies when the column separators have been made invisible." | |
1177 :group 'org-table | |
1178 :type '(cons (number :tag "Before \"|\"") (number :tag " After \"|\""))) | |
1179 | |
1180 (defcustom org-table-number-regexp "^[<>]?[-+^.0-9]*[0-9][-+^.0-9eEdDx()%]*$" | |
1181 "Regular expression for recognizing numbers in table columns. | |
1182 If a table column contains mostly numbers, it will be aligned to the | |
1183 right. If not, it will be aligned to the left. | |
1184 | |
1185 The default value of this option is a regular expression which allows | |
1186 anything which looks remotely like a number as used in scientific | |
1187 context. For example, all of the following will be considered a | |
1188 number: | |
1189 12 12.2 2.4e-08 2x10^12 4.034+-0.02 2.7(10) >3.5 | |
1190 | |
1191 Other options offered by the customize interface are more restrictive." | |
1192 :group 'org-table | |
1193 :type '(choice | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1194 (const :tag "Positive Integers" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1195 "^[0-9]+$") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1196 (const :tag "Integers" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1197 "^[-+]?[0-9]+$") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1198 (const :tag "Floating Point Numbers" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1199 "^[-+]?\\([0-9]*\\.[0-9]+\\|[0-9]+\\.[0-9]*\\)$") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1200 (const :tag "Floating Point Number or Integer" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1201 "^[-+]?\\([0-9]*\\.[0-9]+\\|[0-9]+\\.?[0-9]*\\)$") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1202 (const :tag "Exponential, Floating point, Integer" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1203 "^[-+]?[0-9.]+\\([eEdD][-+0-9]+\\)?$") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1204 (const :tag "Very General Number-Like" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1205 "^[<>]?[-+^.0-9]*[0-9][-+^.0-9eEdDx()%]*$") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1206 (string :tag "Regexp:"))) |
58792 | 1207 |
1208 (defcustom org-table-number-fraction 0.5 | |
1209 "Fraction of numbers in a column required to make the column align right. | |
1210 In a column all non-white fields are considered. If at least this | |
1211 fraction of fields is matched by `org-table-number-fraction', | |
1212 alignment to the right border applies." | |
1213 :group 'org-table | |
1214 :type 'number) | |
1215 | |
1216 (defcustom org-export-highlight-first-table-line t | |
1217 "Non-nil means, highlight the first table line. | |
1218 In HTML export, this means use <th> instead of <td>. | |
1219 In tables created with table.el, this applies to the first table line. | |
1220 In Org-mode tables, all lines before the first horizontal separator | |
1221 line will be formatted with <th> tags." | |
1222 :group 'org-table | |
1223 :type 'boolean) | |
1224 | |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
1225 (defcustom org-table-tab-recognizes-table.el t |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
1226 "Non-nil means, TAB will automatically notice a table.el table. |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
1227 When it sees such a table, it moves point into it and - if necessary - |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
1228 calls `table-recognize-table'." |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
1229 :group 'org-table |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
1230 :type 'boolean) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
1231 |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
1232 ;; FIXME: Should this one be in another group? Which one? |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
1233 (defcustom org-enable-fixed-width-editor t |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
1234 "Non-nil means, lines starting with \":\" are treated as fixed-width. |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
1235 This currently only means, they are never auto-wrapped. |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
1236 When nil, such lines will be treated like ordinary lines." |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
1237 :group 'org-table |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
1238 :type 'boolean) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1239 |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1240 (defgroup org-table-calculation nil |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1241 "Options concerning tables in Org-mode." |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1242 :tag "Org Table Calculation" |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1243 :group 'org) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1244 |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
1245 (defcustom org-table-copy-increment t |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
1246 "Non-nil means, increment when copying current field with \\[org-table-copy-down]." |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1247 :group 'org-table-calculation |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1248 :type 'boolean) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1249 |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1250 (defcustom org-calc-default-modes |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1251 '(calc-internal-prec 12 |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1252 calc-float-format (float 5) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1253 calc-angle-mode deg |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1254 calc-prefer-frac nil |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1255 calc-symbolic-mode nil |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1256 calc-date-format (YYYY "-" MM "-" DD " " Www (" " HH ":" mm)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1257 calc-display-working-message t |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1258 ) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1259 "List with Calc mode settings for use in calc-eval for table formulas. |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1260 The list must contain alternating symbols (calc modes variables and values. |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1261 Don't remove any of the default settings, just change the values. Org-mode |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1262 relies on the variables to be present in the list." |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1263 :group 'org-table-calculation |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1264 :type 'plist) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1265 |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1266 (defcustom org-table-formula-evaluate-inline t |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1267 "Non-nil means, TAB and RET evaluate a formula in current table field. |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1268 If the current field starts with an equal sign, it is assumed to be a formula |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1269 which should be evaluated as described in the manual and in the documentation |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1270 string of the command `org-table-eval-formula'. This feature requires the |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1271 Emacs calc package. |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1272 When this variable is nil, formula calculation is only available through |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1273 the command \\[org-table-eval-formula]." |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1274 :group 'org-table-calculation |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1275 :type 'boolean) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1276 |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1277 |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1278 (defcustom org-table-formula-use-constants t |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1279 "Non-nil means, interpret constants in formulas in tables. |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1280 A constant looks like `$c' or `$Grav' and will be replaced before evaluation |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1281 by the value given in `org-table-formula-constants', or by a value obtained |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1282 from the `constants.el' package." |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1283 :group 'org-table-calculation |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1284 :type 'boolean) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1285 |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1286 (defcustom org-table-formula-constants nil |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1287 "Alist with constant names and values, for use in table formulas. |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1288 The car of each element is a name of a constant, without the `$' before it. |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1289 The cdr is the value as a string. For example, if you'd like to use the |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1290 speed of light in a formula, you would configure |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1291 |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1292 (setq org-table-formula-constants '((\"c\" . \"299792458.\"))) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1293 |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1294 and then use it in an equation like `$1*$c'." |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1295 :group 'org-table-calculation |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1296 :type '(repeat |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1297 (cons (string :tag "name") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1298 (string :tag "value")))) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1299 |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1300 (defcustom org-table-formula-numbers-only nil |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1301 "Non-nil means, calculate only with numbers in table formulas. |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1302 Then all input fields will be converted to a number, and the result |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1303 must also be a number. When nil, calc's full potential is available |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1304 in table calculations, including symbolics etc." |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1305 :group 'org-table-calculation |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
1306 :type 'boolean) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
1307 |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
1308 (defcustom org-table-allow-automatic-line-recalculation t |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
1309 "Non-nil means, lines makred with |#| or |*| will be recomputed automatically. |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
1310 Automatically means, when TAB or RET or C-c C-c are pressed in the line." |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
1311 :group 'org-table-calculation |
58792 | 1312 :type 'boolean) |
1313 | |
1314 (defgroup org-export nil | |
1315 "Options for exporting org-listings." | |
1316 :tag "Org Export" | |
1317 :group 'org) | |
1318 | |
1319 (defcustom org-export-language-setup | |
1320 '(("en" "Author" "Date" "Table of Contents") | |
1321 ("da" "Ophavsmand" "Dato" "Indhold") | |
1322 ("de" "Autor" "Datum" "Inhaltsverzeichnis") | |
1323 ("es" "Autor" "Fecha" "\xccndice") | |
1324 ("fr" "Auteur" "Date" "Table des Mati\xe8res") | |
1325 ("it" "Autore" "Data" "Indice") | |
1326 ("nl" "Auteur" "Datum" "Inhoudsopgave") | |
1327 ("nn" "Forfattar" "Dato" "Innhold") ;; nn = Norsk (nynorsk) | |
1328 ("sv" "F\xf6rfattarens" "Datum" "Inneh\xe5ll")) | |
1329 "Terms used in export text, translated to different languages. | |
1330 Use the variable `org-export-default-language' to set the language, | |
1331 or use the +OPTION lines for a per-file setting." | |
1332 :group 'org-export | |
1333 :type '(repeat | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1334 (list |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1335 (string :tag "HTML language tag") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1336 (string :tag "Author") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1337 (string :tag "Date") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1338 (string :tag "Table of Contents")))) |
58792 | 1339 |
1340 (defcustom org-export-default-language "en" | |
1341 "The default language of HTML export, as a string. | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1342 This should have an association in `org-export-language-setup'" |
58792 | 1343 :group 'org-export |
1344 :type 'string) | |
1345 | |
1346 (defcustom org-export-headline-levels 3 | |
1347 "The last level which is still exported as a headline. | |
1348 Inferior levels will produce itemize lists when exported. | |
1349 Note that a numeric prefix argument to an exporter function overrides | |
1350 this setting. | |
1351 | |
1352 This option can also be set with the +OPTIONS line, e.g. \"H:2\"." | |
1353 :group 'org-export | |
1354 :type 'number) | |
1355 | |
1356 (defcustom org-export-with-section-numbers t | |
1357 "Non-nil means, add section numbers to headlines when exporting. | |
1358 | |
1359 This option can also be set with the +OPTIONS line, e.g. \"num:t\"." | |
1360 :group 'org-export | |
1361 :type 'boolean) | |
1362 | |
1363 (defcustom org-export-with-toc t | |
1364 "Non-nil means, create a table of contents in exported files. | |
1365 The TOC contains headlines with levels up to`org-export-headline-levels'. | |
1366 | |
1367 Headlines which contain any TODO items will be marked with \"(*)\" in | |
1368 ASCII export, and with red color in HTML output. | |
1369 | |
1370 In HTML output, the TOC will be clickable. | |
1371 | |
1372 This option can also be set with the +OPTIONS line, e.g. \"toc:nil\"." | |
1373 :group 'org-export | |
1374 :type 'boolean) | |
1375 | |
1376 (defcustom org-export-preserve-breaks nil | |
1377 "Non-nil means, preserve all line breaks when exporting. | |
1378 Normally, in HTML output paragraphs will be reformatted. In ASCII | |
1379 export, line breaks will always be preserved, regardless of this variable. | |
1380 | |
1381 This option can also be set with the +OPTIONS line, e.g. \"\\n:t\"." | |
1382 :group 'org-export | |
1383 :type 'boolean) | |
1384 | |
1385 (defcustom org-export-html-inline-images t | |
1386 "Non-nil means, inline images into exported HTML pages. | |
1387 The link will still be to the original location of the image file. | |
1388 So if you are moving the page, lets say to your public HTML site, | |
1389 you will have to move the image and maybe change the link." | |
1390 :group 'org-export | |
1391 :type 'boolean) | |
1392 | |
1393 (defcustom org-export-html-expand t | |
1394 "Non-nil means, for HTML export, treat @<...> as HTML tag. | |
1395 When nil, these tags will be exported as plain text and therefore | |
1396 not be interpreted by a browser. | |
1397 | |
1398 This option can also be set with the +OPTIONS line, e.g. \"@:nil\"." | |
1399 :group 'org-export | |
1400 :type 'boolean) | |
1401 | |
1402 (defcustom org-export-with-fixed-width t | |
1403 "Non-nil means, lines starting with \":\" will be in fixed width font. | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
1404 This can be used to have pre-formatted text, fragments of code etc. For |
58792 | 1405 example |
1406 : ;; Some Lisp examples | |
1407 : (while (defc cnt) | |
1408 : (ding)) | |
1409 will be looking just like this in also HTML. In ASCII export, this option | |
1410 has no effect. | |
1411 | |
1412 This option can also be set with the +OPTIONS line, e.g. \"::nil\"." | |
1413 :group 'org-export | |
1414 :type 'boolean) | |
1415 | |
1416 (defcustom org-export-with-tables t | |
62076
4f2150e05f24
(org-get-entries-from-diary): Remove unused vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61924
diff
changeset
|
1417 "If non-nil, lines starting with \"|\" define a table. |
58792 | 1418 For example: |
1419 | |
1420 | Name | Address | Birthday | | |
1421 |-------------+----------+-----------| | |
1422 | Arthur Dent | England | 29.2.2100 | | |
1423 | |
1424 In ASCII export, this option has no effect. | |
1425 | |
1426 This option can also be set with the +OPTIONS line, e.g. \"|:nil\"." | |
1427 :group 'org-export | |
1428 :type 'boolean) | |
1429 | |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
1430 (defcustom org-export-prefer-native-exporter-for-tables nil |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
1431 "Non-nil means, always export tables created with table.el natively. |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
1432 Natively means, use the HTML code generator in table.el. |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
1433 When nil, Org-mode's own HTML generator is used when possible (i.e. if |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
1434 the table does not use row- or column-spanning). This has the |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
1435 advantage, that the automatic HTML conversions for math symbols and |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
1436 sub/superscripts can be applied. Org-mode's HTML generator is also |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
1437 much faster." |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
1438 :group 'org-export |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
1439 :type 'boolean) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
1440 |
58792 | 1441 (defcustom org-export-html-table-tag |
1442 "<table border=1 cellspacing=0 cellpadding=6>" | |
1443 "The HTML tag used to start a table. | |
1444 This must be a <table> tag, but you may change the options like | |
1445 borders and spacing." | |
1446 :group 'org-export | |
1447 :type 'string) | |
1448 | |
1449 (defcustom org-export-with-emphasize t | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
1450 "Non-nil means, interpret *word*, /word/, and _word_ as emphasized text. |
58792 | 1451 If the export target supports emphasizing text, the word will be |
1452 typeset in bold, italic, or underlined, respectively. Works only for | |
1453 single words, but you can say: I *really* *mean* *this*. | |
1454 In ASCII export, this option has no effect. | |
1455 | |
1456 This option can also be set with the +OPTIONS line, e.g. \"*:nil\"." | |
1457 :group 'org-export | |
1458 :type 'boolean) | |
1459 | |
1460 (defcustom org-match-sexp-depth 3 | |
1461 "Number of stacked braces for sub/superscript matching. | |
1462 This has to be set before loading org.el to be effective." | |
1463 :group 'org-export | |
1464 :type 'integer) | |
1465 | |
1466 ;; FIXME: Should () parens be removed as well in sub/superscripts? | |
1467 (defcustom org-export-with-sub-superscripts t | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
1468 "Non-nil means, interpret \"_\" and \"^\" for export. |
58792 | 1469 When this option is turned on, you can use TeX-like syntax for sub- and |
1470 superscripts. Several characters after \"_\" or \"^\" will be | |
1471 considered as a single item - so grouping with {} is normally not | |
1472 needed. For example, the following things will be parsed as single | |
1473 sub- or superscripts. | |
1474 | |
1475 10^24 or 10^tau several digits will be considered 1 item | |
1476 10^-12 or 10^-tau a leading sign with digits or a word | |
1477 x^2-y^3 will be read as x^2 - y^3, because items are | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1478 terminated by almost any nonword/nondigit char. |
58792 | 1479 x_{i^2} or x^(2-i) braces or parenthesis do grouping. |
1480 | |
1481 Still, ambiguity is possible - so when in doubt use {} to enclose the | |
1482 sub/superscript. | |
1483 In ASCII export, this option has no effect. | |
1484 | |
1485 This option can also be set with the +OPTIONS line, e.g. \"^:nil\"." | |
1486 :group 'org-export | |
1487 :type 'boolean) | |
1488 | |
1489 (defcustom org-export-with-TeX-macros t | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
1490 "Non-nil means, interpret simple TeX-like macros when exporting. |
58792 | 1491 For example, HTML export converts \\alpha to α and \\AA to Å. |
1492 No only real TeX macros will work here, but the standard HTML entities | |
1493 for math can be used as macro names as well. For a list of supported | |
1494 names in HTML export, see the constant `org-html-entities'. | |
1495 In ASCII export, this option has no effect. | |
1496 | |
1497 This option can also be set with the +OPTIONS line, e.g. \"TeX:nil\"." | |
1498 :group 'org-export | |
1499 :type 'boolean) | |
1500 | |
1501 (defcustom org-export-html-with-timestamp nil | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
1502 "If non-nil, write `org-export-html-html-helper-timestamp' |
58792 | 1503 into the exported html text. Otherwise, the buffer will just be saved |
1504 to a file." | |
1505 :group 'org-export | |
1506 :type 'boolean) | |
1507 | |
1508 (defcustom org-export-html-html-helper-timestamp | |
1509 "<br><br><hr><p><!-- hhmts start --> <!-- hhmts end -->\n" | |
1510 "The HTML tag used as timestamp delimiter for HTML-helper-mode." | |
1511 :group 'org-export | |
1512 :type 'string) | |
1513 | |
1514 (defcustom org-export-ascii-show-new-buffer t | |
1515 "Non-nil means, popup buffer containing the exported ASCII text. | |
1516 Otherwise the buffer will just be saved to a file and stay hidden." | |
1517 :group 'org-export | |
1518 :type 'boolean) | |
1519 | |
1520 (defcustom org-export-html-show-new-buffer nil | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1521 "Non-nil means, popup buffer containing the exported html text. |
58792 | 1522 Otherwise, the buffer will just be saved to a file and stay hidden." |
1523 :group 'org-export | |
1524 :type 'boolean) | |
1525 | |
1526 (defgroup org-faces nil | |
1527 "Faces for highlighting in Org-mode." | |
1528 :tag "Org Faces" | |
1529 :group 'org) | |
1530 | |
63225
7660591a3c92
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-389
Miles Bader <miles@gnu.org>
parents:
63110
diff
changeset
|
1531 (defface org-level-1 ;; font-lock-function-name-face |
58792 | 1532 '((((type tty) (class color)) (:foreground "blue" :weight bold)) |
1533 (((class color) (background light)) (:foreground "Blue")) | |
1534 (((class color) (background dark)) (:foreground "LightSkyBlue")) | |
1535 (t (:inverse-video t :bold t))) | |
1536 "Face used for level 1 headlines." | |
1537 :group 'org-faces) | |
63225
7660591a3c92
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-389
Miles Bader <miles@gnu.org>
parents:
63110
diff
changeset
|
1538 |
7660591a3c92
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-389
Miles Bader <miles@gnu.org>
parents:
63110
diff
changeset
|
1539 (defface org-level-2 ;; font-lock-variable-name-face |
58792 | 1540 '((((type tty) (class color)) (:foreground "yellow" :weight light)) |
1541 (((class color) (background light)) (:foreground "DarkGoldenrod")) | |
1542 (((class color) (background dark)) (:foreground "LightGoldenrod")) | |
1543 (t (:bold t :italic t))) | |
1544 "Face used for level 2 headlines." | |
1545 :group 'org-faces) | |
63225
7660591a3c92
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-389
Miles Bader <miles@gnu.org>
parents:
63110
diff
changeset
|
1546 |
7660591a3c92
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-389
Miles Bader <miles@gnu.org>
parents:
63110
diff
changeset
|
1547 (defface org-level-3 ;; font-lock-keyword-face |
58792 | 1548 '((((type tty) (class color)) (:foreground "cyan" :weight bold)) |
1549 (((class color) (background light)) (:foreground "Purple")) | |
1550 (((class color) (background dark)) (:foreground "Cyan")) | |
1551 (t (:bold t))) | |
1552 "Face used for level 3 headlines." | |
1553 :group 'org-faces) | |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
1554 |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
1555 (defface org-level-4 ;; font-lock-comment-face |
58792 | 1556 '((((type tty pc) (class color) (background light)) (:foreground "red")) |
1557 (((type tty pc) (class color) (background dark)) (:foreground "red1")) | |
1558 (((class color) (background light)) (:foreground "Firebrick")) | |
1559 (((class color) (background dark)) (:foreground "chocolate1")) | |
1560 (t (:bold t :italic t))) | |
1561 "Face used for level 4 headlines." | |
1562 :group 'org-faces) | |
63225
7660591a3c92
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-389
Miles Bader <miles@gnu.org>
parents:
63110
diff
changeset
|
1563 |
7660591a3c92
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-389
Miles Bader <miles@gnu.org>
parents:
63110
diff
changeset
|
1564 (defface org-level-5 ;; font-lock-type-face |
58792 | 1565 '((((type tty) (class color)) (:foreground "green")) |
1566 (((class color) (background light)) (:foreground "ForestGreen")) | |
1567 (((class color) (background dark)) (:foreground "PaleGreen")) | |
1568 (t (:bold t :underline t))) | |
1569 "Face used for level 5 headlines." | |
1570 :group 'org-faces) | |
63225
7660591a3c92
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-389
Miles Bader <miles@gnu.org>
parents:
63110
diff
changeset
|
1571 |
7660591a3c92
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-389
Miles Bader <miles@gnu.org>
parents:
63110
diff
changeset
|
1572 (defface org-level-6 ;; font-lock-constant-face |
58792 | 1573 '((((type tty) (class color)) (:foreground "magenta")) |
1574 (((class color) (background light)) (:foreground "CadetBlue")) | |
1575 (((class color) (background dark)) (:foreground "Aquamarine")) | |
1576 (t (:bold t :underline t))) | |
1577 "Face used for level 6 headlines." | |
1578 :group 'org-faces) | |
63225
7660591a3c92
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-389
Miles Bader <miles@gnu.org>
parents:
63110
diff
changeset
|
1579 |
7660591a3c92
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-389
Miles Bader <miles@gnu.org>
parents:
63110
diff
changeset
|
1580 (defface org-level-7 ;; font-lock-builtin-face |
58792 | 1581 '((((type tty) (class color)) (:foreground "blue" :weight light)) |
1582 (((class color) (background light)) (:foreground "Orchid")) | |
1583 (((class color) (background dark)) (:foreground "LightSteelBlue")) | |
1584 (t (:bold t))) | |
1585 "Face used for level 7 headlines." | |
1586 :group 'org-faces) | |
63225
7660591a3c92
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-389
Miles Bader <miles@gnu.org>
parents:
63110
diff
changeset
|
1587 |
7660591a3c92
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-389
Miles Bader <miles@gnu.org>
parents:
63110
diff
changeset
|
1588 (defface org-level-8 ;; font-lock-string-face |
58792 | 1589 '((((type tty) (class color)) (:foreground "green")) |
1590 (((class color) (background light)) (:foreground "RosyBrown")) | |
1591 (((class color) (background dark)) (:foreground "LightSalmon")) | |
1592 (t (:italic t))) | |
1593 "Face used for level 8 headlines." | |
1594 :group 'org-faces) | |
63225
7660591a3c92
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-389
Miles Bader <miles@gnu.org>
parents:
63110
diff
changeset
|
1595 |
7660591a3c92
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-389
Miles Bader <miles@gnu.org>
parents:
63110
diff
changeset
|
1596 (defface org-warning ;; font-lock-warning-face |
58792 | 1597 '((((type tty) (class color)) (:foreground "red")) |
1598 (((class color) (background light)) (:foreground "Red" :bold t)) | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
1599 (((class color) (background dark)) (:foreground "Red1" :bold t)) |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
1600 ; (((class color) (background dark)) (:foreground "Pink" :bold t)) |
58792 | 1601 (t (:inverse-video t :bold t))) |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
1602 "Face for deadlines and TODO keywords." |
58792 | 1603 :group 'org-faces) |
1604 | |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
1605 (defcustom org-fontify-done-headline nil |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
1606 "Non-nil means, change the face of a headline if it is marked DONE. |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
1607 Normally, only the TODO/DONE keyword indicates the state of a headline. |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
1608 When this is non-nil, the headline after the keyword is set to the |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
1609 `org-headline-done' as an additional indication." |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
1610 :group 'org-faces |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
1611 :type 'boolean) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
1612 |
63225
7660591a3c92
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-389
Miles Bader <miles@gnu.org>
parents:
63110
diff
changeset
|
1613 (defface org-headline-done ;; font-lock-string-face |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
1614 '((((type tty) (class color)) (:foreground "green")) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
1615 (((class color) (background light)) (:foreground "RosyBrown")) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
1616 (((class color) (background dark)) (:foreground "LightSalmon")) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
1617 (t (:italic t))) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
1618 "Face used to indicate that a headline is DONE. See also the variable |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
1619 `org-fontify-done-headline'." |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
1620 :group 'org-faces) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
1621 |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
1622 ;; Inheritance does not yet work for xemacs. So we just copy... |
58792 | 1623 |
63225
7660591a3c92
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-389
Miles Bader <miles@gnu.org>
parents:
63110
diff
changeset
|
1624 (defface org-deadline-announce |
58792 | 1625 '((((type tty) (class color)) (:foreground "blue" :weight bold)) |
1626 (((class color) (background light)) (:foreground "Blue")) | |
1627 (((class color) (background dark)) (:foreground "LightSkyBlue")) | |
1628 (t (:inverse-video t :bold t))) | |
1629 "Face for upcoming deadlines." | |
1630 :group 'org-faces) | |
63225
7660591a3c92
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-389
Miles Bader <miles@gnu.org>
parents:
63110
diff
changeset
|
1631 |
7660591a3c92
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-389
Miles Bader <miles@gnu.org>
parents:
63110
diff
changeset
|
1632 (defface org-scheduled-today |
58792 | 1633 '((((type tty) (class color)) (:foreground "green")) |
1634 (((class color) (background light)) (:foreground "DarkGreen")) | |
1635 (((class color) (background dark)) (:foreground "PaleGreen")) | |
1636 (t (:bold t :underline t))) | |
1637 "Face for items scheduled for a certain day." | |
1638 :group 'org-faces) | |
63225
7660591a3c92
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-389
Miles Bader <miles@gnu.org>
parents:
63110
diff
changeset
|
1639 |
7660591a3c92
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-389
Miles Bader <miles@gnu.org>
parents:
63110
diff
changeset
|
1640 (defface org-scheduled-previously |
58792 | 1641 '((((type tty pc) (class color) (background light)) (:foreground "red")) |
1642 (((type tty pc) (class color) (background dark)) (:foreground "red1")) | |
1643 (((class color) (background light)) (:foreground "Firebrick")) | |
1644 (((class color) (background dark)) (:foreground "chocolate1")) | |
1645 (t (:bold t :italic t))) | |
1646 "Face for items scheduled previously, and not yet done." | |
1647 :group 'org-faces) | |
63225
7660591a3c92
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-389
Miles Bader <miles@gnu.org>
parents:
63110
diff
changeset
|
1648 |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1649 (defface org-formula |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1650 '((((type tty pc) (class color) (background light)) (:foreground "red")) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1651 (((type tty pc) (class color) (background dark)) (:foreground "red1")) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1652 (((class color) (background light)) (:foreground "Firebrick")) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1653 (((class color) (background dark)) (:foreground "chocolate1")) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1654 (t (:bold t :italic t))) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1655 "Face for items scheduled previously, and not yet done." |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1656 :group 'org-faces) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1657 |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
1658 (defface org-link |
58792 | 1659 '((((type tty) (class color)) (:foreground "cyan" :weight bold)) |
1660 (((class color) (background light)) (:foreground "Purple")) | |
1661 (((class color) (background dark)) (:foreground "Cyan")) | |
1662 (t (:bold t))) | |
1663 "Face for links." | |
1664 :group 'org-faces) | |
63225
7660591a3c92
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-389
Miles Bader <miles@gnu.org>
parents:
63110
diff
changeset
|
1665 |
7660591a3c92
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-389
Miles Bader <miles@gnu.org>
parents:
63110
diff
changeset
|
1666 (defface org-done ;; font-lock-type-face |
58792 | 1667 '((((type tty) (class color)) (:foreground "green")) |
1668 (((class color) (background light)) (:foreground "ForestGreen" :bold t)) | |
1669 (((class color) (background dark)) (:foreground "PaleGreen" :bold t)) | |
1670 (t (:bold t :underline t))) | |
1671 "Face used for DONE." | |
1672 :group 'org-faces) | |
63225
7660591a3c92
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-389
Miles Bader <miles@gnu.org>
parents:
63110
diff
changeset
|
1673 |
7660591a3c92
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-389
Miles Bader <miles@gnu.org>
parents:
63110
diff
changeset
|
1674 (defface org-table ;; font-lock-function-name-face |
58792 | 1675 '((((type tty) (class color)) (:foreground "blue" :weight bold)) |
1676 (((class color) (background light)) (:foreground "Blue")) | |
1677 (((class color) (background dark)) (:foreground "LightSkyBlue")) | |
1678 (t (:inverse-video t :bold t))) | |
1679 "Face used for tables." | |
1680 :group 'org-faces) | |
63225
7660591a3c92
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-389
Miles Bader <miles@gnu.org>
parents:
63110
diff
changeset
|
1681 |
7660591a3c92
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-389
Miles Bader <miles@gnu.org>
parents:
63110
diff
changeset
|
1682 (defface org-time-grid ;; font-lock-variable-name-face |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
1683 '((((type tty) (class color)) (:foreground "yellow" :weight light)) |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
1684 (((class color) (background light)) (:foreground "DarkGoldenrod")) |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
1685 (((class color) (background dark)) (:foreground "LightGoldenrod")) |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
1686 (t (:bold t :italic t))) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1687 "Face used for level 2 headlines." |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
1688 :group 'org-faces) |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
1689 |
58792 | 1690 (defvar org-level-faces |
1691 '( | |
63225
7660591a3c92
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-389
Miles Bader <miles@gnu.org>
parents:
63110
diff
changeset
|
1692 org-level-1 |
7660591a3c92
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-389
Miles Bader <miles@gnu.org>
parents:
63110
diff
changeset
|
1693 org-level-2 |
7660591a3c92
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-389
Miles Bader <miles@gnu.org>
parents:
63110
diff
changeset
|
1694 org-level-3 |
7660591a3c92
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-389
Miles Bader <miles@gnu.org>
parents:
63110
diff
changeset
|
1695 org-level-4 |
7660591a3c92
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-389
Miles Bader <miles@gnu.org>
parents:
63110
diff
changeset
|
1696 org-level-5 |
7660591a3c92
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-389
Miles Bader <miles@gnu.org>
parents:
63110
diff
changeset
|
1697 org-level-6 |
7660591a3c92
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-389
Miles Bader <miles@gnu.org>
parents:
63110
diff
changeset
|
1698 org-level-7 |
7660591a3c92
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-389
Miles Bader <miles@gnu.org>
parents:
63110
diff
changeset
|
1699 org-level-8 |
58792 | 1700 )) |
1701 (defvar org-n-levels (length org-level-faces)) | |
1702 | |
1703 ;; Tell the compiler about dynamically scoped variables, | |
1704 ;; and variables from other packages | |
1705 (eval-when-compile | |
1706 (defvar zmacs-regions) | |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
1707 (defvar original-date) |
58792 | 1708 (defvar org-transient-mark-mode) |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
1709 (defvar org-old-auto-fill-inhibit-regexp) |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
1710 (defvar orgtbl-mode-menu) |
58792 | 1711 (defvar org-html-entities) |
1712 (defvar org-goto-start-pos) | |
1713 (defvar org-cursor-color) | |
1714 (defvar org-time-was-given) | |
1715 (defvar org-ts-what) | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
1716 (defvar mark-active) |
58792 | 1717 (defvar timecnt) |
1718 (defvar levels-open) | |
1719 (defvar title) | |
1720 (defvar author) | |
1721 (defvar email) | |
1722 (defvar text) | |
1723 (defvar entry) | |
1724 (defvar date) | |
1725 (defvar language) | |
1726 (defvar options) | |
1727 (defvar ans1) | |
1728 (defvar ans2) | |
1729 (defvar starting-day) | |
1730 (defvar include-all-loc) | |
1731 (defvar vm-message-pointer) | |
1732 (defvar vm-folder-directory) | |
1733 (defvar wl-summary-buffer-elmo-folder) | |
1734 (defvar wl-summary-buffer-folder-name) | |
1735 (defvar gnus-group-name) | |
1736 (defvar gnus-article-current) | |
1737 (defvar w3m-current-url) | |
1738 (defvar org-selected-point) | |
1739 (defvar calendar-mode-map) | |
1740 (defvar remember-save-after-remembering) | |
1741 (defvar remember-data-file)) | |
1742 | |
1743 | |
1744 ;;; Define the mode | |
1745 | |
1746 (defvar org-mode-map (copy-keymap outline-mode-map) | |
1747 "Keymap for Org-mode.") | |
1748 | |
1749 (defvar org-struct-menu) | |
1750 (defvar org-org-menu) | |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1751 (defvar org-tbl-menu) |
58792 | 1752 |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
1753 ;; We use a before-change function to check if a table might need |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
1754 ;; an update. |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
1755 (defvar org-table-may-need-update t |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
1756 "Indicates of a table might need an update. |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
1757 This variable is set by `org-before-change-function'. `org-table-align' |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
1758 sets it back to nil.") |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
1759 (defvar org-mode-hook nil) |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
1760 (defvar org-inhibit-startup nil) ; Dynamically-scoped param. |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
1761 |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
1762 |
58792 | 1763 ;;;###autoload |
62712
b9935dc86aa4
(org-mode): Use `define-derived-mode' to define
Carsten Dominik <dominik@science.uva.nl>
parents:
62546
diff
changeset
|
1764 (define-derived-mode org-mode outline-mode "Org" |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
1765 "Outline-based notes management and organizer, alias |
58792 | 1766 \"Carstens outline-mode for keeping track of everything.\" |
1767 | |
1768 Org-mode develops organizational tasks around a NOTES file which | |
1769 contains information about projects as plain text. Org-mode is | |
1770 implemented on top of outline-mode, which is ideal to keep the content | |
1771 of large files well structured. It supports ToDo items, deadlines and | |
1772 time stamps, which magically appear in the diary listing of the Emacs | |
1773 calendar. Tables are easily created with a built-in table editor. | |
1774 Plain text URL-like links connect to websites, emails (VM), Usenet | |
1775 messages (Gnus), BBDB entries, and any files related to the project. | |
1776 For printing and sharing of notes, an Org-mode file (or a part of it) | |
62712
b9935dc86aa4
(org-mode): Use `define-derived-mode' to define
Carsten Dominik <dominik@science.uva.nl>
parents:
62546
diff
changeset
|
1777 can be exported as a structured ASCII or HTML file. |
58792 | 1778 |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
1779 The following commands are available: |
58792 | 1780 |
1781 \\{org-mode-map}" | |
1782 (easy-menu-add org-org-menu) | |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1783 (easy-menu-add org-tbl-menu) |
58792 | 1784 (org-install-agenda-files-menu) |
1785 (setq outline-regexp "\\*+") | |
1786 (if org-startup-truncated (setq truncate-lines t)) | |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
1787 (org-set-regexps-and-options) |
58792 | 1788 (set (make-local-variable 'font-lock-unfontify-region-function) |
1789 'org-unfontify-region) | |
1790 ;; Activate before-change-function | |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
1791 (set (make-local-variable 'org-table-may-need-update) t) |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
1792 (make-local-hook 'before-change-functions) ;; needed for XEmacs |
58792 | 1793 (add-hook 'before-change-functions 'org-before-change-function nil |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1794 'local) |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
1795 ;; Paragraph regular expressions |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1796 (set (make-local-variable 'paragraph-separate) "\f\\|[ ]*$\\|\\([*\f]+\\)") |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
1797 (set (make-local-variable 'paragraph-start) "\f\\|[ ]*$\\|\\([*\f]+\\)") |
58792 | 1798 ;; Inhibit auto-fill for headers, tables and fixed-width lines. |
1799 (set (make-local-variable 'auto-fill-inhibit-regexp) | |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1800 (concat "\\*\\|#" |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1801 (if (or org-enable-table-editor org-enable-fixed-width-editor) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1802 (concat |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1803 "\\|[ \t]*[" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1804 (if org-enable-table-editor "|" "") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1805 (if org-enable-fixed-width-editor ":" "") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1806 "]")))) |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
1807 (set (make-local-variable 'fill-paragraph-function) 'org-fill-paragraph) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1808 ;; Settings for Calc embedded mode |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1809 (set (make-local-variable 'calc-embedded-open-formula) "|\\|\n") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1810 (set (make-local-variable 'calc-embedded-close-formula) "|\\|\n") |
62712
b9935dc86aa4
(org-mode): Use `define-derived-mode' to define
Carsten Dominik <dominik@science.uva.nl>
parents:
62546
diff
changeset
|
1811 (if (and org-insert-mode-line-in-empty-file |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1812 (interactive-p) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1813 (= (point-min) (point-max))) |
62712
b9935dc86aa4
(org-mode): Use `define-derived-mode' to define
Carsten Dominik <dominik@science.uva.nl>
parents:
62546
diff
changeset
|
1814 (insert " -*- mode: org -*-\n\n")) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1815 |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1816 ;; Get rid of Outline menus, they are not needed |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1817 ;; Need to do this here because define-derived-mode sets up |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1818 ;; the keymap so late. |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1819 (if org-xemacs-p |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1820 (progn |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1821 (delete-menu-item '("Headings")) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1822 (delete-menu-item '("Show")) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1823 (delete-menu-item '("Hide")) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1824 (set-menubar-dirty-flag)) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1825 (define-key org-mode-map [menu-bar headings] 'undefined) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1826 (define-key org-mode-map [menu-bar hide] 'undefined) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1827 (define-key org-mode-map [menu-bar show] 'undefined)) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1828 |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
1829 (unless org-inhibit-startup |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
1830 (if org-startup-with-deadline-check |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1831 (call-interactively 'org-check-deadlines) |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
1832 (cond |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
1833 ((eq org-startup-folded t) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1834 (org-cycle '(4))) |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
1835 ((eq org-startup-folded 'content) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1836 (let ((this-command 'org-cycle) (last-command 'org-cycle)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1837 (org-cycle '(4)) (org-cycle '(4)))))))) |
58792 | 1838 |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
1839 (defun org-fill-paragraph (&optional justify) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1840 "Re-align a table, pass through to fill-paragraph if no table." |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
1841 (save-excursion |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
1842 (beginning-of-line 1) |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
1843 (looking-at "\\s-*\\(|\\|\\+-+\\)"))) |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
1844 |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1845 (defsubst org-current-line (&optional pos) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1846 (+ (if (bolp) 1 0) (count-lines (point-min) (or pos (point))))) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1847 |
58792 | 1848 ;;; Font-Lock stuff |
1849 | |
1850 (defvar org-mouse-map (make-sparse-keymap)) | |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
1851 (define-key org-mouse-map |
58792 | 1852 (if org-xemacs-p [button2] [mouse-2]) 'org-open-at-mouse) |
1853 (define-key org-mouse-map | |
1854 (if org-xemacs-p [button3] [mouse-3]) 'org-find-file-at-mouse) | |
1855 | |
1856 (require 'font-lock) | |
1857 | |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
1858 (defconst org-non-link-chars "\t\n\r|<>\000") |
58792 | 1859 (defconst org-link-regexp |
1860 (if org-allow-space-in-links | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
1861 (concat |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
1862 "\\(https?\\|ftp\\|mailto\\|file\\|news\\|bbdb\\|vm\\|wl\\|rmail\\|gnus\\|shell\\):\\([^" org-non-link-chars "]+[^ " org-non-link-chars "]\\)") |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
1863 (concat |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
1864 "\\(https?\\|ftp\\|mailto\\|file\\|news\\|bbdb\\|vm\\|wl\\|rmail\\|gnus\\|shell\\):\\([^ " org-non-link-chars "]+\\)") |
58792 | 1865 ) |
1866 "Regular expression for matching links.") | |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
1867 (defconst org-link-maybe-angles-regexp |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
1868 (concat "<?\\(" org-link-regexp "\\)>?") |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
1869 "Matches a link and optionally surrounding angle brackets.") |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
1870 (defconst org-protected-link-regexp |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
1871 (concat "\000" org-link-regexp "\000") |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
1872 "Matches a link and optionally surrounding angle brackets.") |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
1873 |
58792 | 1874 (defconst org-ts-lengths |
1875 (cons (length (format-time-string (car org-time-stamp-formats))) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1876 (length (format-time-string (cdr org-time-stamp-formats)))) |
58792 | 1877 "This holds the lengths of the two different time formats.") |
1878 (defconst org-ts-regexp "<\\([0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\}[^\r\n>]*\\)>" | |
1879 "Regular expression for fast time stamp matching.") | |
1880 (defconst org-ts-regexp1 "\\(\\([0-9]\\{4\\}\\)-\\([0-9]\\{2\\}\\)-\\([0-9]\\{2\\}\\)\\([^0-9>\r\n]*\\)\\(\\([0-9]\\{2\\}\\):\\([0-9]\\{2\\}\\)\\)?\\)" | |
1881 "Regular expression matching time strings for analysis.") | |
1882 (defconst org-ts-regexp2 (concat "<" org-ts-regexp1 ">") | |
1883 "Regular expression matching time stamps, with groups.") | |
1884 (defconst org-tr-regexp (concat org-ts-regexp "--?-?" org-ts-regexp) | |
1885 "Regular expression matching a time stamp range.") | |
1886 (defconst org-tsr-regexp (concat org-ts-regexp "\\(--?-?" | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1887 org-ts-regexp "\\)?") |
58792 | 1888 "Regular expression matching a time stamp or time stamp range.") |
1889 | |
1890 (defun org-activate-links (limit) | |
1891 "Run through the buffer and add overlays to links." | |
1892 (if (re-search-forward org-link-regexp limit t) | |
1893 (progn | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1894 (add-text-properties (match-beginning 0) (match-end 0) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1895 (list 'mouse-face 'highlight |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1896 'keymap org-mouse-map)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1897 t))) |
58792 | 1898 |
1899 (defun org-activate-dates (limit) | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
1900 "Run through the buffer and add overlays to dates." |
58792 | 1901 (if (re-search-forward org-tsr-regexp limit t) |
1902 (progn | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1903 (add-text-properties (match-beginning 0) (match-end 0) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1904 (list 'mouse-face 'highlight |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1905 'keymap org-mouse-map)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1906 t))) |
58792 | 1907 |
1908 (defun org-font-lock-level () | |
1909 (save-excursion | |
1910 (org-back-to-heading t) | |
1911 (- (match-end 0) (match-beginning 0)))) | |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
1912 |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
1913 (defvar org-font-lock-keywords nil) |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
1914 |
58792 | 1915 (defun org-set-font-lock-defaults () |
1916 (let ((org-font-lock-extra-keywords | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1917 (list |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1918 '(org-activate-links (0 'org-link)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1919 '(org-activate-dates (0 'org-link)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1920 (list (concat "^\\*+[ \t]*" org-not-done-regexp) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1921 '(1 'org-warning t)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1922 (list (concat "\\[#[A-Z]\\]") '(0 'org-warning t)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1923 (list (concat "\\<" org-deadline-string) '(0 'org-warning t)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1924 (list (concat "\\<" org-scheduled-string) '(0 'org-warning t)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1925 ;; '("\\(\\s-\\|^\\)\\(\\*\\([a-zA-Z]+\\)\\*\\)\\([^a-zA-Z*]\\|$\\)" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1926 ;; (3 'bold)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1927 ;; '("\\(\\s-\\|^\\)\\(/\\([a-zA-Z]+\\)/\\)\\([^a-zA-Z*]\\|$\\)" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1928 ;; (3 'italic)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1929 ;; '("\\(\\s-\\|^\\)\\(_\\([a-zA-Z]+\\)_\\)\\([^a-zA-Z*]\\|$\\)" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1930 ;; (3 'underline)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1931 (list (concat "^\\*+[ \t]*\\<\\(" org-comment-string "\\)\\>") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1932 '(1 'org-warning t)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1933 '("^#.*" (0 'font-lock-comment-face t)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1934 (if org-fontify-done-headline |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1935 (list (concat "^[*]+ +\\<\\(" org-done-string "\\)\\(.*\\)\\>") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1936 '(1 'org-done t) '(2 'org-headline-done t)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1937 (list (concat "^[*]+ +\\<\\(" org-done-string "\\)\\>") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1938 '(1 'org-done t))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1939 '("^[ \t]*\\(\\(|\\|\\+-[-+]\\).*\\S-\\)" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1940 (1 'org-table t)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1941 '("^[ \t]*\\(:.*\\)" (1 'org-table t)) |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
1942 '("| *\\(:?=[^|\n]*\\)" (1 'org-formula t)) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1943 '("^[ \t]*| *\\([#!$*_^]\\) *|" (1 'org-formula t)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1944 ))) |
58792 | 1945 (set (make-local-variable 'org-font-lock-keywords) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1946 (append |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1947 (if org-noutline-p ; FIXME: I am not sure if eval will work |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1948 ; on XEmacs if noutline is ever ported |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1949 '((eval . (list "^\\(\\*+\\).*" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1950 0 '(nth |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1951 (% (- (match-end 1) (match-beginning 1) 1) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1952 org-n-levels) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1953 org-level-faces) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1954 nil t))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1955 '(("^\\(\\(\\*+\\)[^\r\n]*\\)[\n\r]" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1956 (1 (nth (% (- (match-end 2) (match-beginning 2) 1) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1957 org-n-levels) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1958 org-level-faces) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1959 nil t)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1960 org-font-lock-extra-keywords)) |
58792 | 1961 (set (make-local-variable 'font-lock-defaults) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1962 '(org-font-lock-keywords t nil nil backward-paragraph)) |
58792 | 1963 (kill-local-variable 'font-lock-keywords) nil)) |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
1964 |
58792 | 1965 (defun org-unfontify-region (beg end &optional maybe_loudly) |
1966 "Remove fontification and activation overlays from links." | |
1967 (font-lock-default-unfontify-region beg end) | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
1968 (let* ((buffer-undo-list t) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1969 (inhibit-read-only t) (inhibit-point-motion-hooks t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1970 (inhibit-modification-hooks t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1971 deactivate-mark buffer-file-name buffer-file-truename) |
58792 | 1972 (remove-text-properties beg end '(mouse-face nil keymap nil)))) |
1973 | |
1974 ;;; Visibility cycling | |
1975 | |
1976 (defvar org-cycle-global-status nil) | |
1977 (defvar org-cycle-subtree-status nil) | |
1978 (defun org-cycle (&optional arg) | |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
1979 "Visibility cycling for Org-mode. |
58792 | 1980 |
1981 - When this function is called with a prefix argument, rotate the entire | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1982 buffer through 3 states (global cycling) |
58792 | 1983 1. OVERVIEW: Show only top-level headlines. |
1984 2. CONTENTS: Show all headlines of all levels, but no body text. | |
1985 3. SHOW ALL: Show everything. | |
1986 | |
1987 - When point is at the beginning of a headline, rotate the subtree started | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1988 by this line through 3 different states (local cycling) |
58792 | 1989 1. FOLDED: Only the main headline is shown. |
1990 2. CHILDREN: The main headline and the direct children are shown. From | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1991 this state, you can move to one of the children and |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
1992 zoom in further. |
58792 | 1993 3. SUBTREE: Show the entire subtree, including body text. |
1994 | |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1995 - When there is a numeric prefix, go up to a heading with level ARG, do |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1996 a `show-subtree' and return to the previous cursor position. If ARG |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
1997 is negative, go up that many levels. |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
1998 |
58792 | 1999 - When point is not at the beginning of a headline, execute |
2000 `indent-relative', like TAB normally does. See the option | |
2001 `org-cycle-emulate-tab' for details. | |
2002 | |
2003 - Special case: if point is the the beginning of the buffer and there is | |
2004 no headline in line 1, this function will act as if called with prefix arg." | |
2005 (interactive "P") | |
2006 | |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
2007 (if (or (and (bobp) (not (looking-at outline-regexp))) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2008 (equal arg '(4))) |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
2009 ;; special case: use global cycling |
58792 | 2010 (setq arg t)) |
2011 | |
2012 (cond | |
2013 | |
2014 ((org-at-table-p 'any) | |
2015 ;; Enter the table or move to the next field in the table | |
2016 (or (org-table-recognize-table.el) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2017 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2018 (org-table-justify-field-maybe) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2019 (org-table-next-field)))) |
58792 | 2020 |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
2021 ((eq arg t) ;; Global cycling |
58792 | 2022 |
2023 (cond | |
2024 ((and (eq last-command this-command) | |
2025 (eq org-cycle-global-status 'overview)) | |
2026 ;; We just created the overview - now do table of contents | |
2027 ;; This can be slow in very large buffers, so indicate action | |
2028 (message "CONTENTS...") | |
2029 (save-excursion | |
2030 ;; Visit all headings and show their offspring | |
2031 (goto-char (point-max)) | |
2032 (catch 'exit | |
2033 (while (and (progn (condition-case nil | |
2034 (outline-previous-visible-heading 1) | |
2035 (error (goto-char (point-min)))) | |
2036 t) | |
2037 (looking-at outline-regexp)) | |
2038 (show-branches) | |
2039 (if (bobp) (throw 'exit nil)))) | |
2040 (message "CONTENTS...done")) | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2041 (setq org-cycle-global-status 'contents) |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2042 (run-hook-with-args 'org-cycle-hook 'contents)) |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
2043 |
58792 | 2044 ((and (eq last-command this-command) |
2045 (eq org-cycle-global-status 'contents)) | |
2046 ;; We just showed the table of contents - now show everything | |
2047 (show-all) | |
2048 (message "SHOW ALL") | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2049 (setq org-cycle-global-status 'all) |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2050 (run-hook-with-args 'org-cycle-hook 'all)) |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
2051 |
58792 | 2052 (t |
2053 ;; Default action: go to overview | |
2054 (hide-sublevels 1) | |
2055 (message "OVERVIEW") | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2056 (setq org-cycle-global-status 'overview) |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2057 (run-hook-with-args 'org-cycle-hook 'overview)))) |
58792 | 2058 |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
2059 ((integerp arg) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
2060 ;; Show-subtree, ARG levels up from here. |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
2061 (save-excursion |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
2062 (org-back-to-heading) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
2063 (outline-up-heading (if (< arg 0) (- arg) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2064 (- (outline-level) arg))) |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
2065 (org-show-subtree))) |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
2066 |
58792 | 2067 ((save-excursion (beginning-of-line 1) (looking-at outline-regexp)) |
2068 ;; At a heading: rotate between three different views | |
2069 (org-back-to-heading) | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
2070 (let ((goal-column 0) eoh eol eos) |
58792 | 2071 ;; First, some boundaries |
2072 (save-excursion | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
2073 (org-back-to-heading) |
58792 | 2074 (save-excursion |
2075 (beginning-of-line 2) | |
2076 (while (and (not (eobp)) ;; this is like `next-line' | |
2077 (get-char-property (1- (point)) 'invisible)) | |
2078 (beginning-of-line 2)) (setq eol (point))) | |
2079 (outline-end-of-heading) (setq eoh (point)) | |
2080 (outline-end-of-subtree) (setq eos (point)) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2081 (outline-next-heading)) |
58792 | 2082 ;; Find out what to do next and set `this-command' |
2083 (cond | |
2084 ((= eos eoh) | |
2085 ;; Nothing is hidden behind this heading | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2086 (message "EMPTY ENTRY") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2087 (setq org-cycle-subtree-status nil)) |
58792 | 2088 ((>= eol eos) |
2089 ;; Entire subtree is hidden in one line: open it | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
2090 (org-show-entry) |
58792 | 2091 (show-children) |
2092 (message "CHILDREN") | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2093 (setq org-cycle-subtree-status 'children) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2094 (run-hook-with-args 'org-cycle-hook 'children)) |
58792 | 2095 ((and (eq last-command this-command) |
2096 (eq org-cycle-subtree-status 'children)) | |
2097 ;; We just showed the children, now show everything. | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
2098 (org-show-subtree) |
58792 | 2099 (message "SUBTREE") |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2100 (setq org-cycle-subtree-status 'subtree) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2101 (run-hook-with-args 'org-cycle-hook 'subtree)) |
58792 | 2102 (t |
2103 ;; Default action: hide the subtree. | |
2104 (hide-subtree) | |
2105 (message "FOLDED") | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2106 (setq org-cycle-subtree-status 'folded) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2107 (run-hook-with-args 'org-cycle-hook 'folded))))) |
58792 | 2108 |
2109 ;; TAB emulation | |
2110 (buffer-read-only (org-back-to-heading)) | |
2111 ((if (and (eq org-cycle-emulate-tab 'white) | |
2112 (save-excursion (beginning-of-line 1) (looking-at "[ \t]+$"))) | |
2113 t | |
2114 (eq org-cycle-emulate-tab t)) | |
2115 (if (and (looking-at "[ \n\r\t]") | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2116 (string-match "^[ \t]*$" (buffer-substring |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2117 (point-at-bol) (point)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2118 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2119 (beginning-of-line 1) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2120 (and (looking-at "[ \t]+") (replace-match "")))) |
58792 | 2121 (indent-relative)) |
2122 | |
2123 (t (save-excursion | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2124 (org-back-to-heading) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2125 (org-cycle))))) |
58792 | 2126 |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2127 (defun org-optimize-window-after-visibility-change (state) |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2128 "Adjust the window after a change in outline visibility. |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2129 This function is the default value of the hook `org-cycle-hook'." |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2130 (cond |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2131 ((eq state 'overview) (org-first-headline-recenter 1)) |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2132 ((eq state 'content) nil) |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2133 ((eq state 'all) nil) |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2134 ((eq state 'folded) nil) |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2135 ((eq state 'children) (or (org-subtree-end-visible-p) (recenter 1))) |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2136 ((eq state 'subtree) (or (org-subtree-end-visible-p) (recenter 1))))) |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2137 |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2138 (defun org-subtree-end-visible-p () |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2139 "Is the end of the current subtree visible?" |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2140 (pos-visible-in-window-p |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2141 (save-excursion (outline-end-of-subtree) (point)))) |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2142 |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2143 (defun org-first-headline-recenter (&optional N) |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2144 "Move cursor to the first headline and recenter the headline. |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2145 Optional argument N means, put the headline into the Nth line of the window." |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2146 (goto-char (point-min)) |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
2147 (when (re-search-forward (concat "^" outline-regexp) nil t) |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
2148 (beginning-of-line) |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
2149 (recenter (prefix-numeric-value N)))) |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2150 |
58792 | 2151 (defvar org-goto-window-configuration nil) |
2152 (defvar org-goto-marker nil) | |
2153 (defvar org-goto-map (make-sparse-keymap)) | |
2154 (let ((cmds '(isearch-forward isearch-backward)) cmd) | |
2155 (while (setq cmd (pop cmds)) | |
2156 (substitute-key-definition cmd cmd org-goto-map global-map))) | |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
2157 (define-key org-goto-map "\C-m" 'org-goto-ret) |
58792 | 2158 (define-key org-goto-map [(left)] 'org-goto-left) |
2159 (define-key org-goto-map [(right)] 'org-goto-right) | |
2160 (define-key org-goto-map [(?q)] 'org-goto-quit) | |
2161 (define-key org-goto-map [(control ?g)] 'org-goto-quit) | |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
2162 (define-key org-goto-map "\C-i" 'org-cycle) |
58792 | 2163 (define-key org-goto-map [(down)] 'outline-next-visible-heading) |
2164 (define-key org-goto-map [(up)] 'outline-previous-visible-heading) | |
2165 (define-key org-goto-map "n" 'outline-next-visible-heading) | |
2166 (define-key org-goto-map "p" 'outline-previous-visible-heading) | |
2167 (define-key org-goto-map "f" 'outline-forward-same-level) | |
2168 (define-key org-goto-map "b" 'outline-backward-same-level) | |
2169 (define-key org-goto-map "u" 'outline-up-heading) | |
2170 (define-key org-goto-map "\C-c\C-n" 'outline-next-visible-heading) | |
2171 (define-key org-goto-map "\C-c\C-p" 'outline-previous-visible-heading) | |
2172 (define-key org-goto-map "\C-c\C-f" 'outline-forward-same-level) | |
2173 (define-key org-goto-map "\C-c\C-b" 'outline-backward-same-level) | |
2174 (define-key org-goto-map "\C-c\C-u" 'outline-up-heading) | |
2175 (let ((l '(1 2 3 4 5 6 7 8 9 0))) | |
2176 (while l (define-key org-goto-map (int-to-string (pop l)) 'digit-argument))) | |
2177 | |
2178 (defconst org-goto-help | |
2179 "Select a location to jump to, press RET | |
2180 \[Up]/[Down]=next/prev headline TAB=cycle visibility RET=select [Q]uit") | |
2181 | |
2182 (defun org-goto () | |
2183 "Go to a different location of the document, keeping current visibility. | |
2184 | |
2185 When you want to go to a different location in a document, the fastest way | |
2186 is often to fold the entire buffer and then dive into the tree. This | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2187 method has the disadvantage, that the previous location will be folded, |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2188 which may not be what you want. |
58792 | 2189 |
2190 This command works around this by showing a copy of the current buffer in | |
2191 overview mode. You can dive into the tree in that copy, to find the | |
2192 location you want to reach. When pressing RET, the command returns to the | |
2193 original buffer in which the visibility is still unchanged. It then jumps | |
2194 to the new location, making it and the headline hierarchy above it visible." | |
2195 (interactive) | |
2196 (let* ((org-goto-start-pos (point)) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2197 (selected-point |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2198 (org-get-location (current-buffer) org-goto-help))) |
58792 | 2199 (if selected-point |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2200 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2201 (goto-char selected-point) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2202 (if (org-invisible-p) (org-show-hierarchy-above))) |
58792 | 2203 (error "Quit")))) |
2204 | |
2205 (defun org-get-location (buf help) | |
2206 "Let the user select a location in the Org-mode buffer BUF. | |
2207 This function uses a recursive edit. It returns the selected position | |
2208 or nil." | |
2209 (let (org-selected-point) | |
2210 (save-excursion | |
2211 (save-window-excursion | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2212 (delete-other-windows) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2213 (switch-to-buffer (get-buffer-create "*org-goto*")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2214 (with-output-to-temp-buffer "*Help*" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2215 (princ help)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2216 (shrink-window-if-larger-than-buffer (get-buffer-window "*Help*")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2217 (setq buffer-read-only nil) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2218 (erase-buffer) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2219 (insert-buffer buf) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2220 (let ((org-startup-truncated t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2221 (org-startup-folded t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2222 (org-startup-with-deadline-check nil)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2223 (org-mode)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2224 (setq buffer-read-only t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2225 (if (boundp 'org-goto-start-pos) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2226 (goto-char org-goto-start-pos) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2227 (goto-char (point-min))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2228 (org-beginning-of-line) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2229 (message "Select location and press RET") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2230 ;; now we make sure that during selection, ony very few keys work |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2231 ;; and that it is impossible to switch to another window. |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2232 (let ((gm (current-global-map)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2233 (overriding-local-map org-goto-map)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2234 (unwind-protect |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2235 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2236 (use-global-map org-goto-map) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2237 (recursive-edit)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2238 (use-global-map gm))))) |
58792 | 2239 (kill-buffer "*org-goto*") |
2240 org-selected-point)) | |
2241 | |
2242 ;; FIXME: It may not be a good idea to temper with the prefix argument... | |
2243 (defun org-goto-ret (&optional arg) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2244 "Finish org-goto by going to the new location." |
58792 | 2245 (interactive "P") |
2246 (setq org-selected-point (point) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2247 current-prefix-arg arg) |
58792 | 2248 (throw 'exit nil)) |
2249 | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
2250 (defun org-goto-left () |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2251 "Finish org-goto by going to the new location." |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
2252 (interactive) |
58792 | 2253 (if (org-on-heading-p) |
2254 (progn | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2255 (beginning-of-line 1) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2256 (setq org-selected-point (point) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2257 current-prefix-arg (- (match-end 0) (match-beginning 0))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2258 (throw 'exit nil)) |
58792 | 2259 (error "Not on a heading"))) |
2260 | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
2261 (defun org-goto-right () |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2262 "Finish org-goto by going to the new location." |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
2263 (interactive) |
58792 | 2264 (if (org-on-heading-p) |
2265 (progn | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2266 (outline-end-of-subtree) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2267 (or (eobp) (forward-char 1)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2268 (setq org-selected-point (point) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2269 current-prefix-arg (- (match-end 0) (match-beginning 0))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2270 (throw 'exit nil)) |
58792 | 2271 (error "Not on a heading"))) |
2272 | |
2273 (defun org-goto-quit () | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2274 "Finish org-goto without cursor motion." |
58792 | 2275 (interactive) |
2276 (setq org-selected-point nil) | |
2277 (throw 'exit nil)) | |
2278 | |
2279 ;;; Promotion, Demotion, Inserting new headlines | |
2280 | |
2281 (defvar org-ignore-region nil | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2282 "To temporarily disable the active region.") |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2283 |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
2284 (defun org-insert-heading () |
58792 | 2285 "Insert a new heading with same depth at point." |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
2286 (interactive) |
58792 | 2287 (let* ((head (save-excursion |
2288 (condition-case nil | |
2289 (org-back-to-heading) | |
2290 (error (outline-next-heading))) | |
2291 (prog1 (match-string 0) | |
2292 (funcall outline-level))))) | |
2293 (unless (bolp) (newline)) | |
2294 (insert head) | |
2295 (unless (eolp) | |
2296 (save-excursion (newline-and-indent))) | |
2297 (unless (equal (char-before) ?\ ) | |
2298 (insert " ")) | |
2299 (run-hooks 'org-insert-heading-hook))) | |
2300 | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2301 (defun org-insert-todo-heading (arg) |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2302 "Insert a new heading with the same level and TODO state as current heading. |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2303 If the heading has no TODO state, or if the state is DONE, use the first |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2304 state (TODO by default). Also with prefix arg, force first state." |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2305 (interactive "P") |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2306 (org-insert-heading) |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2307 (save-excursion |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2308 (org-back-to-heading) |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2309 (outline-previous-heading) |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2310 (looking-at org-todo-line-regexp)) |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2311 (if (or arg |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2312 (not (match-beginning 2)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2313 (equal (match-string 2) org-done-string)) |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2314 (insert (car org-todo-keywords) " ") |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2315 (insert (match-string 2) " "))) |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2316 |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
2317 (defun org-promote-subtree () |
58792 | 2318 "Promote the entire subtree. |
2319 See also `org-promote'." | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
2320 (interactive) |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
2321 (save-excursion |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
2322 (org-map-tree 'org-promote))) |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
2323 |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
2324 (defun org-demote-subtree () |
58792 | 2325 "Demote the entire subtree. See `org-demote'. |
2326 See also `org-promote'." | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
2327 (interactive) |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
2328 (save-excursion |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
2329 (org-map-tree 'org-demote))) |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
2330 |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
2331 (defun org-do-promote () |
58792 | 2332 "Promote the current heading higher up the tree. |
62076
4f2150e05f24
(org-get-entries-from-diary): Remove unused vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61924
diff
changeset
|
2333 If the region is active in `transient-mark-mode', promote all headings |
58792 | 2334 in the region." |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
2335 (interactive) |
58792 | 2336 (save-excursion |
2337 (if (org-region-active-p) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2338 (org-map-region 'org-promote (region-beginning) (region-end)) |
58792 | 2339 (org-promote))) |
2340 (org-fix-position-after-promote)) | |
2341 | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
2342 (defun org-do-demote () |
58792 | 2343 "Demote the current heading lower down the tree. |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
2344 If the region is active in `transient-mark-mode', demote all headings |
58792 | 2345 in the region." |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
2346 (interactive) |
58792 | 2347 (save-excursion |
2348 (if (org-region-active-p) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2349 (org-map-region 'org-demote (region-beginning) (region-end)) |
58792 | 2350 (org-demote))) |
2351 (org-fix-position-after-promote)) | |
2352 | |
2353 (defun org-fix-position-after-promote () | |
2354 "Make sure that after pro/demotion cursor position is right." | |
2355 (and (equal (char-after) ?\ ) | |
2356 (equal (char-before) ?*) | |
2357 (forward-char 1))) | |
2358 | |
2359 (defun org-promote () | |
2360 "Promote the current heading higher up the tree. | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
2361 If the region is active in `transient-mark-mode', promote all headings |
58792 | 2362 in the region." |
2363 (org-back-to-heading t) | |
2364 (let* ((level (save-match-data (funcall outline-level))) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2365 (up-head (make-string (1- level) ?*))) |
63431
fd4b70bc23a4
(org-promote, org-evaluate-time-range, org-agenda-next-date-line,
Juanma Barranquero <lekktu@gmail.com>
parents:
63367
diff
changeset
|
2366 (if (= level 1) (error "Cannot promote to level 0. UNDO to recover")) |
58792 | 2367 (replace-match up-head nil t) |
2368 (if org-adapt-indentation | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2369 (org-fixup-indentation "^ " "" "^ ?\\S-")))) |
58792 | 2370 |
2371 (defun org-demote () | |
2372 "Demote the current heading lower down the tree. | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
2373 If the region is active in `transient-mark-mode', demote all headings |
58792 | 2374 in the region." |
2375 (org-back-to-heading t) | |
2376 (let* ((level (save-match-data (funcall outline-level))) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2377 (down-head (make-string (1+ level) ?*))) |
58792 | 2378 (replace-match down-head nil t) |
2379 (if org-adapt-indentation | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2380 (org-fixup-indentation "^ " " " "^\\S-")))) |
58792 | 2381 |
2382 (defun org-map-tree (fun) | |
2383 "Call FUN for every heading underneath the current one." | |
2384 (org-back-to-heading) | |
2385 (let ((level (outline-level))) | |
2386 (save-excursion | |
2387 (funcall fun) | |
2388 (while (and (progn | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2389 (outline-next-heading) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2390 (> (funcall outline-level) level)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2391 (not (eobp))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2392 (funcall fun))))) |
58792 | 2393 |
2394 (defun org-map-region (fun beg end) | |
2395 "Call FUN for every heading between BEG and END." | |
2396 (let ((org-ignore-region t)) | |
2397 (save-excursion | |
2398 (setq end (copy-marker end)) | |
2399 (goto-char beg) | |
2400 (if (and (re-search-forward (concat "^" outline-regexp) nil t) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2401 (< (point) end)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2402 (funcall fun)) |
58792 | 2403 (while (and (progn |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2404 (outline-next-heading) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2405 (< (point) end)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2406 (not (eobp))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2407 (funcall fun))))) |
58792 | 2408 |
2409 (defun org-fixup-indentation (from to prohibit) | |
2410 "Change the indentation in the current entry by re-replacing FROM with TO. | |
2411 However, if the regexp PROHIBIT matches at all, don't do anything. | |
2412 This is being used to change indentation along with the length of the | |
2413 heading marker. But if there are any lines which are not indented, nothing | |
2414 is changed at all." | |
2415 (save-excursion | |
2416 (let ((end (save-excursion (outline-next-heading) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2417 (point-marker)))) |
58792 | 2418 (unless (save-excursion (re-search-forward prohibit end t)) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2419 (while (re-search-forward from end t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2420 (replace-match to) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2421 (beginning-of-line 2))) |
58792 | 2422 (move-marker end nil)))) |
2423 | |
2424 ;;; Vertical tree motion, cutting and pasting of subtrees | |
2425 | |
2426 (defun org-move-subtree-up (&optional arg) | |
2427 "Move the current subtree up past ARG headlines of the same level." | |
2428 (interactive "p") | |
2429 (org-move-subtree-down (- (prefix-numeric-value arg)))) | |
2430 | |
2431 (defun org-move-subtree-down (&optional arg) | |
2432 "Move the current subtree down past ARG headlines of the same level." | |
2433 (interactive "p") | |
2434 (setq arg (prefix-numeric-value arg)) | |
2435 (let ((movfunc (if (> arg 0) 'outline-get-next-sibling | |
2436 'outline-get-last-sibling)) | |
2437 (ins-point (make-marker)) | |
2438 (cnt (abs arg)) | |
2439 beg end txt folded) | |
2440 ;; Select the tree | |
2441 (org-back-to-heading) | |
2442 (setq beg (point)) | |
2443 (save-match-data | |
2444 (save-excursion (outline-end-of-heading) | |
2445 (setq folded (org-invisible-p))) | |
2446 (outline-end-of-subtree)) | |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
2447 (outline-next-heading) |
58792 | 2448 (setq end (point)) |
2449 ;; Find insertion point, with error handling | |
2450 (goto-char beg) | |
2451 (while (> cnt 0) | |
2452 (or (and (funcall movfunc) (looking-at outline-regexp)) | |
2453 (progn (goto-char beg) | |
2454 (error "Cannot move past superior level or buffer limit"))) | |
2455 (setq cnt (1- cnt))) | |
2456 (if (> arg 0) | |
2457 ;; Moving forward - still need to move over subtree | |
2458 (progn (outline-end-of-subtree) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2459 (outline-next-heading) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2460 (if (not (or (looking-at (concat "^" outline-regexp)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2461 (bolp))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2462 (newline)))) |
58792 | 2463 (move-marker ins-point (point)) |
2464 (setq txt (buffer-substring beg end)) | |
2465 (delete-region beg end) | |
2466 (insert txt) | |
2467 (goto-char ins-point) | |
2468 (if folded (hide-subtree)) | |
2469 (move-marker ins-point nil))) | |
2470 | |
2471 (defvar org-subtree-clip "" | |
2472 "Clipboard for cut and paste of subtrees. | |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
2473 This is actually only a copy of the kill, because we use the normal kill |
58792 | 2474 ring. We need it to check if the kill was created by `org-copy-subtree'.") |
2475 | |
2476 (defvar org-subtree-clip-folded nil | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2477 "Was the last copied subtree folded? |
58792 | 2478 This is used to fold the tree back after pasting.") |
2479 | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
2480 (defun org-cut-subtree () |
58792 | 2481 "Cut the current subtree into the clipboard. |
2482 This is a short-hand for marking the subtree and then cutting it." | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
2483 (interactive) |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
2484 (org-copy-subtree 'cut)) |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
2485 |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
2486 (defun org-copy-subtree (&optional cut) |
58792 | 2487 "Cut the current subtree into the clipboard. |
2488 This is a short-hand for marking the subtree and then copying it. | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2489 If CUT is non nil, actually cut the subtree." |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
2490 (interactive) |
58792 | 2491 (let (beg end folded) |
2492 (org-back-to-heading) | |
2493 (setq beg (point)) | |
2494 (save-match-data | |
2495 (save-excursion (outline-end-of-heading) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2496 (setq folded (org-invisible-p))) |
58792 | 2497 (outline-end-of-subtree)) |
2498 (if (equal (char-after) ?\n) (forward-char 1)) | |
2499 (setq end (point)) | |
2500 (goto-char beg) | |
2501 (when (> end beg) | |
2502 (setq org-subtree-clip-folded folded) | |
2503 (if cut (kill-region beg end) (copy-region-as-kill beg end)) | |
2504 (setq org-subtree-clip (current-kill 0)) | |
2505 (message "%s: Subtree with %d characters" | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2506 (if cut "Cut" "Copied") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2507 (length org-subtree-clip))))) |
58792 | 2508 |
2509 (defun org-paste-subtree (&optional level tree) | |
2510 "Paste the clipboard as a subtree, with modification of headline level. | |
2511 The entire subtree is promoted or demoted in order to match a new headline | |
2512 level. By default, the new level is derived from the visible headings | |
2513 before and after the insertion point, and taken to be the inferior headline | |
2514 level of the two. So if the previous visible heading is level 3 and the | |
2515 next is level 4 (or vice versa), level 4 will be used for insertion. | |
2516 This makes sure that the subtree remains an independent subtree and does | |
2517 not swallow low level entries. | |
2518 | |
2519 You can also force a different level, either by using a numeric prefix | |
2520 argument, or by inserting the heading marker by hand. For example, if the | |
2521 cursor is after \"*****\", then the tree will be shifted to level 5. | |
2522 | |
2523 If you want to insert the tree as is, just use \\[yank]. | |
2524 | |
2525 If optional TREE is given, use this text instead of the kill ring." | |
2526 (interactive "P") | |
2527 (unless (org-kill-is-subtree-p tree) | |
2528 (error | |
2529 (substitute-command-keys | |
2530 "The kill is not a (set of) tree(s) - please use \\[yank] to yank anyway"))) | |
2531 (let* ((txt (or tree (current-kill 0))) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2532 (^re (concat "^\\(" outline-regexp "\\)")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2533 (re (concat "\\(" outline-regexp "\\)")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2534 (^re_ (concat "\\(" outline-regexp "\\)[ \t]*")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2535 |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2536 (old-level (if (string-match ^re txt) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2537 (- (match-end 0) (match-beginning 0)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2538 -1)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2539 (force-level (cond (level (prefix-numeric-value level)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2540 ((string-match |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2541 ^re_ (buffer-substring (point-at-bol) (point))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2542 (- (match-end 0) (match-beginning 0))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2543 (t nil))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2544 (previous-level (save-excursion |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2545 (condition-case nil |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2546 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2547 (outline-previous-visible-heading 1) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2548 (if (looking-at re) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2549 (- (match-end 0) (match-beginning 0)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2550 1)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2551 (error 1)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2552 (next-level (save-excursion |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2553 (condition-case nil |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2554 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2555 (outline-next-visible-heading 1) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2556 (if (looking-at re) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2557 (- (match-end 0) (match-beginning 0)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2558 1)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2559 (error 1)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2560 (new-level (or force-level (max previous-level next-level))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2561 (shift (if (or (= old-level -1) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2562 (= new-level -1) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2563 (= old-level new-level)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2564 0 |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2565 (- new-level old-level))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2566 (shift1 shift) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2567 (delta (if (> shift 0) -1 1)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2568 (func (if (> shift 0) 'org-demote 'org-promote)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2569 beg end) |
58792 | 2570 ;; Remove the forces level indicator |
2571 (if force-level | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2572 (delete-region (point-at-bol) (point))) |
58792 | 2573 ;; Make sure we start at the beginning of an empty line |
2574 (if (not (bolp)) (insert "\n")) | |
2575 (if (not (looking-at "[ \t]*$")) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2576 (progn (insert "\n") (backward-char 1))) |
58792 | 2577 ;; Paste |
2578 (setq beg (point)) | |
2579 (insert txt) | |
2580 (setq end (point)) | |
2581 (goto-char beg) | |
2582 ;; Shift if necessary | |
2583 (if (= shift 0) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2584 (message "Pasted at level %d, without shift" new-level) |
58792 | 2585 (save-restriction |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2586 (narrow-to-region beg end) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2587 (while (not (= shift 0)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2588 (org-map-region func (point-min) (point-max)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2589 (setq shift (+ delta shift))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2590 (goto-char (point-min)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2591 (message "Pasted at level %d, with shift by %d levels" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2592 new-level shift1))) |
58792 | 2593 (if (and (eq org-subtree-clip (current-kill 0)) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2594 org-subtree-clip-folded) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2595 ;; The tree was folded before it was killed/copied |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2596 (hide-subtree)))) |
58792 | 2597 |
2598 (defun org-kill-is-subtree-p (&optional txt) | |
2599 "Check if the current kill is an outline subtree, or a set of trees. | |
2600 Returns nil if kill does not start with a headline, or if the first | |
2601 headline level is not the largest headline level in the tree. | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2602 So this will actually accept several entries of equal levels as well, |
58792 | 2603 which is OK for `org-paste-subtree'. |
2604 If optional TXT is given, check this string instead of the current kill." | |
2605 (let* ((kill (or txt (current-kill 0) "")) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2606 (start-level (and (string-match (concat "\\`" outline-regexp) kill) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2607 (- (match-end 0) (match-beginning 0)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2608 (re (concat "^" outline-regexp)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2609 (start 1)) |
58792 | 2610 (if (not start-level) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2611 nil ;; does not even start with a heading |
58792 | 2612 (catch 'exit |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2613 (while (setq start (string-match re kill (1+ start))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2614 (if (< (- (match-end 0) (match-beginning 0)) start-level) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2615 (throw 'exit nil))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2616 t)))) |
58792 | 2617 |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
2618 (defun org-archive-subtree () |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
2619 "Move the current subtree to the archive. |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
2620 The archive can be a certain top-level heading in the current file, or in |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
2621 a different file. The tree will be moved to that location, the subtree |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
2622 heading be marked DONE, and the current time will be added." |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
2623 (interactive) |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
2624 ;; Save all relevant TODO keyword-relatex variables |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
2625 (let ((tr-org-todo-line-regexp org-todo-line-regexp) ; keep despite compiler |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2626 (tr-org-todo-keywords org-todo-keywords) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2627 (tr-org-todo-interpretation org-todo-interpretation) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2628 (tr-org-done-string org-done-string) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2629 (tr-org-todo-regexp org-todo-regexp) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2630 (tr-org-todo-line-regexp org-todo-line-regexp) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2631 (this-buffer (current-buffer)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2632 file heading buffer level newfile-p) |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
2633 (if (string-match "\\(.*\\)::\\(.*\\)" org-archive-location) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2634 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2635 (setq file (format (match-string 1 org-archive-location) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2636 (file-name-nondirectory (buffer-file-name))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2637 heading (match-string 2 org-archive-location))) |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
2638 (error "Invalid `org-archive-location'")) |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
2639 (if (> (length file) 0) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2640 (setq newfile-p (not (file-exists-p file)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2641 buffer (find-file-noselect file)) |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
2642 (setq buffer (current-buffer))) |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
2643 (unless buffer |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
2644 (error "Cannot access file \"%s\"" file)) |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
2645 (if (and (> (length heading) 0) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2646 (string-match "^\\*+" heading)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2647 (setq level (match-end 0)) |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
2648 (setq heading nil level 0)) |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
2649 (save-excursion |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
2650 ;; We first only copy, in case something goes wrong |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
2651 ;; we need to protect this-command, to avoid kill-region sets it, |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
2652 ;; which would lead to duplication of subtrees |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
2653 (let (this-command) (org-copy-subtree)) |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
2654 (set-buffer buffer) |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
2655 ;; Enforce org-mode for the archive buffer |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
2656 (if (not (eq major-mode 'org-mode)) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2657 ;; Force the mode for future visits. |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2658 (let ((org-insert-mode-line-in-empty-file t)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2659 (call-interactively 'org-mode))) |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
2660 (when newfile-p |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2661 (goto-char (point-max)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2662 (insert (format "\nArchived entries from file %s\n\n" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2663 (buffer-file-name this-buffer)))) |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
2664 ;; Force the TODO keywords of the original buffer |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
2665 (let ((org-todo-line-regexp tr-org-todo-line-regexp) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2666 (org-todo-keywords tr-org-todo-keywords) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2667 (org-todo-interpretation tr-org-todo-interpretation) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2668 (org-done-string tr-org-done-string) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2669 (org-todo-regexp tr-org-todo-regexp) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2670 (org-todo-line-regexp tr-org-todo-line-regexp)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2671 (goto-char (point-min)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2672 (if heading |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2673 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2674 (if (re-search-forward |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2675 (concat "\\(^\\|\r\\)" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2676 (regexp-quote heading) "[ \t]*\\($\\|\r\\)") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2677 nil t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2678 (goto-char (match-end 0)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2679 ;; Heading not found, just insert it at the end |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2680 (goto-char (point-max)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2681 (or (bolp) (insert "\n")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2682 (insert "\n" heading "\n") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2683 (end-of-line 0)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2684 ;; Make the heading visible, and the following as well |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2685 (let ((org-show-following-heading t)) (org-show-hierarchy-above)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2686 (if (re-search-forward |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2687 (concat "^" (regexp-quote (make-string level ?*)) "[ \t]") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2688 nil t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2689 (progn (goto-char (match-beginning 0)) (insert "\n") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2690 (beginning-of-line 0)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2691 (goto-char (point-max)) (insert "\n"))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2692 (goto-char (point-max)) (insert "\n")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2693 ;; Paste |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2694 (org-paste-subtree (1+ level)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2695 ;; Mark the entry as done, i.e. set to last work in org-todo-keywords |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2696 (if org-archive-mark-done |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2697 (org-todo (length org-todo-keywords))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2698 ;; Move cursor to right after the TODO keyword |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2699 (when org-archive-stamp-time |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2700 (beginning-of-line 1) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2701 (looking-at org-todo-line-regexp) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2702 (goto-char (or (match-end 2) (match-beginning 3))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2703 (insert "(" (format-time-string (cdr org-time-stamp-formats) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2704 (current-time)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2705 ")")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2706 ;; Save the buffer, if it is not the same buffer. |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2707 (if (not (eq this-buffer buffer)) (save-buffer)))) |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
2708 ;; Here we are back in the original buffer. Everything seems to have |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
2709 ;; worked. So now cut the tree and finish up. |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
2710 (let (this-command) (org-cut-subtree)) |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
2711 (if (looking-at "[ \t]*$") (kill-line)) |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
2712 (message "Subtree archived %s" |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2713 (if (eq this-buffer buffer) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2714 (concat "under heading: " heading) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2715 (concat "in file: " (abbreviate-file-name file)))))) |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
2716 |
58792 | 2717 ;;; Completion |
2718 | |
2719 (defun org-complete (&optional arg) | |
2720 "Perform completion on word at point. | |
2721 At the beginning of a headline, this completes TODO keywords as given in | |
2722 `org-todo-keywords'. | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2723 If the current word is preceded by a backslash, completes the TeX symbols |
58792 | 2724 that are supported for HTML support. |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2725 If the current word is preceded by \"#+\", completes special words for |
58792 | 2726 setting file options. |
2727 At all other locations, this simply calls `ispell-complete-word'." | |
2728 (interactive "P") | |
2729 (catch 'exit | |
2730 (let* ((end (point)) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2731 (beg (save-excursion |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2732 (if (equal (char-before (point)) ?\ ) (backward-char 1)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2733 (skip-chars-backward "a-zA-Z0-9_:$") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2734 (point))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2735 (texp (equal (char-before beg) ?\\)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2736 (opt (equal (buffer-substring (max (point-at-bol) (- beg 2)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2737 beg) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2738 "#+")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2739 (pattern (buffer-substring-no-properties beg end)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2740 (completion-ignore-case opt) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2741 (type nil) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2742 (table (cond |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2743 (opt |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2744 (setq type :opt) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2745 (mapcar (lambda (x) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2746 (string-match "^#\\+\\(\\([A-Z_]+:?\\).*\\)" x) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2747 (cons (match-string 2 x) (match-string 1 x))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2748 (org-split-string (org-get-current-options) "\n"))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2749 (texp |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2750 (setq type :tex) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2751 org-html-entities) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2752 ((string-match "\\`\\*+[ \t]*\\'" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2753 (buffer-substring (point-at-bol) beg)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2754 (setq type :todo) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2755 (mapcar 'list org-todo-keywords)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2756 (t (progn (ispell-complete-word arg) (throw 'exit nil))))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2757 (completion (try-completion pattern table))) |
58792 | 2758 (cond ((eq completion t) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2759 (if (equal type :opt) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2760 (insert (substring (cdr (assoc (upcase pattern) table)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2761 (length pattern))))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2762 ((null completion) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2763 (message "Can't find completion for \"%s\"" pattern) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2764 (ding)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2765 ((not (string= pattern completion)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2766 (delete-region beg end) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2767 (if (string-match " +$" completion) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2768 (setq completion (replace-match "" t t completion))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2769 (insert completion) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2770 (if (get-buffer-window "*Completions*") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2771 (delete-window (get-buffer-window "*Completions*"))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2772 (if (and (eq type :todo) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2773 (assoc completion table)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2774 (insert " ")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2775 (if (and (equal type :opt) (assoc completion table)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2776 (message (substitute-command-keys |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2777 "Press \\[org-complete] again to insert example settings")))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2778 (t |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2779 (message "Making completion list...") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2780 (let ((list (sort (all-completions pattern table) 'string<))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2781 (with-output-to-temp-buffer "*Completions*" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2782 (display-completion-list list))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2783 (message "Making completion list...%s" "done")))))) |
58792 | 2784 |
2785 ;;; Comments, TODO and DEADLINE | |
2786 | |
2787 (defun org-toggle-comment () | |
2788 "Change the COMMENT state of an entry." | |
2789 (interactive) | |
2790 (save-excursion | |
2791 (org-back-to-heading) | |
2792 (if (looking-at (concat outline-regexp | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2793 "\\( +\\<" org-comment-string "\\>\\)")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2794 (replace-match "" t t nil 1) |
58792 | 2795 (if (looking-at outline-regexp) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2796 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2797 (goto-char (match-end 0)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2798 (insert " " org-comment-string)))))) |
58792 | 2799 |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2800 (defvar org-last-todo-state-is-todo nil |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2801 "This is non-nil when the last TODO state change led to a TODO state. |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2802 If the last change removed the TODO tag or switched to DONE, then |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2803 this is nil.") |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2804 |
58792 | 2805 (defun org-todo (&optional arg) |
2806 "Change the TODO state of an item. | |
2807 The state of an item is given by a keyword at the start of the heading, | |
2808 like | |
2809 *** TODO Write paper | |
2810 *** DONE Call mom | |
2811 | |
2812 The different keywords are specified in the variable `org-todo-keywords'. By | |
2813 default the available states are \"TODO\" and \"DONE\". | |
2814 So for this example: when the item starts with TODO, it is changed to DONE. | |
2815 When it starts with DONE, the DONE is removed. And when neither TODO nor | |
2816 DONE are present, add TODO at the beginning of the heading. | |
2817 | |
2818 With prefix arg, use completion to determined the new state. With numeric | |
2819 prefix arg, switch to that state." | |
2820 (interactive "P") | |
2821 (save-excursion | |
2822 (org-back-to-heading) | |
2823 (if (looking-at outline-regexp) (goto-char (match-end 0))) | |
2824 (or (looking-at (concat " +" org-todo-regexp " *")) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2825 (looking-at " *")) |
58792 | 2826 (let* ((this (match-string 1)) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2827 (completion-ignore-case t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2828 (member (member this org-todo-keywords)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2829 (tail (cdr member)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2830 (state (cond |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2831 ((equal arg '(4)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2832 ;; Read a state with completion |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2833 (completing-read "State: " (mapcar (lambda(x) (list x)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2834 org-todo-keywords) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2835 nil t)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2836 (arg |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2837 ;; user requests a specific state |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2838 (nth (1- (prefix-numeric-value arg)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2839 org-todo-keywords)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2840 ((null member) (car org-todo-keywords)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2841 ((null tail) nil) ;; -> first entry |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2842 ((eq org-todo-interpretation 'sequence) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2843 (car tail)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2844 ((memq org-todo-interpretation '(type priority)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2845 (if (eq this-command last-command) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2846 (car tail) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2847 (if (> (length tail) 0) org-done-string nil))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2848 (t nil))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2849 (next (if state (concat " " state " ") " "))) |
58792 | 2850 (replace-match next t t) |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2851 (setq org-last-todo-state-is-todo |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2852 (not (equal state org-done-string))) |
58792 | 2853 (run-hooks 'org-after-todo-state-change-hook))) |
2854 ;; Fixup cursor location if close to the keyword | |
2855 (if (and (outline-on-heading-p) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2856 (not (bolp)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2857 (save-excursion (beginning-of-line 1) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2858 (looking-at org-todo-line-regexp)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2859 (< (point) (+ 2 (or (match-end 2) (match-end 1))))) |
58792 | 2860 (progn |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2861 (goto-char (or (match-end 2) (match-end 1))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2862 (just-one-space)))) |
58792 | 2863 |
2864 (defun org-show-todo-tree (arg) | |
2865 "Make a compact tree which shows all headlines marked with TODO. | |
2866 The tree will show the lines where the regexp matches, and all higher | |
2867 headlines above the match." | |
2868 (interactive "P") | |
2869 (let ((case-fold-search nil) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2870 (kwd-re (if arg org-todo-regexp org-not-done-regexp))) |
58792 | 2871 (message "%d TODO entries found" |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2872 (org-occur (concat "^" outline-regexp " +" kwd-re ))))) |
58792 | 2873 |
2874 (defun org-deadline () | |
2875 "Insert the DEADLINE: string to make a deadline. | |
2876 A timestamp is also inserted - use \\[org-timestamp-up] and \\[org-timestamp-down] | |
2877 to modify it to the correct date." | |
2878 (interactive) | |
2879 (insert | |
2880 org-deadline-string " " | |
2881 (format-time-string (car org-time-stamp-formats) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2882 (org-read-date nil 'to-time))) |
58792 | 2883 (message (substitute-command-keys |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2884 "Use \\[org-timestamp-up-day] and \\[org-timestamp-down-day] to change the date."))) |
58792 | 2885 |
2886 (defun org-schedule () | |
2887 "Insert the SCHEDULED: string to schedule a TODO item. | |
2888 A timestamp is also inserted - use \\[org-timestamp-up] and \\[org-timestamp-down] | |
2889 to modify it to the correct date." | |
2890 (interactive) | |
2891 (insert | |
2892 org-scheduled-string " " | |
2893 (format-time-string (car org-time-stamp-formats) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2894 (org-read-date nil 'to-time))) |
58792 | 2895 (message (substitute-command-keys |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2896 "Use \\[org-timestamp-up-day] and \\[org-timestamp-down-day] to change the date."))) |
58792 | 2897 |
2898 | |
2899 (defun org-occur (regexp &optional callback) | |
2900 "Make a compact tree which shows all matches of REGEXP. | |
2901 The tree will show the lines where the regexp matches, and all higher | |
2902 headlines above the match. It will also show the heading after the match, | |
2903 to make sure editing the matching entry is easy. | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2904 if CALLBACK is non-nil, it is a function which is called to confirm |
58792 | 2905 that the match should indeed be shown." |
2906 (interactive "sRegexp: ") | |
2907 (setq regexp (org-check-occur-regexp regexp)) | |
2908 (let ((cnt 0)) | |
2909 (save-excursion | |
2910 (goto-char (point-min)) | |
2911 (hide-sublevels 1) | |
2912 (while (re-search-forward regexp nil t) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2913 (when (or (not callback) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2914 (funcall callback)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2915 (setq cnt (1+ cnt)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2916 (org-show-hierarchy-above)))) |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2917 (run-hooks 'org-occur-hook) |
58792 | 2918 (if (interactive-p) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2919 (message "%d match(es) for regexp %s" cnt regexp)) |
58792 | 2920 cnt)) |
2921 | |
2922 (defun org-show-hierarchy-above () | |
2923 "Make sure point and the headings hierarchy above is visible." | |
2924 (if (org-on-heading-p t) | |
2925 (org-flag-heading nil) ; only show the heading | |
2926 (org-show-hidden-entry)) ; show entire entry | |
2927 (save-excursion | |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
2928 (and org-show-following-heading |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2929 (outline-next-heading) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2930 (org-flag-heading nil))) ; show the next heading |
58792 | 2931 (save-excursion ; show all higher headings |
2932 (while (condition-case nil | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2933 (progn (org-up-heading-all 1) t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2934 (error nil)) |
58792 | 2935 (org-flag-heading nil)))) |
2936 | |
2937 ;;; Priorities | |
2938 | |
2939 (defvar org-priority-regexp ".*?\\(\\[#\\([A-Z]\\)\\] ?\\)" | |
2940 "Regular expression matching the priority indicator.") | |
2941 | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2942 (defvar org-remove-priority-next-time nil) |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
2943 |
58792 | 2944 (defun org-priority-up () |
2945 "Increase the priority of the current item." | |
2946 (interactive) | |
2947 (org-priority 'up)) | |
2948 | |
2949 (defun org-priority-down () | |
2950 "Decrease the priority of the current item." | |
2951 (interactive) | |
2952 (org-priority 'down)) | |
2953 | |
2954 (defun org-priority (&optional action) | |
2955 "Change the priority of an item by ARG. | |
2956 ACTION can be set, up, or down." | |
2957 (interactive) | |
2958 (setq action (or action 'set)) | |
2959 (let (current new news have remove) | |
2960 (save-excursion | |
2961 (org-back-to-heading) | |
2962 (if (looking-at org-priority-regexp) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2963 (setq current (string-to-char (match-string 2)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2964 have t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2965 (setq current org-default-priority)) |
58792 | 2966 (cond |
2967 ((eq action 'set) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2968 (message (format "Priority A-%c, SPC to remove: " org-lowest-priority)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2969 (setq new (read-char-exclusive)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2970 (cond ((equal new ?\ ) (setq remove t)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2971 ((or (< (upcase new) ?A) (> (upcase new) org-lowest-priority)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2972 (error "Priority must be between `%c' and `%c'" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2973 ?A org-lowest-priority)))) |
58792 | 2974 ((eq action 'up) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2975 (setq new (1- current))) |
58792 | 2976 ((eq action 'down) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2977 (setq new (1+ current))) |
60918
58a53f588384
* textmodes/refbib.el, textmodes/refer.el, textmodes/reftex-cite.el,
Werner LEMBERG <wl@gnu.org>
parents:
59596
diff
changeset
|
2978 (t (error "Invalid action"))) |
58792 | 2979 (setq new (min (max ?A (upcase new)) org-lowest-priority)) |
2980 (setq news (format "%c" new)) | |
2981 (if have | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2982 (if remove |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2983 (replace-match "" t t nil 1) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2984 (replace-match news t t nil 2)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2985 (if remove |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2986 (error "No priority cookie found in line") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2987 (looking-at org-todo-line-regexp) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2988 (if (match-end 2) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2989 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2990 (goto-char (match-end 2)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2991 (insert " [#" news "]")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2992 (goto-char (match-beginning 3)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2993 (insert "[#" news "] "))))) |
58792 | 2994 (if remove |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
2995 (message "Priority removed") |
58792 | 2996 (message "Priority of current item set to %s" news)))) |
2997 | |
2998 | |
2999 (defun org-get-priority (s) | |
3000 "Find priority cookie and return priority." | |
3001 (save-match-data | |
3002 (if (not (string-match org-priority-regexp s)) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3003 (* 1000 (- org-lowest-priority org-default-priority)) |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
3004 (* 1000 (- org-lowest-priority |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3005 (string-to-char (match-string 2 s))))))) |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
3006 |
58792 | 3007 ;;; Timestamps |
3008 | |
3009 (defvar org-last-changed-timestamp nil) | |
3010 | |
3011 (defun org-time-stamp (arg) | |
3012 "Prompt for a date/time and insert a time stamp. | |
3013 If the user specifies a time like HH:MM, or if this command is called | |
3014 with a prefix argument, the time stamp will contain date and time. | |
3015 Otherwise, only the date will be included. All parts of a date not | |
3016 specified by the user will be filled in from the current date/time. | |
3017 So if you press just return without typing anything, the time stamp | |
3018 will represent the current date/time. If there is already a timestamp | |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
3019 at the cursor, it will be modified." |
58792 | 3020 (interactive "P") |
3021 (let ((fmt (if arg (cdr org-time-stamp-formats) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3022 (car org-time-stamp-formats))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3023 (org-time-was-given nil) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3024 time) |
58792 | 3025 (cond |
3026 ((and (org-at-timestamp-p) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3027 (eq last-command 'org-time-stamp) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3028 (eq this-command 'org-time-stamp)) |
58792 | 3029 (insert "--") |
3030 (setq time (let ((this-command this-command)) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3031 (org-read-date arg 'totime))) |
58792 | 3032 (if org-time-was-given (setq fmt (cdr org-time-stamp-formats))) |
3033 (insert (format-time-string fmt time))) | |
3034 ((org-at-timestamp-p) | |
3035 (setq time (let ((this-command this-command)) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3036 (org-read-date arg 'totime))) |
58792 | 3037 (and (org-at-timestamp-p) (replace-match |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3038 (setq org-last-changed-timestamp |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3039 (format-time-string fmt time)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3040 t t)) |
58792 | 3041 (message "Timestamp updated")) |
3042 (t | |
3043 (setq time (let ((this-command this-command)) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3044 (org-read-date arg 'totime))) |
58792 | 3045 (if org-time-was-given (setq fmt (cdr org-time-stamp-formats))) |
3046 (insert (format-time-string fmt time)))))) | |
3047 | |
3048 ;;; FIXME: Make the function take "Fri" as "next friday" | |
3049 (defun org-read-date (&optional with-time to-time) | |
3050 "Read a date and make things smooth for the user. | |
3051 The prompt will suggest to enter an ISO date, but you can also enter anything | |
3052 which will at least partially be understood by `parse-time-string'. | |
3053 Unrecognized parts of the date will default to the current day, month ,year, | |
3054 hour and minute. For example, | |
3055 3-2-5 --> 2003-02-05 | |
3056 feb 15 --> currentyear-02-15 | |
3057 sep 12 9 --> 2009-09-12 | |
3058 12:45 --> today 12:45 | |
3059 22 sept 0:34 --> currentyear-09-22 0:34 | |
3060 12 --> currentyear-currentmonth-12 | |
3061 etc. | |
3062 The function understands only English month and weekday abbreviations, | |
3063 but this can be configured with the variables `parse-time-months' and | |
3064 `parse-time-weekdays'. | |
3065 | |
3066 While prompting, a calendar is popped up - you can also select the | |
3067 date with the mouse (button 1). The calendar shows a period of three | |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
3068 month. To scroll it to other months, use the keys `>' and `<'. |
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
3069 If you don't like the calendar, turn it off with |
58792 | 3070 \(setq org-popup-calendar-for-date-prompt nil). |
3071 | |
3072 With optional argument TO-TIME, the date will immediately be converted | |
3073 to an internal time. | |
3074 With an optional argument WITH-TIME, the prompt will suggest to also | |
3075 insert a time. Note that when WITH-TIME is not set, you can still | |
3076 enter a time, and this function will inform the calling routine about | |
3077 this change. The calling routine may then choose to change the format | |
3078 used to insert the time stamp into the buffer to include the time." | |
3079 (let* ((default-time | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3080 ;; Default time is either today, or, when entering a range, |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3081 ;; the range start. |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3082 (if (save-excursion |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3083 (re-search-backward |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3084 (concat org-ts-regexp "--\\=") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3085 (- (point) 20) t)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3086 (apply |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3087 'encode-time |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3088 (mapcar (lambda(x) (or x 0)) ;; FIXME: Problem with timezone? |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3089 (parse-time-string (match-string 1)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3090 (current-time))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3091 (timestr (format-time-string |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3092 (if with-time "%Y-%m-%d %H:%M" "%Y-%m-%d") default-time)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3093 (prompt (format "YYYY-MM-DD [%s]: " timestr)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3094 ans ans1 ans2 |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3095 second minute hour day month year tl) |
58792 | 3096 |
3097 (if org-popup-calendar-for-date-prompt | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3098 ;; Also show a calendar for date selection |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3099 ;; Copied (with modifications) from planner.el by John Wiegley |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3100 (save-excursion |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3101 (save-window-excursion |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3102 (calendar) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3103 (calendar-forward-day (- (time-to-days default-time) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3104 (calendar-absolute-from-gregorian |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3105 (calendar-current-date)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3106 (let* ((old-map (current-local-map)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3107 (map (copy-keymap calendar-mode-map)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3108 (minibuffer-local-map (copy-keymap minibuffer-local-map))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3109 (define-key map (kbd "RET") 'org-calendar-select) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3110 (define-key map (if org-xemacs-p [button1] [mouse-1]) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3111 'org-calendar-select) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3112 (define-key minibuffer-local-map [(meta shift left)] |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3113 (lambda () (interactive) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3114 (org-eval-in-calendar '(calendar-backward-month 1)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3115 (define-key minibuffer-local-map [(meta shift right)] |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3116 (lambda () (interactive) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3117 (org-eval-in-calendar '(calendar-forward-month 1)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3118 (define-key minibuffer-local-map [(shift up)] |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3119 (lambda () (interactive) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3120 (org-eval-in-calendar '(calendar-backward-week 1)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3121 (define-key minibuffer-local-map [(shift down)] |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3122 (lambda () (interactive) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3123 (org-eval-in-calendar '(calendar-forward-week 1)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3124 (define-key minibuffer-local-map [(shift left)] |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3125 (lambda () (interactive) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3126 (org-eval-in-calendar '(calendar-backward-day 1)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3127 (define-key minibuffer-local-map [(shift right)] |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3128 (lambda () (interactive) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3129 (org-eval-in-calendar '(calendar-forward-day 1)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3130 (define-key minibuffer-local-map ">" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3131 (lambda () (interactive) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3132 (org-eval-in-calendar '(scroll-calendar-left 1)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3133 (define-key minibuffer-local-map "<" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3134 (lambda () (interactive) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3135 (org-eval-in-calendar '(scroll-calendar-right 1)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3136 (unwind-protect |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3137 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3138 (use-local-map map) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3139 (setq ans (read-string prompt "" nil nil)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3140 (setq ans (or ans1 ans2 ans))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3141 (use-local-map old-map))))) |
58792 | 3142 ;; Naked prompt only |
3143 (setq ans (read-string prompt "" nil timestr))) | |
3144 | |
3145 (if (string-match | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3146 "^ *\\(\\([0-9]+\\)-\\)?\\([0-1]?[0-9]\\)-\\([0-3]?[0-9]\\)\\([^-0-9]\\|$\\)" ans) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3147 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3148 (setq year (if (match-end 2) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3149 (string-to-number (match-string 2 ans)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3150 (string-to-number (format-time-string "%Y"))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3151 month (string-to-number (match-string 3 ans)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3152 day (string-to-number (match-string 4 ans))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3153 (if (< year 100) (setq year (+ 2000 year))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3154 (setq ans (replace-match (format "%04d-%02d-%02d" year month day) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3155 t t ans)))) |
58792 | 3156 (setq tl (parse-time-string ans) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3157 year (or (nth 5 tl) (string-to-number (format-time-string "%Y"))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3158 month (or (nth 4 tl) (string-to-number (format-time-string "%m"))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3159 day (or (nth 3 tl) (string-to-number (format-time-string "%d"))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3160 hour (or (nth 2 tl) (string-to-number (format-time-string "%H"))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3161 minute (or (nth 1 tl) (string-to-number (format-time-string "%M"))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3162 second (or (nth 0 tl) 0)) |
58792 | 3163 (if (and (boundp 'org-time-was-given) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3164 (nth 2 tl)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3165 (setq org-time-was-given t)) |
58792 | 3166 (if (< year 100) (setq year (+ 2000 year))) |
3167 (if to-time | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3168 (encode-time second minute hour day month year) |
58792 | 3169 (if (or (nth 1 tl) (nth 2 tl)) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3170 (format "%04d-%02d-%02d %02d:%02d" year month day hour minute) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3171 (format "%04d-%02d-%02d" year month day))))) |
58792 | 3172 |
3173 (defun org-eval-in-calendar (form) | |
3174 "Eval FORM in the calendar window and return to current window. | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3175 Also, store the cursor date in variable ans2." |
58792 | 3176 (let ((sw (selected-window))) |
3177 (select-window (get-buffer-window "*Calendar*")) | |
3178 (eval form) | |
3179 (when (calendar-cursor-to-date) | |
3180 (let* ((date (calendar-cursor-to-date)) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3181 (time (encode-time 0 0 0 (nth 1 date) (nth 0 date) (nth 2 date)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3182 (setq ans2 (format-time-string "%Y-%m-%d" time)))) |
58792 | 3183 (select-window sw))) |
3184 | |
3185 (defun org-calendar-select () | |
3186 "Return to `org-read-date' with the date currently selected. | |
3187 This is used by `org-read-date' in a temporary keymap for the calendar buffer." | |
3188 (interactive) | |
3189 (when (calendar-cursor-to-date) | |
3190 (let* ((date (calendar-cursor-to-date)) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3191 (time (encode-time 0 0 0 (nth 1 date) (nth 0 date) (nth 2 date)))) |
58792 | 3192 (setq ans1 (format-time-string "%Y-%m-%d" time))) |
3193 (if (active-minibuffer-window) (exit-minibuffer)))) | |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
3194 |
58792 | 3195 (defun org-check-deadlines (ndays) |
3196 "Check if there are any deadlines due or past due. | |
3197 A deadline is considered due if it happens within `org-deadline-warning-days' | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
3198 days from today's date. If the deadline appears in an entry marked DONE, |
58792 | 3199 it is not shown. The prefix arg NDAYS can be used to test that many |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
3200 days. If the prefix is a raw \\[universal-argument] prefix, all deadlines are shown." |
58792 | 3201 (interactive "P") |
3202 (let* ((org-warn-days | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3203 (cond |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3204 ((equal ndays '(4)) 100000) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3205 (ndays (prefix-numeric-value ndays)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3206 (t org-deadline-warning-days))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3207 (case-fold-search nil) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3208 (regexp (concat "\\<" org-deadline-string " *<\\([^>]+\\)>")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3209 (callback |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3210 (lambda () |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3211 (and (let ((d1 (time-to-days (current-time))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3212 (d2 (time-to-days |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3213 (org-time-string-to-time (match-string 1))))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3214 (< (- d2 d1) org-warn-days)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3215 (not (org-entry-is-done-p)))))) |
58792 | 3216 (message "%d deadlines past-due or due within %d days" |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3217 (org-occur regexp callback) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3218 org-warn-days))) |
58792 | 3219 |
3220 (defun org-evaluate-time-range (&optional to-buffer) | |
3221 "Evaluate a time range by computing the difference between start and end. | |
3222 Normally the result is just printed in the echo area, but with prefix arg | |
3223 TO-BUFFER, the result is inserted just after the date stamp into the buffer. | |
3224 If the time range is actually in a table, the result is inserted into the | |
3225 next column. | |
3226 For time difference computation, a year is assumed to be exactly 365 | |
3227 days in order to avoid rounding problems." | |
3228 (interactive "P") | |
3229 (save-excursion | |
3230 (unless (org-at-date-range-p) | |
3231 (goto-char (point-at-bol)) | |
3232 (re-search-forward org-tr-regexp (point-at-eol) t)) | |
3233 (if (not (org-at-date-range-p)) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3234 (error "Not at a time-stamp range, and none found in current line"))) |
58792 | 3235 (let* ((ts1 (match-string 1)) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3236 (ts2 (match-string 2)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3237 (havetime (or (> (length ts1) 15) (> (length ts2) 15))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3238 (match-end (match-end 0)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3239 (time1 (org-time-string-to-time ts1)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3240 (time2 (org-time-string-to-time ts2)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3241 (t1 (time-to-seconds time1)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3242 (t2 (time-to-seconds time2)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3243 (diff (abs (- t2 t1))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3244 (negative (< (- t2 t1) 0)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3245 ;; (ys (floor (* 365 24 60 60))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3246 (ds (* 24 60 60)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3247 (hs (* 60 60)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3248 (fy "%dy %dd %02d:%02d") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3249 (fy1 "%dy %dd") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3250 (fd "%dd %02d:%02d") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3251 (fd1 "%dd") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3252 (fh "%02d:%02d") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3253 y d h m align) |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
3254 ;; FIXME: Should I re-introduce years, make year refer to same date? |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
3255 ;; This would be the only useful way to have years, actually. |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
3256 (if havetime |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3257 (setq ; y (floor (/ diff ys)) diff (mod diff ys) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3258 y 0 |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3259 d (floor (/ diff ds)) diff (mod diff ds) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3260 h (floor (/ diff hs)) diff (mod diff hs) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3261 m (floor (/ diff 60))) |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
3262 (setq ; y (floor (/ diff ys)) diff (mod diff ys) |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
3263 y 0 |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
3264 d (floor (+ (/ diff ds) 0.5)) |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
3265 h 0 m 0)) |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
3266 (if (not to-buffer) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3267 (message (org-make-tdiff-string y d h m)) |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
3268 (when (org-at-table-p) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3269 (goto-char match-end) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3270 (setq align t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3271 (and (looking-at " *|") (goto-char (match-end 0)))) |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
3272 (if (looking-at |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3273 "\\( *-? *[0-9]+y\\)?\\( *[0-9]+d\\)? *[0-9][0-9]:[0-9][0-9]") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3274 (replace-match "")) |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
3275 (if negative (insert " -")) |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
3276 (if (> y 0) (insert " " (format (if havetime fy fy1) y d h m)) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3277 (if (> d 0) (insert " " (format (if havetime fd fd1) d h m)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3278 (insert " " (format fh h m)))) |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
3279 (if align (org-table-align)) |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
3280 (message "Time difference inserted")))) |
58792 | 3281 |
3282 (defun org-make-tdiff-string (y d h m) | |
3283 (let ((fmt "") | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3284 (l nil)) |
58792 | 3285 (if (> y 0) (setq fmt (concat fmt "%d year" (if (> y 1) "s" "") " ") |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3286 l (push y l))) |
58792 | 3287 (if (> d 0) (setq fmt (concat fmt "%d day" (if (> d 1) "s" "") " ") |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3288 l (push d l))) |
58792 | 3289 (if (> h 0) (setq fmt (concat fmt "%d hour" (if (> h 1) "s" "") " ") |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3290 l (push h l))) |
58792 | 3291 (if (> m 0) (setq fmt (concat fmt "%d minute" (if (> m 1) "s" "") " ") |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3292 l (push m l))) |
58792 | 3293 (apply 'format fmt (nreverse l)))) |
3294 | |
3295 (defun org-time-string-to-time (s) | |
3296 (apply 'encode-time (org-parse-time-string s))) | |
3297 | |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
3298 (defun org-parse-time-string (s &optional nodefault) |
58792 | 3299 "Parse the standard Org-mode time string. |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
3300 This should be a lot faster than the normal `parse-time-string'. |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
3301 If time is not given, defaults to 0:00. However, with optional NODEFAULT, |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
3302 hour and minute fields will be nil if not given." |
58792 | 3303 (if (string-match org-ts-regexp1 s) |
3304 (list 0 | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3305 (if (or (match-beginning 8) (not nodefault)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3306 (string-to-number (or (match-string 8 s) "0"))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3307 (if (or (match-beginning 7) (not nodefault)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3308 (string-to-number (or (match-string 7 s) "0"))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3309 (string-to-number (match-string 4 s)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3310 (string-to-number (match-string 3 s)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3311 (string-to-number (match-string 2 s)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3312 nil nil nil) |
58792 | 3313 (make-list 9 0))) |
3314 | |
3315 (defun org-timestamp-up (&optional arg) | |
3316 "Increase the date item at the cursor by one. | |
3317 If the cursor is on the year, change the year. If it is on the month or | |
3318 the day, change that. | |
3319 With prefix ARG, change by that many units." | |
3320 (interactive "p") | |
3321 (org-timestamp-change (prefix-numeric-value arg))) | |
3322 | |
3323 (defun org-timestamp-down (&optional arg) | |
3324 "Decrease the date item at the cursor by one. | |
3325 If the cursor is on the year, change the year. If it is on the month or | |
3326 the day, change that. | |
3327 With prefix ARG, change by that many units." | |
3328 (interactive "p") | |
3329 (org-timestamp-change (- (prefix-numeric-value arg)))) | |
3330 | |
3331 (defun org-timestamp-up-day (&optional arg) | |
3332 "Increase the date in the time stamp by one day. | |
3333 With prefix ARG, change that many days." | |
3334 (interactive "p") | |
3335 (org-timestamp-change (prefix-numeric-value arg) 'day)) | |
3336 | |
3337 (defun org-timestamp-down-day (&optional arg) | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
3338 "Decrease the date in the time stamp by one day. |
58792 | 3339 With prefix ARG, change that many days." |
3340 (interactive "p") | |
3341 (org-timestamp-change (- (prefix-numeric-value arg)) 'day)) | |
3342 | |
3343 (defsubst org-pos-in-match-range (pos n) | |
3344 (and (match-beginning n) | |
3345 (<= (match-beginning n) pos) | |
3346 (>= (match-end n) pos))) | |
3347 | |
3348 (defun org-at-timestamp-p () | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3349 "Determine if the cursor is or at a timestamp." |
58792 | 3350 (interactive) |
3351 (let* ((tsr org-ts-regexp2) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3352 (pos (point)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3353 (ans (or (looking-at tsr) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3354 (save-excursion |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3355 (skip-chars-backward "^<\n\r\t") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3356 (if (> (point) 1) (backward-char 1)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3357 (and (looking-at tsr) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3358 (> (- (match-end 0) pos) -1)))))) |
58792 | 3359 (and (boundp 'org-ts-what) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3360 (setq org-ts-what |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3361 (cond |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3362 ((org-pos-in-match-range pos 2) 'year) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3363 ((org-pos-in-match-range pos 3) 'month) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3364 ((org-pos-in-match-range pos 7) 'hour) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3365 ((org-pos-in-match-range pos 8) 'minute) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3366 ((or (org-pos-in-match-range pos 4) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3367 (org-pos-in-match-range pos 5)) 'day) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3368 (t 'day)))) |
58792 | 3369 ans)) |
3370 | |
3371 (defun org-timestamp-change (n &optional what) | |
3372 "Change the date in the time stamp at point. | |
3373 The date will be changed by N times WHAT. WHAT can be `day', `month', | |
3374 `year', `minute', `second'. If WHAT is not given, the cursor position | |
3375 in the timestamp determines what will be changed." | |
3376 (let ((fmt (car org-time-stamp-formats)) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3377 org-ts-what |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3378 (pos (point)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3379 ts time time0) |
58792 | 3380 (if (not (org-at-timestamp-p)) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3381 (error "Not at a timestamp")) |
58792 | 3382 (setq org-ts-what (or what org-ts-what)) |
3383 (setq fmt (if (<= (abs (- (cdr org-ts-lengths) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3384 (- (match-end 0) (match-beginning 0)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3385 1) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3386 (cdr org-time-stamp-formats) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3387 (car org-time-stamp-formats))) |
58792 | 3388 (setq ts (match-string 0)) |
3389 (replace-match "") | |
3390 (setq time0 (org-parse-time-string ts)) | |
3391 (setq time | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3392 (apply 'encode-time |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3393 (append |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3394 (list (or (car time0) 0)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3395 (list (+ (if (eq org-ts-what 'minute) n 0) (nth 1 time0))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3396 (list (+ (if (eq org-ts-what 'hour) n 0) (nth 2 time0))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3397 (list (+ (if (eq org-ts-what 'day) n 0) (nth 3 time0))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3398 (list (+ (if (eq org-ts-what 'month) n 0) (nth 4 time0))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3399 (list (+ (if (eq org-ts-what 'year) n 0) (nth 5 time0))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3400 (nthcdr 6 time0)))) |
58792 | 3401 (if (eq what 'calendar) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3402 (let ((cal-date |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3403 (save-excursion |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3404 (save-match-data |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3405 (set-buffer "*Calendar*") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3406 (calendar-cursor-to-date))))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3407 (setcar (nthcdr 4 time0) (nth 0 cal-date)) ; month |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3408 (setcar (nthcdr 3 time0) (nth 1 cal-date)) ; day |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3409 (setcar (nthcdr 5 time0) (nth 2 cal-date)) ; year |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3410 (setcar time0 (or (car time0) 0)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3411 (setcar (nthcdr 1 time0) (or (nth 1 time0) 0)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3412 (setcar (nthcdr 2 time0) (or (nth 1 time0) 0)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3413 (setq time (apply 'encode-time time0)))) |
58792 | 3414 (insert (setq org-last-changed-timestamp (format-time-string fmt time))) |
3415 (goto-char pos) | |
3416 ;; Try to recenter the calendar window, if any | |
3417 (if (and org-calendar-follow-timestamp-change | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3418 (get-buffer-window "*Calendar*" t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3419 (memq org-ts-what '(day month year))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3420 (org-recenter-calendar (time-to-days time))))) |
58792 | 3421 |
3422 (defun org-recenter-calendar (date) | |
3423 "If the calendar is visible, recenter it to DATE." | |
3424 (let* ((win (selected-window)) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3425 (cwin (get-buffer-window "*Calendar*" t))) |
58792 | 3426 (when cwin |
3427 (select-window cwin) | |
3428 (calendar-goto-date (if (listp date) date | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3429 (calendar-gregorian-from-absolute date))) |
58792 | 3430 (select-window win)))) |
3431 | |
3432 (defun org-goto-calendar (&optional arg) | |
3433 "Go to the Emacs calendar at the current date. | |
3434 If there is a time stamp in the current line, go to that date. | |
3435 A prefix ARG can be used force the current date." | |
3436 (interactive "P") | |
3437 (let ((tsr org-ts-regexp) diff) | |
3438 (if (or (org-at-timestamp-p) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3439 (save-excursion |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3440 (beginning-of-line 1) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3441 (looking-at (concat ".*" tsr)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3442 (let ((d1 (time-to-days (current-time))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3443 (d2 (time-to-days |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3444 (org-time-string-to-time (match-string 1))))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3445 (setq diff (- d2 d1)))) |
58792 | 3446 (calendar) |
3447 (calendar-goto-today) | |
3448 (if (and diff (not arg)) (calendar-forward-day diff)))) | |
3449 | |
3450 (defun org-date-from-calendar () | |
3451 "Insert time stamp corresponding to cursor date in *Calendar* buffer. | |
3452 If there is already a time stamp at the cursor position, update it." | |
3453 (interactive) | |
3454 (org-timestamp-change 0 'calendar)) | |
3455 | |
3456 ;;; Agenda, and Diary Integration | |
3457 | |
3458 ;;; Define the mode | |
3459 | |
3460 (defvar org-agenda-mode-map (make-sparse-keymap) | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
3461 "Keymap for `org-agenda-mode'.") |
58792 | 3462 |
3463 (defvar org-agenda-menu) | |
3464 (defvar org-agenda-follow-mode nil) | |
3465 (defvar org-agenda-buffer-name "*Org Agenda*") | |
3466 (defvar org-agenda-redo-command nil) | |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
3467 (defvar org-agenda-mode-hook nil) |
58792 | 3468 |
3469 ;;;###autoload | |
3470 (defun org-agenda-mode () | |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
3471 "Mode for time-sorted view on action items in Org-mode files. |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
3472 |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
3473 The following commands are available: |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
3474 |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
3475 \\{org-agenda-mode-map}" |
58792 | 3476 (interactive) |
3477 (kill-all-local-variables) | |
3478 (setq major-mode 'org-agenda-mode) | |
3479 (setq mode-name "Org-Agenda") | |
3480 (use-local-map org-agenda-mode-map) | |
3481 (easy-menu-add org-agenda-menu) | |
3482 (if org-startup-truncated (setq truncate-lines t)) | |
3483 (add-hook 'post-command-hook 'org-agenda-post-command-hook nil 'local) | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
3484 (add-hook 'pre-command-hook 'org-unhighlight nil 'local) |
58792 | 3485 (setq org-agenda-follow-mode nil) |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
3486 (easy-menu-change |
58792 | 3487 '("Agenda") "Agenda Files" |
3488 (append | |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
3489 (list |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
3490 ["Edit File List" (customize-variable 'org-agenda-files) t] |
58792 | 3491 "--") |
3492 (mapcar 'org-file-menu-entry org-agenda-files))) | |
3493 (org-agenda-set-mode-name) | |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
3494 (apply |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
3495 (if (fboundp 'run-mode-hooks) 'run-mode-hooks 'run-hooks) |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
3496 org-agenda-mode-hook)) |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
3497 |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
3498 (define-key org-agenda-mode-map "\C-i" 'org-agenda-goto) |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
3499 (define-key org-agenda-mode-map "\C-m" 'org-agenda-switch-to) |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
3500 (define-key org-agenda-mode-map " " 'org-agenda-show) |
58792 | 3501 (define-key org-agenda-mode-map "\C-c\C-t" 'org-agenda-todo) |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
3502 (define-key org-agenda-mode-map "o" 'delete-other-windows) |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
3503 (define-key org-agenda-mode-map "l" 'org-agenda-recenter) |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
3504 (define-key org-agenda-mode-map "t" 'org-agenda-todo) |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
3505 (define-key org-agenda-mode-map "." 'org-agenda-goto-today) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
3506 (define-key org-agenda-mode-map "d" 'org-agenda-day-view) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
3507 (define-key org-agenda-mode-map "w" 'org-agenda-week-view) |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
3508 (define-key org-agenda-mode-map (org-key 'S-right) 'org-agenda-date-later) |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
3509 (define-key org-agenda-mode-map (org-key 'S-left) 'org-agenda-date-earlier) |
58792 | 3510 |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
3511 (define-key org-agenda-mode-map ">" 'org-agenda-date-prompt) |
58792 | 3512 (let ((l '(1 2 3 4 5 6 7 8 9 0))) |
3513 (while l (define-key org-agenda-mode-map | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3514 (int-to-string (pop l)) 'digit-argument))) |
58792 | 3515 |
3516 (define-key org-agenda-mode-map "f" 'org-agenda-follow-mode) | |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
3517 (define-key org-agenda-mode-map "D" 'org-agenda-toggle-diary) |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
3518 (define-key org-agenda-mode-map "g" 'org-agenda-toggle-time-grid) |
58792 | 3519 (define-key org-agenda-mode-map "r" 'org-agenda-redo) |
3520 (define-key org-agenda-mode-map "q" 'org-agenda-quit) | |
3521 (define-key org-agenda-mode-map "x" 'org-agenda-exit) | |
3522 (define-key org-agenda-mode-map "P" 'org-agenda-show-priority) | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
3523 (define-key org-agenda-mode-map "n" 'next-line) |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
3524 (define-key org-agenda-mode-map "p" 'previous-line) |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
3525 (define-key org-agenda-mode-map "\C-n" 'org-agenda-next-date-line) |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
3526 (define-key org-agenda-mode-map "\C-p" 'org-agenda-previous-date-line) |
58792 | 3527 (define-key org-agenda-mode-map "," 'org-agenda-priority) |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
3528 (define-key org-agenda-mode-map "\C-c," 'org-agenda-priority) |
58792 | 3529 (define-key org-agenda-mode-map "i" 'org-agenda-diary-entry) |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
3530 (define-key org-agenda-mode-map "c" 'org-agenda-goto-calendar) |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
3531 (eval-after-load "calendar" |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
3532 '(define-key calendar-mode-map org-calendar-to-agenda-key |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
3533 'org-calendar-goto-agenda)) |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
3534 (define-key org-agenda-mode-map "C" 'org-agenda-convert-date) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
3535 (define-key org-agenda-mode-map "m" 'org-agenda-phases-of-moon) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
3536 (define-key org-agenda-mode-map "M" 'org-agenda-phases-of-moon) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
3537 (define-key org-agenda-mode-map "s" 'org-agenda-sunrise-sunset) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
3538 (define-key org-agenda-mode-map "S" 'org-agenda-sunrise-sunset) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
3539 (define-key org-agenda-mode-map "h" 'org-agenda-holidays) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
3540 (define-key org-agenda-mode-map "H" 'org-agenda-holidays) |
58792 | 3541 (define-key org-agenda-mode-map "+" 'org-agenda-priority-up) |
3542 (define-key org-agenda-mode-map "-" 'org-agenda-priority-down) | |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
3543 (define-key org-agenda-mode-map (org-key 'S-up) 'org-agenda-priority-up) |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
3544 (define-key org-agenda-mode-map (org-key 'S-down) 'org-agenda-priority-down) |
58792 | 3545 (define-key org-agenda-mode-map [(right)] 'org-agenda-later) |
3546 (define-key org-agenda-mode-map [(left)] 'org-agenda-earlier) | |
3547 | |
3548 (defvar org-agenda-keymap (copy-keymap org-agenda-mode-map) | |
3549 "Local keymap for agenda entries from Org-mode.") | |
3550 | |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
3551 (define-key org-agenda-keymap |
58792 | 3552 (if org-xemacs-p [(button2)] [(mouse-2)]) 'org-agenda-goto-mouse) |
3553 (define-key org-agenda-keymap | |
3554 (if org-xemacs-p [(button3)] [(mouse-3)]) 'org-agenda-show-mouse) | |
3555 | |
3556 (easy-menu-define org-agenda-menu org-agenda-mode-map "Agenda menu" | |
3557 '("Agenda" | |
3558 ("Agenda Files") | |
3559 "--" | |
3560 ["Show" org-agenda-show t] | |
3561 ["Go To (other window)" org-agenda-goto t] | |
3562 ["Go To (one window)" org-agenda-switch-to t] | |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
3563 ["Follow Mode" org-agenda-follow-mode |
58792 | 3564 :style toggle :selected org-agenda-follow-mode :active t] |
3565 "--" | |
3566 ["Cycle TODO" org-agenda-todo t] | |
3567 ("Reschedule" | |
3568 ["Reschedule +1 day" org-agenda-date-later t] | |
3569 ["Reschedule -1 day" org-agenda-date-earlier t] | |
3570 "--" | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
3571 ["Reschedule to ..." org-agenda-date-prompt t]) |
58792 | 3572 ("Priority" |
3573 ["Set Priority" org-agenda-priority t] | |
3574 ["Increase Priority" org-agenda-priority-up t] | |
3575 ["Decrease Priority" org-agenda-priority-down t] | |
3576 ["Show Priority" org-agenda-show-priority t]) | |
3577 "--" | |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
3578 ["Rebuild buffer" org-agenda-redo t] |
58792 | 3579 ["Goto Today" org-agenda-goto-today t] |
3580 ["Next Dates" org-agenda-later (local-variable-p 'starting-day)] | |
3581 ["Previous Dates" org-agenda-earlier (local-variable-p 'starting-day)] | |
3582 "--" | |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
3583 ["Day View" org-agenda-day-view :active (local-variable-p 'starting-day) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
3584 :style radio :selected (equal org-agenda-ndays 1)] |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
3585 ["Week View" org-agenda-week-view :active (local-variable-p 'starting-day) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
3586 :style radio :selected (equal org-agenda-ndays 7)] |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
3587 "--" |
58792 | 3588 ["Include Diary" org-agenda-toggle-diary |
3589 :style toggle :selected org-agenda-include-diary :active t] | |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
3590 ["Use Time Grid" org-agenda-toggle-time-grid |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
3591 :style toggle :selected org-agenda-use-time-grid :active t] |
58792 | 3592 "--" |
3593 ["New Diary Entry" org-agenda-diary-entry t] | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
3594 ("Calendar Commands" |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
3595 ["Goto Calendar" org-agenda-goto-calendar t] |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
3596 ["Phases of the Moon" org-agenda-phases-of-moon t] |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
3597 ["Sunrise/Sunset" org-agenda-sunrise-sunset t] |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
3598 ["Holidays" org-agenda-holidays t] |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
3599 ["Convert" org-agenda-convert-date t]) |
58792 | 3600 "--" |
3601 ["Quit" org-agenda-quit t] | |
3602 ["Exit and Release Buffers" org-agenda-exit t] | |
3603 )) | |
3604 | |
3605 (defvar org-agenda-markers nil | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
3606 "List of all currently active markers created by `org-agenda'.") |
58792 | 3607 (defvar org-agenda-last-marker-time (time-to-seconds (current-time)) |
3608 "Creation time of the last agenda marker.") | |
3609 | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
3610 (defun org-agenda-new-marker (&optional pos) |
58792 | 3611 "Return a new agenda marker. |
3612 Org-mode keeps a list of these markers and resets them when they are | |
3613 no longer in use." | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
3614 (let ((m (copy-marker (or pos (point))))) |
58792 | 3615 (setq org-agenda-last-marker-time (time-to-seconds (current-time))) |
3616 (push m org-agenda-markers) | |
3617 m)) | |
3618 | |
3619 (defun org-agenda-maybe-reset-markers (&optional force) | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
3620 "Reset markers created by `org-agenda'. But only if they are old enough." |
58792 | 3621 (if (or force |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3622 (> (- (time-to-seconds (current-time)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3623 org-agenda-last-marker-time) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3624 5)) |
58792 | 3625 (while org-agenda-markers |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3626 (move-marker (pop org-agenda-markers) nil)))) |
58792 | 3627 |
3628 (defvar org-agenda-new-buffers nil | |
3629 "Buffers created to visit agenda files.") | |
3630 | |
3631 (defun org-get-agenda-file-buffer (file) | |
3632 "Get a buffer visiting FILE. If the buffer needs to be created, add | |
3633 it to the list of buffers which might be released later." | |
3634 (let ((buf (find-buffer-visiting file))) | |
3635 (if buf | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3636 buf ; just return it |
58792 | 3637 ;; Make a new buffer and remember it |
3638 (setq buf (find-file-noselect file)) | |
3639 (if buf (push buf org-agenda-new-buffers)) | |
3640 buf))) | |
3641 | |
3642 (defun org-release-buffers (blist) | |
3643 "Release all buffers in list, asking the user for confirmation when needed. | |
3644 When a buffer is unmodified, it is just killed. When modified, it is saved | |
3645 \(if the user agrees) and then killed." | |
3646 (let (buf file) | |
3647 (while (setq buf (pop blist)) | |
3648 (setq file (buffer-file-name buf)) | |
3649 (when (and (buffer-modified-p buf) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3650 file |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3651 (y-or-n-p (format "Save file %s? " file))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3652 (with-current-buffer buf (save-buffer))) |
58792 | 3653 (kill-buffer buf)))) |
3654 | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
3655 (defvar org-respect-restriction nil) ; Dynamically-scoped param. |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
3656 |
58792 | 3657 (defun org-timeline (&optional include-all) |
3658 "Show a time-sorted view of the entries in the current org file. | |
3659 Only entries with a time stamp of today or later will be listed. With | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
3660 one \\[universal-argument] prefix argument, past entries will also be listed. |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
3661 With two \\[universal-argument] prefixes, all unfinished TODO items will also be shown, |
58792 | 3662 under the current date. |
3663 If the buffer contains an active region, only check the region for | |
3664 dates." | |
3665 (interactive "P") | |
3666 (require 'calendar) | |
3667 (org-agenda-maybe-reset-markers 'force) | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
3668 (org-compile-prefix-format org-timeline-prefix-format) |
58792 | 3669 (let* ((dopast include-all) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3670 (dotodo (equal include-all '(16))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3671 (entry (buffer-file-name)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3672 (org-agenda-files (list (buffer-file-name))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3673 (date (calendar-current-date)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3674 (win (selected-window)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3675 (pos1 (point)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3676 (beg (if (org-region-active-p) (region-beginning) (point-min))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3677 (end (if (org-region-active-p) (region-end) (point-max))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3678 (day-numbers (org-get-all-dates beg end 'no-ranges |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3679 t)) ; always include today |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3680 (today (time-to-days (current-time))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3681 (org-respect-restriction t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3682 (past t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3683 s e rtn d) |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
3684 (setq org-agenda-redo-command |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3685 (list 'progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3686 (list 'switch-to-buffer-other-window (current-buffer)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3687 (list 'org-timeline (list 'quote include-all)))) |
58792 | 3688 (if (not dopast) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3689 ;; Remove past dates from the list of dates. |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3690 (setq day-numbers (delq nil (mapcar (lambda(x) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3691 (if (>= x today) x nil)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3692 day-numbers)))) |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
3693 (switch-to-buffer-other-window |
58792 | 3694 (get-buffer-create org-agenda-buffer-name)) |
3695 (setq buffer-read-only nil) | |
3696 (erase-buffer) | |
3697 (org-agenda-mode) (setq buffer-read-only nil) | |
3698 (while (setq d (pop day-numbers)) | |
3699 (if (and (>= d today) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3700 dopast |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3701 past) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3702 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3703 (setq past nil) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3704 (insert (make-string 79 ?-) "\n"))) |
58792 | 3705 (setq date (calendar-gregorian-from-absolute d)) |
3706 (setq s (point)) | |
3707 (if dotodo | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3708 (setq rtn (org-agenda-get-day-entries |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3709 entry date :todo :timestamp)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3710 (setq rtn (org-agenda-get-day-entries entry date :timestamp))) |
58792 | 3711 (if (or rtn (equal d today)) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3712 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3713 (insert (calendar-day-name date) " " |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3714 (number-to-string (extract-calendar-day date)) " " |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3715 (calendar-month-name (extract-calendar-month date)) " " |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3716 (number-to-string (extract-calendar-year date)) "\n") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3717 (put-text-property s (1- (point)) 'face |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3718 'org-link) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3719 (if (equal d today) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3720 (put-text-property s (1- (point)) 'org-today t)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3721 (insert (org-finalize-agenda-entries rtn) "\n") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3722 (put-text-property s (1- (point)) 'day d)))) |
58792 | 3723 (goto-char (point-min)) |
3724 (setq buffer-read-only t) | |
3725 (goto-char (or (text-property-any (point-min) (point-max) 'org-today t) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3726 (point-min))) |
58792 | 3727 (when (not org-select-timeline-window) |
3728 (select-window win) | |
3729 (goto-char pos1)))) | |
3730 | |
3731 ;;;###autoload | |
3732 (defun org-agenda (&optional include-all start-day ndays) | |
3733 "Produce a weekly view from all files in variable `org-agenda-files'. | |
3734 The view will be for the current week, but from the overview buffer you | |
3735 will be able to go to other weeks. | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
3736 With one \\[universal-argument] prefix argument INCLUDE-ALL, all unfinished TODO items will |
58792 | 3737 also be shown, under the current date. |
3738 START-DAY defaults to TODAY, or to the most recent match for the weekday | |
3739 given in `org-agenda-start-on-weekday'. | |
3740 NDAYS defaults to `org-agenda-ndays'." | |
3741 (interactive "P") | |
3742 (org-agenda-maybe-reset-markers 'force) | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
3743 (org-compile-prefix-format org-agenda-prefix-format) |
58792 | 3744 (require 'calendar) |
3745 (let* ((org-agenda-start-on-weekday | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3746 (if (or (equal ndays 1) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3747 (and (null ndays) (equal 1 org-agenda-ndays))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3748 nil org-agenda-start-on-weekday)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3749 (files (copy-sequence org-agenda-files)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3750 (win (selected-window)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3751 (today (time-to-days (current-time))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3752 (sd (or start-day today)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3753 (start (if (or (null org-agenda-start-on-weekday) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3754 (< org-agenda-ndays 7)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3755 sd |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3756 (let* ((nt (calendar-day-of-week |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3757 (calendar-gregorian-from-absolute sd))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3758 (n1 org-agenda-start-on-weekday) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3759 (d (- nt n1))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3760 (- sd (+ (if (< d 0) 7 0) d))))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3761 (day-numbers (list start)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3762 (inhibit-redisplay t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3763 s e rtn rtnall file date d start-pos end-pos todayp nd) |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
3764 (setq org-agenda-redo-command |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3765 (list 'org-agenda (list 'quote include-all) start-day ndays)) |
58792 | 3766 ;; Make the list of days |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
3767 (setq ndays (or ndays org-agenda-ndays) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3768 nd ndays) |
58792 | 3769 (while (> ndays 1) |
3770 (push (1+ (car day-numbers)) day-numbers) | |
3771 (setq ndays (1- ndays))) | |
3772 (setq day-numbers (nreverse day-numbers)) | |
3773 (if (not (equal (current-buffer) (get-buffer org-agenda-buffer-name))) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3774 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3775 (delete-other-windows) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3776 (switch-to-buffer-other-window |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3777 (get-buffer-create org-agenda-buffer-name)))) |
58792 | 3778 (setq buffer-read-only nil) |
3779 (erase-buffer) | |
3780 (org-agenda-mode) (setq buffer-read-only nil) | |
3781 (set (make-local-variable 'starting-day) (car day-numbers)) | |
3782 (set (make-local-variable 'include-all-loc) include-all) | |
3783 (when (and (or include-all org-agenda-include-all-todo) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3784 (member today day-numbers)) |
58792 | 3785 (setq files org-agenda-files |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3786 rtnall nil) |
58792 | 3787 (while (setq file (pop files)) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3788 (catch 'nextfile |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3789 (org-check-agenda-file file) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3790 (setq date (calendar-gregorian-from-absolute today) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3791 rtn (org-agenda-get-day-entries |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3792 file date :todo)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3793 (setq rtnall (append rtnall rtn)))) |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
3794 (when rtnall |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3795 (insert "ALL CURRENTLY OPEN TODO ITEMS:\n") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3796 (add-text-properties (point-min) (1- (point)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3797 (list 'face 'org-link)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3798 (insert (org-finalize-agenda-entries rtnall) "\n"))) |
58792 | 3799 (while (setq d (pop day-numbers)) |
3800 (setq date (calendar-gregorian-from-absolute d) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3801 s (point)) |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
3802 (if (or (setq todayp (= d today)) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3803 (and (not start-pos) (= d sd))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3804 (setq start-pos (point)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3805 (if (and start-pos (not end-pos)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3806 (setq end-pos (point)))) |
58792 | 3807 (setq files org-agenda-files |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3808 rtnall nil) |
58792 | 3809 (while (setq file (pop files)) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3810 (catch 'nextfile |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3811 (org-check-agenda-file file) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3812 (setq rtn (org-agenda-get-day-entries file date)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3813 (setq rtnall (append rtnall rtn)))) |
58792 | 3814 (if org-agenda-include-diary |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3815 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3816 (require 'diary-lib) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3817 (setq rtn (org-get-entries-from-diary date)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3818 (setq rtnall (append rtnall rtn)))) |
58792 | 3819 (if (or rtnall org-agenda-show-all-dates) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3820 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3821 (insert (format "%-9s %2d %s %4d\n" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3822 (calendar-day-name date) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3823 (extract-calendar-day date) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3824 (calendar-month-name (extract-calendar-month date)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3825 (extract-calendar-year date))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3826 (put-text-property s (1- (point)) 'face |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3827 'org-link) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3828 (if rtnall (insert |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3829 (org-finalize-agenda-entries ;; FIXME: condition needed |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3830 (org-agenda-add-time-grid-maybe |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3831 rtnall nd todayp)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3832 "\n")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3833 (put-text-property s (1- (point)) 'day d)))) |
58792 | 3834 (goto-char (point-min)) |
3835 (setq buffer-read-only t) | |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
3836 (if org-fit-agenda-window |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3837 (fit-window-to-buffer nil (/ (* (frame-height) 3) 4) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3838 (/ (frame-height) 2))) |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
3839 (unless (and (pos-visible-in-window-p (point-min)) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3840 (pos-visible-in-window-p (point-max))) |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
3841 (goto-char (1- (point-max))) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
3842 (recenter -1) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
3843 (if (not (pos-visible-in-window-p (or start-pos 1))) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3844 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3845 (goto-char (or start-pos 1)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3846 (recenter 1)))) |
58792 | 3847 (goto-char (or start-pos 1)) |
3848 (if (not org-select-agenda-window) (select-window win)) | |
3849 (message ""))) | |
3850 | |
3851 (defun org-check-agenda-file (file) | |
3852 "Make sure FILE exists. If not, ask user what to do." | |
3853 ;; FIXME: this does not correctly change the menus | |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
3854 ;; Could probably be fixed by explicitly going to the buffer. |
58792 | 3855 (when (not (file-exists-p file)) |
3856 (message "non-existent file %s. [R]emove from agenda-files or [A]bort?" | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3857 file) |
58792 | 3858 (let ((r (downcase (read-char-exclusive)))) |
3859 (cond | |
3860 ((equal r ?r) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3861 (org-remove-file file) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3862 (throw 'nextfile t)) |
58792 | 3863 (t (error "Abort")))))) |
3864 | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
3865 (defun org-agenda-quit () |
58792 | 3866 "Exit agenda by removing the window or the buffer." |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
3867 (interactive) |
58792 | 3868 (let ((buf (current-buffer))) |
3869 (if (not (one-window-p)) (delete-window)) | |
3870 (kill-buffer buf) | |
3871 (org-agenda-maybe-reset-markers 'force))) | |
3872 | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
3873 (defun org-agenda-exit () |
58792 | 3874 "Exit agenda by removing the window or the buffer. |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
3875 Also kill all Org-mode buffers which have been loaded by `org-agenda'. |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
3876 Org-mode buffers visited directly by the user will not be touched." |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
3877 (interactive) |
58792 | 3878 (org-release-buffers org-agenda-new-buffers) |
3879 (setq org-agenda-new-buffers nil) | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
3880 (org-agenda-quit)) |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
3881 |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
3882 (defun org-agenda-redo () |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
3883 "Rebuild Agenda." |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
3884 (interactive) |
58792 | 3885 (eval org-agenda-redo-command)) |
3886 | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
3887 (defun org-agenda-goto-today () |
58792 | 3888 "Go to today." |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
3889 (interactive) |
58792 | 3890 (if (boundp 'starting-day) |
3891 (let ((cmd (car org-agenda-redo-command)) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3892 (iall (nth 1 org-agenda-redo-command)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3893 (nday (nth 3 org-agenda-redo-command))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3894 (eval (list cmd iall nil nday))) |
58792 | 3895 (goto-char (or (text-property-any (point-min) (point-max) 'org-today t) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3896 (point-min))))) |
58792 | 3897 |
3898 (defun org-agenda-later (arg) | |
3899 "Go forward in time by `org-agenda-ndays' days. | |
3900 With prefix ARG, go forward that many times `org-agenda-ndays'." | |
3901 (interactive "p") | |
3902 (unless (boundp 'starting-day) | |
3903 (error "Not allowed")) | |
3904 (org-agenda (if (boundp 'include-all-loc) include-all-loc nil) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3905 (+ starting-day (* arg org-agenda-ndays)))) |
58792 | 3906 |
3907 (defun org-agenda-earlier (arg) | |
3908 "Go back in time by `org-agenda-ndays' days. | |
3909 With prefix ARG, go back that many times `org-agenda-ndays'." | |
3910 (interactive "p") | |
3911 (unless (boundp 'starting-day) | |
3912 (error "Not allowed")) | |
3913 (org-agenda (if (boundp 'include-all-loc) include-all-loc nil) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3914 (- starting-day (* arg org-agenda-ndays)))) |
58792 | 3915 |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
3916 (defun org-agenda-week-view () |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
3917 "Switch to weekly view for agenda." |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
3918 (interactive) |
58792 | 3919 (unless (boundp 'starting-day) |
3920 (error "Not allowed")) | |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
3921 (setq org-agenda-ndays 7) |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
3922 (org-agenda include-all-loc |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3923 (or (get-text-property (point) 'day) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3924 starting-day)) |
58792 | 3925 (org-agenda-set-mode-name) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
3926 (message "Switched to week view")) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
3927 |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
3928 (defun org-agenda-day-view () |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3929 "Switch to weekly view for agenda." |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
3930 (interactive) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
3931 (unless (boundp 'starting-day) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
3932 (error "Not allowed")) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
3933 (setq org-agenda-ndays 1) |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
3934 (org-agenda include-all-loc |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3935 (or (get-text-property (point) 'day) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3936 starting-day)) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
3937 (org-agenda-set-mode-name) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
3938 (message "Switched to day view")) |
58792 | 3939 |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
3940 (defun org-agenda-next-date-line (&optional arg) |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
3941 "Jump to the next line indicating a date in agenda buffer." |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
3942 (interactive "p") |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
3943 (beginning-of-line 1) |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
3944 (if (looking-at "^\\S-") (forward-char 1)) |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
3945 (if (not (re-search-forward "^\\S-" nil t arg)) |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
3946 (progn |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3947 (backward-char 1) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3948 (error "No next date after this line in this buffer"))) |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
3949 (goto-char (match-beginning 0))) |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
3950 |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
3951 (defun org-agenda-previous-date-line (&optional arg) |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
3952 "Jump to the next line indicating a date in agenda buffer." |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
3953 (interactive "p") |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
3954 (beginning-of-line 1) |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
3955 (if (not (re-search-backward "^\\S-" nil t arg)) |
63431
fd4b70bc23a4
(org-promote, org-evaluate-time-range, org-agenda-next-date-line,
Juanma Barranquero <lekktu@gmail.com>
parents:
63367
diff
changeset
|
3956 (error "No previous date before this line in this buffer"))) |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
3957 |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
3958 ;; Initialize the highlight |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
3959 (defvar org-hl (funcall (if org-xemacs-p 'make-extent 'make-overlay) 1 1)) |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
3960 (funcall (if org-xemacs-p 'set-extent-property 'overlay-put) org-hl |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3961 'face 'highlight) |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
3962 |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
3963 (defun org-highlight (begin end &optional buffer) |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
3964 "Highlight a region with overlay." |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
3965 (funcall (if org-xemacs-p 'set-extent-endpoints 'move-overlay) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3966 org-hl begin end (or buffer (current-buffer)))) |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
3967 |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
3968 (defun org-unhighlight () |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
3969 "Detach overlay INDEX." |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
3970 (funcall (if org-xemacs-p 'detach-extent 'delete-overlay) org-hl)) |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
3971 |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
3972 |
58792 | 3973 (defun org-agenda-follow-mode () |
3974 "Toggle follow mode in an agenda buffer." | |
3975 (interactive) | |
3976 (setq org-agenda-follow-mode (not org-agenda-follow-mode)) | |
3977 (org-agenda-set-mode-name) | |
3978 (message "Follow mode is %s" | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3979 (if org-agenda-follow-mode "on" "off"))) |
58792 | 3980 |
3981 (defun org-agenda-toggle-diary () | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3982 "Toggle follow mode in an agenda buffer." |
58792 | 3983 (interactive) |
3984 (setq org-agenda-include-diary (not org-agenda-include-diary)) | |
3985 (org-agenda-redo) | |
3986 (org-agenda-set-mode-name) | |
3987 (message "Diary inclusion turned %s" | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3988 (if org-agenda-include-diary "on" "off"))) |
58792 | 3989 |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
3990 (defun org-agenda-toggle-time-grid () |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3991 "Toggle follow mode in an agenda buffer." |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
3992 (interactive) |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
3993 (setq org-agenda-use-time-grid (not org-agenda-use-time-grid)) |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
3994 (org-agenda-redo) |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
3995 (org-agenda-set-mode-name) |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
3996 (message "Time-grid turned %s" |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
3997 (if org-agenda-use-time-grid "on" "off"))) |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
3998 |
58792 | 3999 (defun org-agenda-set-mode-name () |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
4000 "Set the mode name to indicate all the small mode settings." |
58792 | 4001 (setq mode-name |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4002 (concat "Org-Agenda" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4003 (if (equal org-agenda-ndays 1) " Day" "") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4004 (if (equal org-agenda-ndays 7) " Week" "") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4005 (if org-agenda-follow-mode " Follow" "") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4006 (if org-agenda-include-diary " Diary" "") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4007 (if org-agenda-use-time-grid " Grid" ""))) |
58792 | 4008 (force-mode-line-update)) |
4009 | |
4010 (defun org-agenda-post-command-hook () | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
4011 (and (eolp) (not (bolp)) (backward-char 1)) |
58792 | 4012 (if (and org-agenda-follow-mode |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4013 (get-text-property (point) 'org-marker)) |
58792 | 4014 (org-agenda-show))) |
4015 | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
4016 (defvar org-disable-diary nil) ;Dynamically-scoped param. |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
4017 |
58792 | 4018 (defun org-get-entries-from-diary (date) |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
4019 "Get the (Emacs Calendar) diary entries for DATE." |
58792 | 4020 (let* ((fancy-diary-buffer "*temporary-fancy-diary-buffer*") |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4021 (diary-display-hook '(fancy-diary-display)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4022 (list-diary-entries-hook |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4023 (cons 'org-diary-default-entry list-diary-entries-hook)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4024 entries |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4025 (org-disable-diary t)) |
58792 | 4026 (save-excursion |
4027 (save-window-excursion | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4028 (list-diary-entries date 1))) |
58792 | 4029 (if (not (get-buffer fancy-diary-buffer)) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4030 (setq entries nil) |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
4031 (with-current-buffer fancy-diary-buffer |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4032 (setq buffer-read-only nil) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4033 (if (= (point-max) 1) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4034 ;; No entries |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4035 (setq entries nil) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4036 ;; Omit the date and other unnecessary stuff |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4037 (org-agenda-cleanup-fancy-diary) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4038 ;; Add prefix to each line and extend the text properties |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4039 (if (= (point-max) 1) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4040 (setq entries nil) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4041 (setq entries (buffer-substring (point-min) (- (point-max) 1))))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4042 (set-buffer-modified-p nil) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4043 (kill-buffer fancy-diary-buffer))) |
58792 | 4044 (when entries |
4045 (setq entries (org-split-string entries "\n")) | |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
4046 (setq entries |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4047 (mapcar |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4048 (lambda (x) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4049 (setq x (org-format-agenda-item "" x "Diary" 'time)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4050 ;; Extend the text properties to the beginning of the line |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4051 (add-text-properties |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4052 0 (length x) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4053 (text-properties-at (1- (length x)) x) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4054 x) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4055 x) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4056 entries))))) |
58792 | 4057 |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
4058 (defun org-agenda-cleanup-fancy-diary () |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4059 "Remove unwanted stuff in buffer created by fancy-diary-display. |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
4060 This gets rid of the date, the underline under the date, and |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
4061 the dummy entry installed by `org-mode' to ensure non-empty diary for each |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4062 date. Itt also removes lines that contain only whitespace." |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
4063 (goto-char (point-min)) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
4064 (if (looking-at ".*?:[ \t]*") |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
4065 (progn |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4066 (replace-match "") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4067 (re-search-forward "\n=+$" nil t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4068 (replace-match "") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4069 (while (re-search-backward "^ +\n?" nil t) (replace-match ""))) |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
4070 (re-search-forward "\n=+$" nil t) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
4071 (delete-region (point-min) (min (point-max) (1+ (match-end 0))))) |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
4072 (goto-char (point-min)) |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
4073 (while (re-search-forward "^ +\n" nil t) |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
4074 (replace-match "")) |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
4075 (goto-char (point-min)) |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
4076 (if (re-search-forward "^Org-mode dummy\n?" nil t) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
4077 (replace-match ""))) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
4078 |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
4079 ;; Advise the add-to-diary-list function to allow org to jump to |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
4080 ;; diary entries. Wrapped into eval-after-load to avoid loading |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
4081 ;; advice unnecessarily |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
4082 (eval-after-load "diary-lib" |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
4083 '(defadvice add-to-diary-list (before org-mark-diary-entry activate) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
4084 "Make the position visible." |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
4085 (if (and org-disable-diary ;; called from org-agenda |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4086 (stringp string) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4087 (buffer-file-name)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4088 (add-text-properties |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4089 0 (length string) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4090 (list 'mouse-face 'highlight |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4091 'keymap org-agenda-keymap |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4092 'help-echo |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4093 (format |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4094 "mouse-2 or RET jump to diary file %s" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4095 (abbreviate-file-name (buffer-file-name))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4096 'org-agenda-diary-link t |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4097 'org-marker (org-agenda-new-marker (point-at-bol))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4098 string)))) |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
4099 |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
4100 (defun org-diary-default-entry () |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
4101 "Add a dummy entry to the diary. |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
4102 Needed to avoid empty dates which mess up holiday display." |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
4103 ;; Catch the error if dealing with the new add-to-diary-alist |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
4104 (condition-case nil |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
4105 (add-to-diary-list original-date "Org-mode dummy" "") |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
4106 (error |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
4107 (add-to-diary-list original-date "Org-mode dummy" "" nil)))) |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
4108 |
58792 | 4109 (defun org-add-file (&optional file) |
4110 "Add current file to the list of files in variable `org-agenda-files'. | |
4111 These are the files which are being checked for agenda entries. | |
4112 Optional argument FILE means, use this file instead of the current. | |
4113 It is possible (but not recommended) to add this function to the | |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
4114 `org-mode-hook'." |
58792 | 4115 (interactive) |
4116 (catch 'exit | |
4117 (let* ((file (or file (buffer-file-name) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4118 (if (interactive-p) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4119 (error "Buffer is not visiting a file") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4120 (throw 'exit nil)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4121 (true-file (file-truename file)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4122 (afile (abbreviate-file-name file)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4123 (present (delq nil (mapcar |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4124 (lambda (x) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4125 (equal true-file (file-truename x))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4126 org-agenda-files)))) |
58792 | 4127 (if (not present) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4128 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4129 (setq org-agenda-files |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4130 (cons afile org-agenda-files)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4131 ;; Make sure custom.el does not end up with Org-mode |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4132 (let ((org-mode-hook nil) (default-major-mode 'fundamental-mode)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4133 (customize-save-variable 'org-agenda-files org-agenda-files)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4134 (org-install-agenda-files-menu) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4135 (message "Added file: %s" afile)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4136 (message "File was already in list: %s" afile))))) |
58792 | 4137 |
4138 (defun org-remove-file (&optional file) | |
4139 "Remove current file from the list of files in variable `org-agenda-files'. | |
4140 These are the files which are being checked for agenda entries. | |
4141 Optional argument FILE means, use this file instead of the current." | |
4142 (interactive) | |
4143 (let* ((file (or file (buffer-file-name))) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4144 (true-file (file-truename file)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4145 (afile (abbreviate-file-name file)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4146 (files (delq nil (mapcar |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4147 (lambda (x) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4148 (if (equal true-file |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4149 (file-truename x)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4150 nil x)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4151 org-agenda-files)))) |
58792 | 4152 (if (not (= (length files) (length org-agenda-files))) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4153 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4154 (setq org-agenda-files files) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4155 (customize-save-variable 'org-agenda-files org-agenda-files) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4156 (org-install-agenda-files-menu) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4157 (message "Removed file: %s" afile)) |
58792 | 4158 (message "File was not in list: %s" afile)))) |
4159 | |
4160 (defun org-file-menu-entry (file) | |
4161 (vector file (list 'find-file file) t)) | |
4162 | |
4163 (defun org-get-all-dates (beg end &optional no-ranges force-today) | |
4164 "Return a list of all relevant day numbers from BEG to END buffer positions. | |
4165 If NO-RANGES is non-nil, include only the start and end dates of a range, | |
4166 not every single day in the range. If FORCE-TODAY is non-nil, make | |
4167 sure that TODAY is included in the list." | |
4168 (let (dates date day day1 day2 ts1 ts2) | |
4169 (if force-today | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4170 (setq dates (list (time-to-days (current-time))))) |
58792 | 4171 (save-excursion |
4172 (goto-char beg) | |
4173 (while (re-search-forward org-ts-regexp end t) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4174 (setq day (time-to-days (org-time-string-to-time |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4175 (substring (match-string 1) 0 10)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4176 (or (memq day dates) (push day dates))) |
58792 | 4177 (unless no-ranges |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4178 (goto-char beg) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4179 (while (re-search-forward org-tr-regexp end t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4180 (setq ts1 (substring (match-string 1) 0 10) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4181 ts2 (substring (match-string 2) 0 10) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4182 day1 (time-to-days (org-time-string-to-time ts1)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4183 day2 (time-to-days (org-time-string-to-time ts2))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4184 (while (< (setq day1 (1+ day1)) day2) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4185 (or (memq day1 dates) (push day1 dates))))) |
58792 | 4186 (sort dates '<)))) |
4187 | |
4188 ;;;###autoload | |
4189 (defun org-diary (&rest args) | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
4190 "Return diary information from org-files. |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
4191 This function can be used in a \"sexp\" diary entry in the Emacs calendar. |
58792 | 4192 It accesses org files and extracts information from those files to be |
4193 listed in the diary. The function accepts arguments specifying what | |
4194 items should be listed. The following arguments are allowed: | |
4195 | |
4196 :timestamp List the headlines of items containing a date stamp or | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4197 date range matching the selected date. Deadlines will |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4198 also be listed, on the expiration day. |
58792 | 4199 |
4200 :deadline List any deadlines past due, or due within | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4201 `org-deadline-warning-days'. The listing occurs only |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4202 in the diary for *today*, not at any other date. If |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4203 an entry is marked DONE, it is no longer listed. |
58792 | 4204 |
4205 :scheduled List all items which are scheduled for the given date. | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4206 The diary for *today* also contains items which were |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4207 scheduled earlier and are not yet marked DONE. |
58792 | 4208 |
4209 :todo List all TODO items from the org-file. This may be a | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4210 long list - so this is not turned on by default. |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4211 Like deadlines, these entries only show up in the |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4212 diary for *today*, not at any other date. |
58792 | 4213 |
4214 The call in the diary file should look like this: | |
4215 | |
4216 &%%(org-diary) ~/path/to/some/orgfile.org | |
4217 | |
4218 Use a separate line for each org file to check. Or, if you omit the file name, | |
4219 all files listed in `org-agenda-files' will be checked automatically: | |
4220 | |
4221 &%%(org-diary) | |
4222 | |
4223 If you don't give any arguments (as in the example above), the default | |
4224 arguments (:deadline :scheduled :timestamp) are used. So the example above may | |
4225 also be written as | |
4226 | |
4227 &%%(org-diary :deadline :timestamp :scheduled) | |
4228 | |
4229 The function expects the lisp variables `entry' and `date' to be provided | |
4230 by the caller, because this is how the calendar works. Don't use this | |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
4231 function from a program - use `org-agenda-get-day-entries' instead." |
58792 | 4232 (org-agenda-maybe-reset-markers) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
4233 (org-compile-prefix-format org-agenda-prefix-format) |
58792 | 4234 (setq args (or args '(:deadline :scheduled :timestamp))) |
4235 (let* ((files (if (and entry (stringp entry) (string-match "\\S-" entry)) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4236 (list entry) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4237 org-agenda-files)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4238 file rtn results) |
58792 | 4239 ;; If this is called during org-agenda, don't return any entries to |
4240 ;; the calendar. Org Agenda will list these entries itself. | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
4241 (if org-disable-diary (setq files nil)) |
58792 | 4242 (while (setq file (pop files)) |
4243 (setq rtn (apply 'org-agenda-get-day-entries file date args)) | |
4244 (setq results (append results rtn))) | |
4245 (concat (org-finalize-agenda-entries results) "\n"))) | |
4246 | |
4247 (defun org-agenda-get-day-entries (file date &rest args) | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
4248 "Does the work for `org-diary' and `org-agenda'. |
58792 | 4249 FILE is the path to a file to be checked for entries. DATE is date like |
4250 the one returned by `calendar-current-date'. ARGS are symbols indicating | |
4251 which kind of entries should be extracted. For details about these, see | |
4252 the documentation of `org-diary'." | |
4253 (setq args (or args '(:deadline :scheduled :timestamp))) | |
4254 (let* ((org-startup-with-deadline-check nil) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4255 (org-startup-folded nil) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4256 (buffer (if (file-exists-p file) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4257 (org-get-agenda-file-buffer file) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4258 (error "No such file %s" file))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4259 arg results rtn) |
58792 | 4260 (if (not buffer) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4261 ;; If file does not exist, make sure an error message ends up in diary |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4262 (list (format "ORG-AGENDA-ERROR: No such org-file %s" file)) |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
4263 (with-current-buffer buffer |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4264 (unless (eq major-mode 'org-mode) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4265 (error "Agenda file %s is not in `org-mode'" file)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4266 (let ((case-fold-search nil)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4267 (save-excursion |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4268 (save-restriction |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4269 (if org-respect-restriction |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4270 (if (org-region-active-p) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4271 ;; Respect a region to restrict search |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4272 (narrow-to-region (region-beginning) (region-end))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4273 ;; If we work for the calendar or many files, |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4274 ;; get rid of any restriction |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4275 (widen)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4276 ;; The way we repeatedly append to `results' makes it O(n^2) :-( |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4277 (while (setq arg (pop args)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4278 (cond |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4279 ((and (eq arg :todo) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4280 (equal date (calendar-current-date))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4281 (setq rtn (org-agenda-get-todos)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4282 (setq results (append results rtn))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4283 ((eq arg :timestamp) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4284 (setq rtn (org-agenda-get-blocks)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4285 (setq results (append results rtn)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4286 (setq rtn (org-agenda-get-timestamps)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4287 (setq results (append results rtn))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4288 ((eq arg :scheduled) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4289 (setq rtn (org-agenda-get-scheduled)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4290 (setq results (append results rtn))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4291 ((and (eq arg :deadline) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4292 (equal date (calendar-current-date))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4293 (setq rtn (org-agenda-get-deadlines)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4294 (setq results (append results rtn)))))))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4295 results)))) |
58792 | 4296 |
4297 (defun org-entry-is-done-p () | |
4298 "Is the current entry marked DONE?" | |
4299 (save-excursion | |
4300 (and (re-search-backward "[\r\n]\\*" nil t) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4301 (looking-at org-nl-done-regexp)))) |
58792 | 4302 |
4303 (defun org-at-date-range-p () | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
4304 "Is the cursor inside a date range?" |
58792 | 4305 (interactive) |
4306 (save-excursion | |
4307 (catch 'exit | |
4308 (let ((pos (point))) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4309 (skip-chars-backward "^<\r\n") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4310 (skip-chars-backward "<") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4311 (and (looking-at org-tr-regexp) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4312 (>= (match-end 0) pos) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4313 (throw 'exit t)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4314 (skip-chars-backward "^<\r\n") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4315 (skip-chars-backward "<") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4316 (and (looking-at org-tr-regexp) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4317 (>= (match-end 0) pos) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4318 (throw 'exit t))) |
58792 | 4319 nil))) |
4320 | |
4321 (defun org-agenda-get-todos () | |
4322 "Return the TODO information for agenda display." | |
4323 (let* ((props (list 'face nil | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4324 'done-face 'org-done |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4325 'mouse-face 'highlight |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4326 'keymap org-agenda-keymap |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4327 'help-echo |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4328 (format "mouse-2 or RET jump to org file %s" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4329 (abbreviate-file-name (buffer-file-name))))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4330 (regexp (concat "[\n\r]\\*+ *\\(" org-not-done-regexp |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4331 "[^\n\r]*\\)")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4332 marker priority |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4333 ee txt) |
58792 | 4334 (goto-char (point-min)) |
4335 (while (re-search-forward regexp nil t) | |
4336 (goto-char (match-beginning 1)) | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
4337 (setq marker (org-agenda-new-marker (point-at-bol)) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4338 txt (org-format-agenda-item "" (match-string 1)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4339 priority |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4340 (+ (org-get-priority txt) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4341 (if org-todo-kwd-priority-p |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4342 (- org-todo-kwd-max-priority -2 |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4343 (length |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4344 (member (match-string 2) org-todo-keywords))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4345 1))) |
58792 | 4346 (add-text-properties |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
4347 0 (length txt) (append (list 'org-marker marker 'org-hd-marker marker |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4348 'priority priority) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4349 props) |
58792 | 4350 txt) |
4351 (push txt ee) | |
4352 (goto-char (match-end 1))) | |
4353 (nreverse ee))) | |
4354 | |
4355 (defconst org-agenda-no-heading-message | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4356 "No heading for this item in buffer or region") |
58792 | 4357 |
4358 (defun org-agenda-get-timestamps () | |
4359 "Return the date stamp information for agenda display." | |
4360 (let* ((props (list 'face nil | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4361 'mouse-face 'highlight |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4362 'keymap org-agenda-keymap |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4363 'help-echo |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4364 (format "mouse-2 or RET jump to org file %s" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4365 (abbreviate-file-name (buffer-file-name))))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4366 (regexp (regexp-quote |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4367 (substring |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4368 (format-time-string |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4369 (car org-time-stamp-formats) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4370 (apply 'encode-time ; DATE bound by calendar |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4371 (list 0 0 0 (nth 1 date) (car date) (nth 2 date)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4372 0 11))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4373 marker hdmarker deadlinep scheduledp donep tmp priority |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4374 ee txt timestr) |
58792 | 4375 (goto-char (point-min)) |
4376 (while (re-search-forward regexp nil t) | |
4377 (if (not (save-match-data (org-at-date-range-p))) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4378 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4379 (setq marker (org-agenda-new-marker (match-beginning 0)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4380 tmp (buffer-substring (max (point-min) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4381 (- (match-beginning 0) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4382 org-ds-keyword-length)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4383 (match-beginning 0)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4384 timestr (buffer-substring (match-beginning 0) (point-at-eol)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4385 deadlinep (string-match org-deadline-regexp tmp) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4386 scheduledp (string-match org-scheduled-regexp tmp) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4387 donep (org-entry-is-done-p)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4388 (if (string-match ">" timestr) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4389 ;; substring should only run to end of time stamp |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4390 (setq timestr (substring timestr 0 (match-end 0)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4391 (save-excursion |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4392 (if (re-search-backward "\\(^\\|\r\\)\\*+" nil t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4393 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4394 (goto-char (match-end 1)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4395 (setq hdmarker (org-agenda-new-marker)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4396 (looking-at "\\*+[ \t]*\\([^\r\n]+\\)") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4397 (setq txt (org-format-agenda-item |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4398 (format "%s%s" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4399 (if deadlinep "Deadline: " "") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4400 (if scheduledp "Scheduled: " "")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4401 (match-string 1) nil timestr))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4402 (setq txt org-agenda-no-heading-message)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4403 (setq priority (org-get-priority txt)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4404 (add-text-properties |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4405 0 (length txt) (append (list 'org-marker marker |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4406 'org-hd-marker hdmarker) props) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4407 txt) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4408 (if deadlinep |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4409 (add-text-properties |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4410 0 (length txt) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4411 (list 'face |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4412 (if donep 'org-done 'org-warning) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4413 'undone-face 'org-warning |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4414 'done-face 'org-done |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4415 'priority (+ 100 priority)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4416 txt) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4417 (if scheduledp |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4418 (add-text-properties |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4419 0 (length txt) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4420 (list 'face 'org-scheduled-today |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4421 'undone-face 'org-scheduled-today |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4422 'done-face 'org-done |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4423 priority (+ 99 priority)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4424 txt) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4425 (add-text-properties |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4426 0 (length txt) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4427 (list 'priority priority) txt))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4428 (push txt ee)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4429 (outline-next-heading)))) |
58792 | 4430 (nreverse ee))) |
4431 | |
4432 (defun org-agenda-get-deadlines () | |
4433 "Return the deadline information for agenda display." | |
4434 (let* ((wdays org-deadline-warning-days) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4435 (props (list 'mouse-face 'highlight |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4436 'keymap org-agenda-keymap |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4437 'help-echo |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4438 (format "mouse-2 or RET jump to org file %s" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4439 (abbreviate-file-name (buffer-file-name))))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4440 (regexp org-deadline-time-regexp) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4441 (todayp (equal date (calendar-current-date))) ; DATE bound by calendar |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4442 (d1 (calendar-absolute-from-gregorian date)) ; DATE bound by calendar |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4443 d2 diff pos pos1 |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4444 ee txt head) |
58792 | 4445 (goto-char (point-min)) |
4446 (while (re-search-forward regexp nil t) | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
4447 (setq pos (1- (match-beginning 1)) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4448 d2 (time-to-days |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4449 (org-time-string-to-time (match-string 1))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4450 diff (- d2 d1)) |
58792 | 4451 ;; When to show a deadline in the calendar: |
4452 ;; If the expiration is within wdays warning time. | |
4453 ;; Past-due deadlines are only shown on the current date | |
4454 (if (and (< diff wdays) todayp (not (= diff 0))) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4455 (save-excursion |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4456 (if (re-search-backward "\\(^\\|\r\\)\\*+[ \t]*" nil t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4457 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4458 (goto-char (match-end 0)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4459 (setq pos1 (match-end 1)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4460 (setq head (buffer-substring-no-properties |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4461 (point) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4462 (progn (skip-chars-forward "^\r\n") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4463 (point)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4464 (if (string-match org-looking-at-done-regexp head) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4465 (setq txt nil) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4466 (setq txt (org-format-agenda-item |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4467 (format "In %3d d.: " diff) head)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4468 (setq txt org-agenda-no-heading-message)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4469 (when txt |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4470 (add-text-properties |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4471 0 (length txt) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4472 (append |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4473 (list 'org-marker (org-agenda-new-marker pos) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4474 'org-hd-marker (org-agenda-new-marker pos1) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4475 'priority (+ (- 10 diff) (org-get-priority txt)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4476 'face (cond ((<= diff 0) 'org-warning) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4477 ((<= diff 5) 'org-scheduled-previously) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4478 (t nil)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4479 'undone-face (cond |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4480 ((<= diff 0) 'org-warning) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4481 ((<= diff 5) 'org-scheduled-previously) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4482 (t nil)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4483 'done-face 'org-done) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4484 props) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4485 txt) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4486 (push txt ee))))) |
58792 | 4487 ee)) |
4488 | |
4489 (defun org-agenda-get-scheduled () | |
4490 "Return the scheduled information for agenda display." | |
63225
7660591a3c92
Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-389
Miles Bader <miles@gnu.org>
parents:
63110
diff
changeset
|
4491 (let* ((props (list 'face 'org-scheduled-previously |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4492 'undone-face 'org-scheduled-previously |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4493 'done-face 'org-done |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4494 'mouse-face 'highlight |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4495 'keymap org-agenda-keymap |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4496 'help-echo |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4497 (format "mouse-2 or RET jump to org file %s" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4498 (abbreviate-file-name (buffer-file-name))))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4499 (regexp org-scheduled-time-regexp) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4500 (todayp (equal date (calendar-current-date))) ; DATE bound by calendar |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4501 (d1 (calendar-absolute-from-gregorian date)) ; DATE bound by calendar |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4502 d2 diff pos pos1 |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4503 ee txt head) |
58792 | 4504 (goto-char (point-min)) |
4505 (while (re-search-forward regexp nil t) | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
4506 (setq pos (1- (match-beginning 1)) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4507 d2 (time-to-days |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4508 (org-time-string-to-time (match-string 1))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4509 diff (- d2 d1)) |
58792 | 4510 ;; When to show a scheduled item in the calendar: |
4511 ;; If it is on or past the date. | |
4512 (if (and (< diff 0) todayp) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4513 (save-excursion |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4514 (if (re-search-backward "\\(^\\|\r\\)\\*+[ \t]*" nil t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4515 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4516 (goto-char (match-end 0)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4517 (setq pos1 (match-end 1)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4518 (setq head (buffer-substring-no-properties |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4519 (point) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4520 (progn (skip-chars-forward "^\r\n") (point)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4521 (if (string-match org-looking-at-done-regexp head) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4522 (setq txt nil) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4523 (setq txt (org-format-agenda-item |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4524 (format "Sched.%2dx: " (- 1 diff)) head)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4525 (setq txt org-agenda-no-heading-message)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4526 (when txt |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4527 (add-text-properties |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4528 0 (length txt) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4529 (append (list 'org-marker (org-agenda-new-marker pos) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4530 'org-hd-marker (org-agenda-new-marker pos1) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4531 'priority (+ (- 5 diff) (org-get-priority txt))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4532 props) txt) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4533 (push txt ee))))) |
58792 | 4534 ee)) |
4535 | |
4536 (defun org-agenda-get-blocks () | |
4537 "Return the date-range information for agenda display." | |
4538 (let* ((props (list 'face nil | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4539 'mouse-face 'highlight |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4540 'keymap org-agenda-keymap |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4541 'help-echo |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4542 (format "mouse-2 or RET jump to org file %s" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4543 (abbreviate-file-name (buffer-file-name))))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4544 (regexp org-tr-regexp) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4545 (d0 (calendar-absolute-from-gregorian date)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4546 marker hdmarker ee txt d1 d2 s1 s2 timestr) |
58792 | 4547 (goto-char (point-min)) |
4548 (while (re-search-forward regexp nil t) | |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4549 (setq timestr (match-string 0) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4550 s1 (match-string 1) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4551 s2 (match-string 2) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4552 d1 (time-to-days (org-time-string-to-time s1)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4553 d2 (time-to-days (org-time-string-to-time s2))) |
58792 | 4554 (if (and (> (- d0 d1) -1) (> (- d2 d0) -1)) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4555 ;; Only allow days between the limits, because the normal |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4556 ;; date stamps will catch the limits. |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4557 (save-excursion |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4558 (setq marker (org-agenda-new-marker (point))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4559 (if (re-search-backward "\\(^\\|\r\\)\\*+" nil t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4560 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4561 (setq hdmarker (org-agenda-new-marker (match-end 1))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4562 (goto-char (match-end 1)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4563 (looking-at "\\*+[ \t]*\\([^\r\n]+\\)") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4564 (setq txt (org-format-agenda-item |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4565 (format (if (= d1 d2) "" "(%d/%d): ") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4566 (1+ (- d0 d1)) (1+ (- d2 d1))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4567 (match-string 1) nil (if (= d0 d1) timestr)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4568 (setq txt org-agenda-no-heading-message)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4569 (add-text-properties |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4570 0 (length txt) (append (list 'org-marker marker |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4571 'org-hd-marker hdmarker |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4572 'priority (org-get-priority txt)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4573 props) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4574 txt) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4575 (push txt ee))) |
58792 | 4576 (outline-next-heading)) |
4577 ;; Sort the entries by expiration date. | |
4578 (nreverse ee))) | |
4579 | |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4580 |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4581 |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4582 (defconst org-plain-time-of-day-regexp |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4583 (concat |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4584 "\\(\\<[012]?[0-9]" |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4585 "\\(\\(:\\([0-5][0-9]\\([AaPp][Mm]\\)?\\)\\)\\|\\([AaPp][Mm]\\)\\)\\>\\)" |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4586 "\\(--?" |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4587 "\\(\\<[012]?[0-9]" |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4588 "\\(\\(:\\([0-5][0-9]\\([AaPp][Mm]\\)?\\)\\)\\|\\([AaPp][Mm]\\)\\)\\>\\)" |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4589 "\\)?") |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4590 "Regular expression to match a plain time or time range. |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4591 Examples: 11:45 or 8am-13:15 or 2:45-2:45pm. After a match, the following |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4592 groups carry important information: |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4593 0 the full match |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4594 1 the first time, range or not |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4595 8 the second time, if it is a range.") |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4596 |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4597 (defconst org-stamp-time-of-day-regexp |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4598 (concat |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4599 "<\\([0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\} +[a-zA-Z]+ +\\)" |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4600 "\\([012][0-9]:[0-5][0-9]\\)>" |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4601 "\\(--?" |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4602 "<\\1\\([012][0-9]:[0-5][0-9]\\)>\\)?") |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4603 "Regular expression to match a timestamp time or time range. |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4604 After a match, the following groups carry important information: |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4605 0 the full match |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4606 1 date plus weekday, for backreferencing to make sure both times on same day |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4607 2 the first time, range or not |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4608 4 the second time, if it is a range.") |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4609 |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4610 (defvar org-prefix-has-time nil |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4611 "A flag, set by `org-compile-prefix-format'. |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4612 The flag is set if the currently compiled format contains a `%t'.") |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4613 |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4614 (defun org-format-agenda-item (extra txt &optional category dotime noprefix) |
58792 | 4615 "Format TXT to be inserted into the agenda buffer. |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4616 In particular, it adds the prefix and corresponding text properties. EXTRA |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4617 must be a string and replaces the `%s' specifier in the prefix format. |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4618 CATEGORY (string, symbol or nil) may be used to overule the default |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4619 category taken from local variable or file name. It will replace the `%c' |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4620 specifier in the format. DOTIME, when non-nil, indicates that a |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4621 time-of-day should be extracted from TXT for sorting of this entry, and for |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4622 the `%t' specifier in the format. When DOTIME is a string, this string is |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4623 searched for a time before TXT is. NOPREFIX is a flag and indicates that |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4624 only the correctly processes TXT should be returned - this is used by |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4625 `org-agenda-change-all-lines'." |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4626 (save-match-data |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4627 ;; Diary entries sometimes have extra whitespace at the beginning |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4628 (if (string-match "^ +" txt) (setq txt (replace-match "" nil nil txt))) |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4629 (let* ((category (or category |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4630 org-category |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4631 (if (buffer-file-name) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4632 (file-name-sans-extension |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4633 (file-name-nondirectory (buffer-file-name))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4634 ""))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4635 time ;; needed for the eval of the prefix format |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4636 (ts (if dotime (concat (if (stringp dotime) dotime "") txt))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4637 (time-of-day (and dotime (org-get-time-of-day ts))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4638 stamp plain s0 s1 s2 rtn) |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4639 (when (and dotime time-of-day org-prefix-has-time) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4640 ;; Extract starting and ending time and move them to prefix |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4641 (when (or (setq stamp (string-match org-stamp-time-of-day-regexp ts)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4642 (setq plain (string-match org-plain-time-of-day-regexp ts))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4643 (setq s0 (match-string 0 ts) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4644 s1 (match-string (if plain 1 2) ts) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4645 s2 (match-string (if plain 8 4) ts)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4646 |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4647 ;; If the times are in TXT (not in DOTIMES), and the prefix will list |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4648 ;; them, we might want to remove them there to avoid duplication. |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4649 ;; The user can turn this off with a variable. |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4650 (if (and org-agenda-remove-times-when-in-prefix (or stamp plain) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4651 (string-match (concat (regexp-quote s0) " *") txt) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4652 (if (eq org-agenda-remove-times-when-in-prefix 'beg) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4653 (= (match-beginning 0) 0) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4654 t)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4655 (setq txt (replace-match "" nil nil txt)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4656 ;; Normalize the time(s) to 24 hour |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4657 (if s1 (setq s1 (org-get-time-of-day s1 'string))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4658 (if s2 (setq s2 (org-get-time-of-day s2 'string)))) |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
4659 |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4660 ;; Create the final string |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4661 (if noprefix |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4662 (setq rtn txt) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4663 ;; Prepare the variables needed in the eval of the compiled format |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4664 (setq time (cond (s2 (concat s1 "-" s2)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4665 (s1 (concat s1 "......")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4666 (t "")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4667 extra (or extra "") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4668 category (if (symbolp category) (symbol-name category) category)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4669 ;; Evaluate the compiled format |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4670 (setq rtn (concat (eval org-prefix-format-compiled) txt))) |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
4671 |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4672 ;; And finally add the text properties |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4673 (add-text-properties |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4674 0 (length rtn) (list 'category (downcase category) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4675 'prefix-length (- (length rtn) (length txt)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4676 'time-of-day time-of-day |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4677 'dotime dotime) |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4678 rtn) |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4679 rtn))) |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4680 |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4681 (defun org-agenda-add-time-grid-maybe (list ndays todayp) |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4682 (catch 'exit |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4683 (cond ((not org-agenda-use-time-grid) (throw 'exit list)) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4684 ((and todayp (member 'today (car org-agenda-time-grid)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4685 ((and (= ndays 1) (member 'daily (car org-agenda-time-grid)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4686 ((member 'weekly (car org-agenda-time-grid))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4687 (t (throw 'exit list))) |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4688 (let* ((have (delq nil (mapcar |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4689 (lambda (x) (get-text-property 1 'time-of-day x)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4690 list))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4691 (string (nth 1 org-agenda-time-grid)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4692 (gridtimes (nth 2 org-agenda-time-grid)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4693 (req (car org-agenda-time-grid)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4694 (remove (member 'remove-match req)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4695 new time) |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4696 (if (and (member 'require-timed req) (not have)) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4697 ;; don't show empty grid |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4698 (throw 'exit list)) |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4699 (while (setq time (pop gridtimes)) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4700 (unless (and remove (member time have)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4701 (setq time (int-to-string time)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4702 (push (org-format-agenda-item |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4703 nil string "" ;; FIXME: put a category? |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4704 (concat (substring time 0 -2) ":" (substring time -2))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4705 new) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4706 (put-text-property |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4707 1 (length (car new)) 'face 'org-time-grid (car new)))) |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4708 (if (member 'time-up org-agenda-sorting-strategy) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4709 (append new list) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4710 (append list new))))) |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4711 |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
4712 (defun org-compile-prefix-format (format) |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
4713 "Compile the prefix format into a Lisp form that can be evaluated. |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
4714 The resulting form is returned and stored in the variable |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
4715 `org-prefix-format-compiled'." |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4716 (setq org-prefix-has-time nil) |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4717 (let ((start 0) varform vars var (s format) c f opt) |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4718 (while (string-match "%\\(\\?\\)?\\([-+]?[0-9.]*\\)\\([ .;,:!?=|/<>]?\\)\\([cts]\\)" |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4719 s start) |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4720 (setq var (cdr (assoc (match-string 4 s) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4721 '(("c" . category) ("t" . time) ("s" . extra)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4722 c (or (match-string 3 s) "") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4723 opt (match-beginning 1) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4724 start (1+ (match-beginning 0))) |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4725 (if (equal var 'time) (setq org-prefix-has-time t)) |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4726 (setq f (concat "%" (match-string 2 s) "s")) |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4727 (if opt |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4728 (setq varform |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4729 `(if (equal "" ,var) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4730 "" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4731 (format ,f (if (equal "" ,var) "" (concat ,var ,c))))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4732 (setq varform `(format ,f (if (equal ,var "") "" (concat ,var ,c))))) |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4733 (setq s (replace-match "%s" t nil s)) |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
4734 (push varform vars)) |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
4735 (setq vars (nreverse vars)) |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
4736 (setq org-prefix-format-compiled `(format ,s ,@vars)))) |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
4737 |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4738 (defun org-get-time-of-day (s &optional string) |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
4739 "Check string S for a time of day. |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
4740 If found, return it as a military time number between 0 and 2400. |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4741 If not found, return nil. |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4742 The optional STRING argument forces conversion into a 5 character wide string |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4743 HH:MM." |
58792 | 4744 (save-match-data |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
4745 (when |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4746 (or |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4747 (string-match |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4748 "\\<\\([012]?[0-9]\\)\\(:\\([0-5][0-9]\\)\\)\\([AaPp][Mm]\\)?\\> *" s) |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4749 (string-match |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4750 "\\<\\([012]?[0-9]\\)\\(:\\([0-5][0-9]\\)\\)?\\([AaPp][Mm]\\)\\> *" s)) |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4751 (let* ((t0 (+ (* 100 |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4752 (+ (string-to-number (match-string 1 s)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4753 (if (and (match-beginning 4) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4754 (equal (downcase (match-string 4 s)) "pm")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4755 12 0))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4756 (if (match-beginning 3) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4757 (string-to-number (match-string 3 s)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4758 0))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4759 (t1 (concat " " (int-to-string t0)))) |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4760 (if string (concat (substring t1 -4 -2) ":" (substring t1 -2)) t0))))) |
58792 | 4761 |
4762 (defun org-finalize-agenda-entries (list) | |
4763 "Sort and concatenate the agenda items." | |
4764 (mapconcat 'identity (sort list 'org-entries-lessp) "\n")) | |
4765 | |
4766 (defsubst org-cmp-priority (a b) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4767 "Compare the priorities of string a and b." |
58792 | 4768 (let ((pa (or (get-text-property 1 'priority a) 0)) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4769 (pb (or (get-text-property 1 'priority b) 0))) |
58792 | 4770 (cond ((> pa pb) +1) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4771 ((< pa pb) -1) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4772 (t nil)))) |
58792 | 4773 |
4774 (defsubst org-cmp-category (a b) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4775 "Compare the string values of categories of strings a and b." |
58792 | 4776 (let ((ca (or (get-text-property 1 'category a) "")) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4777 (cb (or (get-text-property 1 'category b) ""))) |
58792 | 4778 (cond ((string-lessp ca cb) -1) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4779 ((string-lessp cb ca) +1) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4780 (t nil)))) |
58792 | 4781 |
4782 (defsubst org-cmp-time (a b) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4783 "Compare the time-of-day values of strings a and b." |
58792 | 4784 (let* ((def (if org-sort-agenda-notime-is-late 2401 -1)) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4785 (ta (or (get-text-property 1 'time-of-day a) def)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4786 (tb (or (get-text-property 1 'time-of-day b) def))) |
58792 | 4787 (cond ((< ta tb) -1) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4788 ((< tb ta) +1) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4789 (t nil)))) |
58792 | 4790 |
4791 (defun org-entries-lessp (a b) | |
4792 "Predicate for sorting agenda entries." | |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
4793 ;; The following variables will be used when the form is evaluated. |
58792 | 4794 (let* ((time-up (org-cmp-time a b)) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4795 (time-down (if time-up (- time-up) nil)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4796 (priority-up (org-cmp-priority a b)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4797 (priority-down (if priority-up (- priority-up) nil)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4798 (category-up (org-cmp-category a b)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4799 (category-down (if category-up (- category-up) nil)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4800 (category-keep (if category-up +1 nil))) ; FIXME +1 or -1? |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
4801 (cdr (assoc |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4802 (eval (cons 'or org-agenda-sorting-strategy)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4803 '((-1 . t) (1 . nil) (nil . nil)))))) |
58792 | 4804 |
4805 (defun org-agenda-show-priority () | |
4806 "Show the priority of the current item. | |
4807 This priority is composed of the main priority given with the [#A] cookies, | |
4808 and by additional input from the age of a schedules or deadline entry." | |
4809 (interactive) | |
4810 (let* ((pri (get-text-property (point-at-bol) 'priority))) | |
4811 (message "Priority is %d" (if pri pri -1000)))) | |
4812 | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
4813 (defun org-agenda-goto (&optional highlight) |
58792 | 4814 "Go to the Org-mode file which contains the item at point." |
4815 (interactive) | |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
4816 (let* ((marker (or (get-text-property (point) 'org-marker) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4817 (org-agenda-error))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4818 (buffer (marker-buffer marker)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4819 (pos (marker-position marker))) |
58792 | 4820 (switch-to-buffer-other-window buffer) |
4821 (widen) | |
4822 (goto-char pos) | |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
4823 (when (eq major-mode 'org-mode) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
4824 (org-show-hidden-entry) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
4825 (save-excursion |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4826 (and (outline-next-heading) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4827 (org-flag-heading nil)))) ; show the next heading |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
4828 (and highlight (org-highlight (point-at-bol) (point-at-eol))))) |
58792 | 4829 |
4830 (defun org-agenda-switch-to () | |
4831 "Go to the Org-mode file which contains the item at point." | |
4832 (interactive) | |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
4833 (let* ((marker (or (get-text-property (point) 'org-marker) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4834 (org-agenda-error))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4835 (buffer (marker-buffer marker)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4836 (pos (marker-position marker))) |
58792 | 4837 (switch-to-buffer buffer) |
4838 (delete-other-windows) | |
4839 (widen) | |
4840 (goto-char pos) | |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
4841 (when (eq major-mode 'org-mode) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
4842 (org-show-hidden-entry) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
4843 (save-excursion |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4844 (and (outline-next-heading) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4845 (org-flag-heading nil)))))) ; show the next heading |
58792 | 4846 |
4847 (defun org-agenda-goto-mouse (ev) | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
4848 "Go to the Org-mode file which contains the item at the mouse click." |
58792 | 4849 (interactive "e") |
4850 (mouse-set-point ev) | |
4851 (org-agenda-goto)) | |
4852 | |
4853 (defun org-agenda-show () | |
4854 "Display the Org-mode file which contains the item at point." | |
4855 (interactive) | |
4856 (let ((win (selected-window))) | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
4857 (org-agenda-goto t) |
58792 | 4858 (select-window win))) |
4859 | |
4860 (defun org-agenda-recenter (arg) | |
4861 "Display the Org-mode file which contains the item at point and recenter." | |
4862 (interactive "P") | |
4863 (let ((win (selected-window))) | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
4864 (org-agenda-goto t) |
58792 | 4865 (recenter arg) |
4866 (select-window win))) | |
4867 | |
4868 (defun org-agenda-show-mouse (ev) | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
4869 "Display the Org-mode file which contains the item at the mouse click." |
58792 | 4870 (interactive "e") |
4871 (mouse-set-point ev) | |
4872 (org-agenda-show)) | |
4873 | |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
4874 (defun org-agenda-check-no-diary () |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
4875 "Check if the entry is a diary link and abort if yes." |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
4876 (if (get-text-property (point) 'org-agenda-diary-link) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
4877 (org-agenda-error))) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
4878 |
58792 | 4879 (defun org-agenda-error () |
63431
fd4b70bc23a4
(org-promote, org-evaluate-time-range, org-agenda-next-date-line,
Juanma Barranquero <lekktu@gmail.com>
parents:
63367
diff
changeset
|
4880 (error "Command not allowed in this line")) |
58792 | 4881 |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
4882 (defvar org-last-heading-marker (make-marker) |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
4883 "Marker pointing to the headline that last changed its TODO state |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
4884 by a remote command from the agenda.") |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
4885 |
58792 | 4886 (defun org-agenda-todo () |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
4887 "Cycle TODO state of line at point, also in Org-mode file. |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
4888 This changes the line at point, all other lines in the agenda referring to |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
4889 the same tree node, and the headline of the tree node in the Org-mode file." |
58792 | 4890 (interactive) |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
4891 (org-agenda-check-no-diary) |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
4892 (let* ((col (current-column)) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4893 (marker (or (get-text-property (point) 'org-marker) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4894 (org-agenda-error))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4895 (buffer (marker-buffer marker)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4896 (pos (marker-position marker)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4897 (hdmarker (get-text-property (point) 'org-hd-marker)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4898 (buffer-read-only nil) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4899 newhead) |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
4900 (with-current-buffer buffer |
58792 | 4901 (widen) |
4902 (goto-char pos) | |
4903 (org-show-hidden-entry) | |
4904 (save-excursion | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4905 (and (outline-next-heading) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4906 (org-flag-heading nil))) ; show the next heading |
58792 | 4907 (org-todo) |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
4908 (forward-char 1) |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
4909 (setq newhead (org-get-heading)) |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
4910 (save-excursion |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4911 (org-back-to-heading) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4912 (move-marker org-last-heading-marker (point)))) |
58792 | 4913 (beginning-of-line 1) |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
4914 (save-excursion |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
4915 (org-agenda-change-all-lines newhead hdmarker 'fixface)) |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
4916 (move-to-column col))) |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
4917 |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
4918 (defun org-agenda-change-all-lines (newhead hdmarker &optional fixface) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4919 "Change all lines in the agenda buffer which match hdmarker. |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4920 The new content of the line will be NEWHEAD (as modified by |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4921 `org-format-agenda-item'). HDMARKER is checked with |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4922 `equal' against all `org-hd-marker' text properties in the file. |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4923 If FIXFACE is non-nil, the face of each item is modified acording to |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4924 the new TODO state." |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4925 (let* (props m pl undone-face done-face finish new dotime) |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4926 ; (setq newhead (org-format-agenda-item "x" newhead "x" nil 'noprefix)) |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
4927 (save-excursion |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
4928 (goto-char (point-max)) |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
4929 (beginning-of-line 1) |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4930 (while (not finish) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4931 (setq finish (bobp)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4932 (when (and (setq m (get-text-property (point) 'org-hd-marker)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4933 (equal m hdmarker)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4934 (setq props (text-properties-at (point)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4935 dotime (get-text-property (point) 'dotime) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4936 new (org-format-agenda-item "x" newhead "x" dotime 'noprefix) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4937 pl (get-text-property (point) 'prefix-length) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4938 undone-face (get-text-property (point) 'undone-face) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4939 done-face (get-text-property (point) 'done-face)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4940 (move-to-column pl) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4941 (if (looking-at ".*") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4942 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4943 (replace-match new t t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4944 (beginning-of-line 1) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4945 (add-text-properties (point-at-bol) (point-at-eol) props) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4946 (if fixface |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4947 (add-text-properties |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4948 (point-at-bol) (point-at-eol) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4949 (list 'face |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4950 (if org-last-todo-state-is-todo |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4951 undone-face done-face)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4952 (beginning-of-line 1)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4953 (error "Line update did not work"))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4954 (beginning-of-line 0))))) |
58792 | 4955 |
4956 (defun org-agenda-priority-up () | |
4957 "Increase the priority of line at point, also in Org-mode file." | |
4958 (interactive) | |
4959 (org-agenda-priority 'up)) | |
4960 | |
4961 (defun org-agenda-priority-down () | |
4962 "Decrease the priority of line at point, also in Org-mode file." | |
4963 (interactive) | |
4964 (org-agenda-priority 'down)) | |
4965 | |
4966 (defun org-agenda-priority (&optional force-direction) | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
4967 "Set the priority of line at point, also in Org-mode file. |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
4968 This changes the line at point, all other lines in the agenda referring to |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
4969 the same tree node, and the headline of the tree node in the Org-mode file." |
58792 | 4970 (interactive) |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
4971 (org-agenda-check-no-diary) |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
4972 (let* ((marker (or (get-text-property (point) 'org-marker) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4973 (org-agenda-error))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4974 (buffer (marker-buffer marker)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4975 (pos (marker-position marker)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4976 (hdmarker (get-text-property (point) 'org-hd-marker)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4977 (buffer-read-only nil) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4978 newhead) |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
4979 (with-current-buffer buffer |
58792 | 4980 (widen) |
4981 (goto-char pos) | |
4982 (org-show-hidden-entry) | |
4983 (save-excursion | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4984 (and (outline-next-heading) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4985 (org-flag-heading nil))) ; show the next heading |
58792 | 4986 (funcall 'org-priority force-direction) |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
4987 (end-of-line 1) |
58792 | 4988 (setq newhead (org-get-heading))) |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
4989 (org-agenda-change-all-lines newhead hdmarker) |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
4990 (beginning-of-line 1))) |
58792 | 4991 |
4992 (defun org-agenda-date-later (arg &optional what) | |
4993 "Change the date of this item to one day later." | |
4994 (interactive "p") | |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
4995 (org-agenda-check-no-diary) |
58792 | 4996 (let* ((marker (or (get-text-property (point) 'org-marker) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4997 (org-agenda-error))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4998 (buffer (marker-buffer marker)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
4999 (pos (marker-position marker))) |
62076
4f2150e05f24
(org-get-entries-from-diary): Remove unused vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61924
diff
changeset
|
5000 (with-current-buffer buffer |
58792 | 5001 (widen) |
5002 (goto-char pos) | |
5003 (if (not (org-at-timestamp-p)) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5004 (error "Cannot find time stamp")) |
58792 | 5005 (org-timestamp-change arg (or what 'day)) |
5006 (message "Time stamp changed to %s" org-last-changed-timestamp)))) | |
5007 | |
5008 (defun org-agenda-date-earlier (arg &optional what) | |
5009 "Change the date of this item to one day earlier." | |
5010 (interactive "p") | |
5011 (org-agenda-date-later (- arg) what)) | |
5012 | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
5013 (defun org-agenda-date-prompt (arg) |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
5014 "Change the date of this item. Date is prompted for, with default today. |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
5015 The prefix ARG is passed to the `org-time-stamp' command and can therefore |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
5016 be used to request time specification in the time stamp." |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
5017 (interactive "P") |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
5018 (org-agenda-check-no-diary) |
58792 | 5019 (let* ((marker (or (get-text-property (point) 'org-marker) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5020 (org-agenda-error))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5021 (buffer (marker-buffer marker)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5022 (pos (marker-position marker))) |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
5023 (with-current-buffer buffer |
58792 | 5024 (widen) |
5025 (goto-char pos) | |
5026 (if (not (org-at-timestamp-p)) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5027 (error "Cannot find time stamp")) |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
5028 (org-time-stamp arg) |
58792 | 5029 (message "Time stamp changed to %s" org-last-changed-timestamp)))) |
5030 | |
5031 (defun org-get-heading () | |
5032 "Return the heading of the current entry, without the stars." | |
5033 (save-excursion | |
5034 (if (and (re-search-backward "[\r\n]\\*" nil t) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5035 (looking-at "[\r\n]\\*+[ \t]+\\(.*\\)")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5036 (match-string 1) |
58792 | 5037 ""))) |
5038 | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
5039 (defun org-agenda-diary-entry () |
58792 | 5040 "Make a diary entry, like the `i' command from the calendar. |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5041 All the standard commands work: block, weekly etc" |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
5042 (interactive) |
58792 | 5043 (require 'diary-lib) |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
5044 (let* ((char (progn |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5045 (message "Diary entry: [d]ay [w]eekly [m]onthly [y]early [a]nniversary [b]lock [c]yclic") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5046 (read-char-exclusive))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5047 (cmd (cdr (assoc char |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5048 '((?d . insert-diary-entry) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5049 (?w . insert-weekly-diary-entry) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5050 (?m . insert-monthly-diary-entry) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5051 (?y . insert-yearly-diary-entry) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5052 (?a . insert-anniversary-diary-entry) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5053 (?b . insert-block-diary-entry) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5054 (?c . insert-cyclic-diary-entry))))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5055 (oldf (symbol-function 'calendar-cursor-to-date)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5056 (point (point)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5057 (mark (or (mark t) (point)))) |
58792 | 5058 (unless cmd |
5059 (error "No command associated with <%c>" char)) | |
5060 (unless (and (get-text-property point 'day) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5061 (or (not (equal ?b char)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5062 (get-text-property mark 'day))) |
58792 | 5063 (error "Don't know which date to use for diary entry")) |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
5064 ;; We implement this by hacking the `calendar-cursor-to-date' function |
58792 | 5065 ;; and the `calendar-mark-ring' variable. Saves a lot of code. |
5066 (let ((calendar-mark-ring | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5067 (list (calendar-gregorian-from-absolute |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5068 (or (get-text-property mark 'day) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5069 (get-text-property point 'day)))))) |
58792 | 5070 (unwind-protect |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5071 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5072 (fset 'calendar-cursor-to-date |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5073 (lambda (&optional error) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5074 (calendar-gregorian-from-absolute |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5075 (get-text-property point 'day)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5076 (call-interactively cmd)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5077 (fset 'calendar-cursor-to-date oldf))))) |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
5078 |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
5079 |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
5080 (defun org-agenda-execute-calendar-command (cmd) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
5081 "Execute a calendar command from the agenda, with the date associated to |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
5082 the cursor position." |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
5083 (require 'diary-lib) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
5084 (unless (get-text-property (point) 'day) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
5085 (error "Don't know which date to use for calendar command")) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
5086 (let* ((oldf (symbol-function 'calendar-cursor-to-date)) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5087 (point (point)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5088 (date (calendar-gregorian-from-absolute |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5089 (get-text-property point 'day))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5090 (displayed-day (extract-calendar-day date)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5091 (displayed-month (extract-calendar-month date)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5092 (displayed-year (extract-calendar-year date))) |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
5093 (unwind-protect |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5094 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5095 (fset 'calendar-cursor-to-date |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5096 (lambda (&optional error) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5097 (calendar-gregorian-from-absolute |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5098 (get-text-property point 'day)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5099 (call-interactively cmd)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5100 (fset 'calendar-cursor-to-date oldf)))) |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
5101 |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
5102 (defun org-agenda-phases-of-moon () |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
5103 "Display the phases of the moon for the 3 months around the cursor date." |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
5104 (interactive) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
5105 (org-agenda-execute-calendar-command 'calendar-phases-of-moon)) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
5106 |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
5107 (defun org-agenda-holidays () |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
5108 "Display the holidays for the 3 months around the cursor date." |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
5109 (interactive) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
5110 (org-agenda-execute-calendar-command 'list-calendar-holidays)) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
5111 |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
5112 (defun org-agenda-sunrise-sunset (arg) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
5113 "Display sunrise and sunset for the cursor date. |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
5114 Latitude and longitude can be specified with the variables |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
5115 `calendar-latitude' and `calendar-longitude'. When called with prefix |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
5116 argument, latitude and longitude will be prompted for." |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
5117 (interactive "P") |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
5118 (let ((calendar-longitude (if arg nil calendar-longitude)) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5119 (calendar-latitude (if arg nil calendar-latitude)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5120 (calendar-location-name |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5121 (if arg "the given coordinates" calendar-location-name))) |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
5122 (org-agenda-execute-calendar-command 'calendar-sunrise-sunset))) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
5123 |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
5124 (defun org-agenda-goto-calendar () |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
5125 "Open the Emacs calendar with the date at the cursor." |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
5126 (interactive) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
5127 (let* ((day (or (get-text-property (point) 'day) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5128 (error "Don't know which date to open in calendar"))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5129 (date (calendar-gregorian-from-absolute day))) |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
5130 (calendar) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
5131 (calendar-goto-date date))) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
5132 |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
5133 (defun org-calendar-goto-agenda () |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
5134 "Compute the Org-mode agenda for the calendar date displayed at the cursor. |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
5135 This is a command that has to be installed in `calendar-mode-map'." |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
5136 (interactive) |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
5137 (org-agenda nil (calendar-absolute-from-gregorian |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5138 (calendar-cursor-to-date)))) |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
5139 |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
5140 (defun org-agenda-convert-date () |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
5141 (interactive) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
5142 (let ((day (get-text-property (point) 'day)) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5143 date s) |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
5144 (unless day |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
5145 (error "Don't know which date to convert")) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
5146 (setq date (calendar-gregorian-from-absolute day)) |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
5147 (setq s (concat |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5148 "Gregorian: " (calendar-date-string date) "\n" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5149 "ISO: " (calendar-iso-date-string date) "\n" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5150 "Day of Yr: " (calendar-day-of-year-string date) "\n" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5151 "Julian: " (calendar-julian-date-string date) "\n" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5152 "Astron. JD: " (calendar-astro-date-string date) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5153 " (Julian date number at noon UTC)\n" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5154 "Hebrew: " (calendar-hebrew-date-string date) " (until sunset)\n" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5155 "Islamic: " (calendar-islamic-date-string date) " (until sunset)\n" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5156 "French: " (calendar-french-date-string date) "\n" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5157 "Mayan: " (calendar-mayan-date-string date) "\n" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5158 "Coptic: " (calendar-coptic-date-string date) "\n" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5159 "Ethiopic: " (calendar-ethiopic-date-string date) "\n" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5160 "Persian: " (calendar-persian-date-string date) "\n" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5161 "Chinese: " (calendar-chinese-date-string date) "\n")) |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
5162 (with-output-to-temp-buffer "*Dates*" |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
5163 (princ s)) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
5164 (fit-window-to-buffer (get-buffer-window "*Dates*")))) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
5165 |
58792 | 5166 ;;; Link Stuff |
5167 | |
5168 (defun org-find-file-at-mouse (ev) | |
5169 "Open file link or URL at mouse." | |
5170 (interactive "e") | |
5171 (mouse-set-point ev) | |
5172 (org-open-at-point 'in-emacs)) | |
5173 | |
5174 (defun org-open-at-mouse (ev) | |
5175 "Open file link or URL at mouse." | |
5176 (interactive "e") | |
5177 (mouse-set-point ev) | |
5178 (org-open-at-point)) | |
5179 | |
5180 (defun org-open-at-point (&optional in-emacs) | |
5181 "Open link at or after point. | |
5182 If there is no link at point, this function will search forward up to | |
5183 the end of the current subtree. | |
5184 Normally, files will be opened by an appropriate application. If the | |
5185 optional argument IN-EMACS is non-nil, Emacs will visit the file." | |
5186 (interactive "P") | |
5187 (if (org-at-timestamp-p) | |
5188 (org-agenda nil (time-to-days (org-time-string-to-time | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5189 (substring (match-string 1) 0 10))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5190 1) |
58792 | 5191 (let (type path line (pos (point))) |
5192 (save-excursion | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5193 (skip-chars-backward |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5194 (concat (if org-allow-space-in-links "^" "^ ") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5195 org-non-link-chars)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5196 (if (re-search-forward |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5197 org-link-regexp |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5198 (save-excursion |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5199 (condition-case nil |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5200 (progn (outline-end-of-subtree) (max pos (point))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5201 (error (end-of-line 1) (point)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5202 t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5203 (setq type (match-string 1) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5204 path (match-string 2))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5205 (unless path |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5206 (error "No link found")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5207 ;; Remove any trailing spaces in path |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5208 (if (string-match " +\\'" path) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5209 (setq path (replace-match "" t t path))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5210 |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5211 (cond |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5212 |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5213 ((string= type "file") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5214 (if (string-match ":\\([0-9]+\\)\\'" path) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5215 (setq line (string-to-number (match-string 1 path)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5216 path (substring path 0 (match-beginning 0)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5217 (org-open-file path in-emacs line)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5218 |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5219 ((string= type "news") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5220 (org-follow-gnus-link path)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5221 |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5222 ((string= type "bbdb") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5223 (org-follow-bbdb-link path)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5224 |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5225 ((string= type "gnus") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5226 (let (group article) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5227 (if (not (string-match "\\`\\([^#]+\\)\\(#\\(.*\\)\\)?" path)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5228 (error "Error in Gnus link")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5229 (setq group (match-string 1 path) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5230 article (match-string 3 path)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5231 (org-follow-gnus-link group article))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5232 |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5233 ((string= type "vm") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5234 (let (folder article) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5235 (if (not (string-match "\\`\\([^#]+\\)\\(#\\(.*\\)\\)?" path)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5236 (error "Error in VM link")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5237 (setq folder (match-string 1 path) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5238 article (match-string 3 path)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5239 ;; in-emacs is the prefix arg, will be interpreted as read-only |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5240 (org-follow-vm-link folder article in-emacs))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5241 |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5242 ((string= type "wl") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5243 (let (folder article) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5244 (if (not (string-match "\\`\\([^#]+\\)\\(#\\(.*\\)\\)?" path)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5245 (error "Error in Wanderlust link")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5246 (setq folder (match-string 1 path) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5247 article (match-string 3 path)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5248 (org-follow-wl-link folder article))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5249 |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5250 ((string= type "rmail") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5251 (let (folder article) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5252 (if (not (string-match "\\`\\([^#]+\\)\\(#\\(.*\\)\\)?" path)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5253 (error "Error in RMAIL link")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5254 (setq folder (match-string 1 path) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5255 article (match-string 3 path)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5256 (org-follow-rmail-link folder article))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5257 |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5258 ((string= type "shell") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5259 (let ((cmd path)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5260 (while (string-match "@{" cmd) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5261 (setq cmd (replace-match "<" t t cmd))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5262 (while (string-match "@}" cmd) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5263 (setq cmd (replace-match ">" t t cmd))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5264 (if (or (not org-confirm-shell-links) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5265 (yes-or-no-p (format "Execute \"%s\" in the shell? " cmd))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5266 (shell-command cmd) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5267 (error "Abort")))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5268 |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5269 (t |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5270 (browse-url-at-point))))))) |
58792 | 5271 |
5272 (defun org-follow-bbdb-link (name) | |
5273 "Follow a BBDB link to NAME." | |
5274 (require 'bbdb) | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
5275 (let ((inhibit-redisplay t)) |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
5276 (catch 'exit |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
5277 ;; Exact match on name |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
5278 (bbdb-name (concat "\\`" name "\\'") nil) |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
5279 (if (< 0 (buffer-size (get-buffer "*BBDB*"))) (throw 'exit nil)) |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
5280 ;; Exact match on name |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
5281 (bbdb-company (concat "\\`" name "\\'") nil) |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
5282 (if (< 0 (buffer-size (get-buffer "*BBDB*"))) (throw 'exit nil)) |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
5283 ;; Partial match on name |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
5284 (bbdb-name name nil) |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
5285 (if (< 0 (buffer-size (get-buffer "*BBDB*"))) (throw 'exit nil)) |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
5286 ;; Partial match on company |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
5287 (bbdb-company name nil) |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
5288 (if (< 0 (buffer-size (get-buffer "*BBDB*"))) (throw 'exit nil)) |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
5289 ;; General match including network address and notes |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
5290 (bbdb name nil) |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
5291 (when (= 0 (buffer-size (get-buffer "*BBDB*"))) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5292 (delete-window (get-buffer-window "*BBDB*")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5293 (error "No matching BBDB record"))))) |
58792 | 5294 |
5295 (defun org-follow-gnus-link (&optional group article) | |
5296 "Follow a Gnus link to GROUP and ARTICLE." | |
5297 (require 'gnus) | |
5298 (funcall (cdr (assq 'gnus org-link-frame-setup))) | |
5299 (if group (gnus-fetch-group group)) | |
5300 (if article | |
5301 (or (gnus-summary-goto-article article nil 'force) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5302 (if (fboundp 'gnus-summary-insert-cached-articles) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5303 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5304 (gnus-summary-insert-cached-articles) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5305 (gnus-summary-goto-article article nil 'force)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5306 (message "Message could not be found."))))) |
58792 | 5307 |
5308 (defun org-follow-vm-link (&optional folder article readonly) | |
5309 "Follow a VM link to FOLDER and ARTICLE." | |
5310 (require 'vm) | |
5311 (if (string-match "^//\\([a-zA-Z]+@\\)?\\([^:]+\\):\\(.*\\)" folder) | |
5312 ;; ange-ftp or efs or tramp access | |
5313 (let ((user (or (match-string 1 folder) (user-login-name))) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5314 (host (match-string 2 folder)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5315 (file (match-string 3 folder))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5316 (cond |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5317 ((featurep 'tramp) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5318 ;; use tramp to access the file |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5319 (if org-xemacs-p |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5320 (setq folder (format "[%s@%s]%s" user host file)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5321 (setq folder (format "/%s@%s:%s" user host file)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5322 (t |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5323 ;; use ange-ftp or efs |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5324 (require (if org-xemacs-p 'efs 'ange-ftp)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5325 (setq folder (format "/%s@%s:%s" user host file)))))) |
58792 | 5326 (when folder |
5327 (funcall (cdr (assq 'vm org-link-frame-setup)) folder readonly) | |
5328 (sit-for 0.1) | |
5329 (when article | |
5330 (vm-select-folder-buffer) | |
5331 (widen) | |
5332 (let ((case-fold-search t)) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5333 (goto-char (point-min)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5334 (if (not (re-search-forward |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5335 (concat "^" "message-id: *" (regexp-quote article)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5336 (error "Could not find the specified message in this folder")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5337 (vm-isearch-update) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5338 (vm-isearch-narrow) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5339 (vm-beginning-of-message) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5340 (vm-summarize))))) |
58792 | 5341 |
5342 (defun org-follow-wl-link (folder article) | |
5343 "Follow a Wanderlust link to FOLDER and ARTICLE." | |
5344 (wl-summary-goto-folder-subr folder 'no-sync t nil t) | |
5345 (if article (wl-summary-jump-to-msg-by-message-id article)) | |
5346 (wl-summary-redisplay)) | |
5347 | |
5348 (defun org-follow-rmail-link (folder article) | |
5349 "Follow an RMAIL link to FOLDER and ARTICLE." | |
5350 (let (message-number) | |
5351 (save-excursion | |
5352 (save-window-excursion | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5353 (rmail (if (string= folder "RMAIL") rmail-file-name folder)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5354 (setq message-number |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5355 (save-restriction |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5356 (widen) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5357 (goto-char (point-max)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5358 (if (re-search-backward |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5359 (concat "^Message-ID:\\s-+" (regexp-quote |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5360 (or article ""))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5361 nil t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5362 (rmail-what-message)))))) |
58792 | 5363 (if message-number |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5364 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5365 (rmail (if (string= folder "RMAIL") rmail-file-name folder)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5366 (rmail-show-message message-number) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5367 message-number) |
58792 | 5368 (error "Message not found")))) |
5369 | |
5370 (defun org-open-file (path &optional in-emacs line) | |
5371 "Open the file at PATH. | |
5372 First, this expands any special file name abbreviations. Then the | |
5373 configuration variable `org-file-apps' is checked if it contains an | |
5374 entry for this file type, and if yes, the corresponding command is launched. | |
5375 If no application is found, Emacs simply visits the file. | |
5376 With optional argument IN-EMACS, Emacs will visit the file. | |
5377 If the file does not exist, an error is thrown." | |
5378 (let* ((file (convert-standard-filename (org-expand-file-name path))) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5379 (dfile (downcase file)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5380 ext cmd apps) |
58792 | 5381 (if (and (not (file-exists-p file)) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5382 (not org-open-non-existing-files)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5383 (error "No such file: %s" file)) |
58792 | 5384 (if (string-match "^.*\\.\\([a-zA-Z0-9]+\\.gz\\)$" dfile) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5385 (setq ext (match-string 1 dfile)) |
58792 | 5386 (if (string-match "^.*\\.\\([a-zA-Z0-9]+\\)$" dfile) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5387 (setq ext (match-string 1 dfile)))) |
58792 | 5388 (setq apps (append org-file-apps (org-default-apps))) |
5389 (if in-emacs | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5390 (setq cmd 'emacs) |
58792 | 5391 (setq cmd (or (cdr (assoc ext apps)) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5392 (cdr (assoc t apps))))) |
58792 | 5393 (cond |
5394 ((and (stringp cmd) (not (string-match "^\\s-*$" cmd))) | |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
5395 (setq cmd (format cmd (concat "\"" file "\""))) |
58792 | 5396 (save-window-excursion |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5397 (shell-command (concat cmd " & &")))) |
58792 | 5398 ((or (stringp cmd) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5399 (eq cmd 'emacs)) |
58792 | 5400 (funcall (cdr (assq 'file org-link-frame-setup)) file) |
5401 (if line (goto-line line))) | |
5402 ((consp cmd) | |
5403 (eval cmd)) | |
5404 (t (funcall (cdr (assq 'file org-link-frame-setup)) file))))) | |
5405 | |
5406 (defun org-default-apps () | |
5407 "Return the default applications for this operating system." | |
5408 (cond | |
5409 ((eq system-type 'darwin) | |
5410 org-file-apps-defaults-macosx) | |
5411 ((eq system-type 'windows-nt) | |
5412 org-file-apps-defaults-windowsnt) | |
64078
ebf5ec3a071e
(org-file-apps-defaults-gnu): Renamed from org-file-apps-defaults-linux.
Richard M. Stallman <rms@gnu.org>
parents:
64057
diff
changeset
|
5413 (t org-file-apps-defaults-gnu))) |
58792 | 5414 |
5415 (defun org-expand-file-name (path) | |
5416 "Replace special path abbreviations and expand the file name." | |
5417 (expand-file-name path)) | |
5418 | |
5419 | |
5420 (defvar org-insert-link-history nil | |
5421 "Minibuffer history for links inserted with `org-insert-link'.") | |
5422 | |
5423 (defvar org-stored-links nil | |
5424 "Contains the links stored with `org-store-link'.") | |
5425 | |
5426 ;;;###autoload | |
5427 (defun org-store-link (arg) | |
5428 "\\<org-mode-map>Store an org-link to the current location. | |
5429 This link can later be inserted into an org-buffer with | |
5430 \\[org-insert-link]. | |
5431 For some link types, a prefix arg is interpreted: | |
5432 For links to usenet articles, arg negates `org-usenet-links-prefer-google'. | |
5433 For file links, arg negates `org-line-numbers-in-file-links'." | |
5434 (interactive "P") | |
5435 (let (link cpltxt) | |
5436 (cond | |
5437 | |
5438 ((eq major-mode 'bbdb-mode) | |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
5439 (setq cpltxt (concat |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5440 "bbdb:" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5441 (or (bbdb-record-name (bbdb-current-record)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5442 (bbdb-record-company (bbdb-current-record)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5443 link (org-make-link cpltxt))) |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
5444 |
58792 | 5445 ((eq major-mode 'calendar-mode) |
5446 (let ((cd (calendar-cursor-to-date))) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5447 (setq link |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5448 (format-time-string |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5449 (car org-time-stamp-formats) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5450 (apply 'encode-time |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5451 (list 0 0 0 (nth 1 cd) (nth 0 cd) (nth 2 cd) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5452 nil nil nil)))))) |
58792 | 5453 |
5454 ((or (eq major-mode 'vm-summary-mode) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5455 (eq major-mode 'vm-presentation-mode)) |
58792 | 5456 (and (eq major-mode 'vm-presentation-mode) (vm-summarize)) |
5457 (vm-follow-summary-cursor) | |
5458 (save-excursion | |
5459 (vm-select-folder-buffer) | |
5460 (let* ((message (car vm-message-pointer)) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5461 (folder (buffer-file-name)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5462 (subject (vm-su-subject message)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5463 (author (vm-su-full-name message)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5464 (message-id (vm-su-message-id message))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5465 (setq folder (abbreviate-file-name folder)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5466 (if (string-match (concat "^" (regexp-quote vm-folder-directory)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5467 folder) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5468 (setq folder (replace-match "" t t folder))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5469 (setq cpltxt (concat author " on: " subject)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5470 (setq link (concat cpltxt "\n " |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5471 (org-make-link |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5472 "vm:" folder "#" message-id)))))) |
58792 | 5473 |
5474 ((eq major-mode 'wl-summary-mode) | |
5475 (let* ((msgnum (wl-summary-message-number)) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5476 (message-id (elmo-message-field wl-summary-buffer-elmo-folder |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5477 msgnum 'message-id)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5478 (wl-message-entity (elmo-msgdb-overview-get-entity |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5479 msgnum (wl-summary-buffer-msgdb))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5480 (author (wl-summary-line-from)) ; FIXME: how to get author name? |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5481 (subject "???")) ; FIXME: How to get subject of email? |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5482 (setq cpltxt (concat author " on: " subject)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5483 (setq link (concat cpltxt "\n " |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5484 (org-make-link |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5485 "wl:" wl-summary-buffer-folder-name |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5486 "#" message-id))))) |
58792 | 5487 |
5488 ((eq major-mode 'rmail-mode) | |
5489 (save-excursion | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5490 (save-restriction |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5491 (rmail-narrow-to-non-pruned-header) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5492 (let ((folder (buffer-file-name)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5493 (message-id (mail-fetch-field "message-id")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5494 (author (mail-fetch-field "from")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5495 (subject (mail-fetch-field "subject"))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5496 (setq cpltxt (concat author " on: " subject)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5497 (setq link (concat cpltxt "\n " |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5498 (org-make-link |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5499 "rmail:" folder "#" message-id))))))) |
58792 | 5500 |
5501 ((eq major-mode 'gnus-group-mode) | |
5502 (let ((group (cond ((fboundp 'gnus-group-group-name) ; depending on Gnus | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5503 (gnus-group-group-name)) ; version |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5504 ((fboundp 'gnus-group-name) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5505 (gnus-group-name)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5506 (t "???")))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5507 (setq cpltxt (concat |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5508 (if (org-xor arg org-usenet-links-prefer-google) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5509 "http://groups.google.com/groups?group=" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5510 "gnus:") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5511 group) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5512 link (org-make-link cpltxt)))) |
58792 | 5513 |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
5514 ((memq major-mode '(gnus-summary-mode gnus-article-mode)) |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
5515 (and (eq major-mode 'gnus-article-mode) (gnus-article-show-summary)) |
58792 | 5516 (gnus-summary-beginning-of-article) |
5517 (let* ((group (car gnus-article-current)) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5518 (article (cdr gnus-article-current)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5519 (header (gnus-summary-article-header article)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5520 (author (mail-header-from header)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5521 (message-id (mail-header-id header)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5522 (date (mail-header-date header)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5523 (subject (gnus-summary-subject-string))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5524 (setq cpltxt (concat author " on: " subject)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5525 (if (org-xor arg org-usenet-links-prefer-google) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5526 (setq link |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5527 (concat |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5528 cpltxt "\n " |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5529 (format "http://groups.google.com/groups?as_umsgid=%s" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5530 (org-fixup-message-id-for-http message-id)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5531 (setq link (concat cpltxt "\n" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5532 (org-make-link |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5533 "gnus:" group |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5534 "#" (number-to-string article))))))) |
58792 | 5535 |
5536 ((eq major-mode 'w3-mode) | |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
5537 (setq cpltxt (url-view-url t) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5538 link (org-make-link cpltxt))) |
58792 | 5539 ((eq major-mode 'w3m-mode) |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
5540 (setq cpltxt w3m-current-url |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5541 link (org-make-link cpltxt))) |
58792 | 5542 |
5543 ((buffer-file-name) | |
5544 ;; Just link to this file here. | |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
5545 (setq cpltxt (concat "file:" |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5546 (abbreviate-file-name (buffer-file-name)))) |
58792 | 5547 ;; Add the line number? |
5548 (if (org-xor org-line-numbers-in-file-links arg) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5549 (setq cpltxt |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5550 (concat cpltxt |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5551 ":" (int-to-string |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5552 (+ (if (bolp) 1 0) (count-lines |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5553 (point-min) (point))))))) |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
5554 (setq link (org-make-link cpltxt))) |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
5555 |
58792 | 5556 ((interactive-p) |
5557 (error "Cannot link to a buffer which is not visiting a file")) | |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
5558 |
58792 | 5559 (t (setq link nil))) |
5560 | |
5561 (if (and (interactive-p) link) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5562 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5563 (setq org-stored-links |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5564 (cons (cons (or cpltxt link) link) org-stored-links)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5565 (message "Stored: %s" (or cpltxt link))) |
58792 | 5566 link))) |
5567 | |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
5568 (defun org-make-link (&rest strings) |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
5569 "Concatenate STRINGS, format resulting string with `org-link-format'." |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
5570 (format org-link-format (apply 'concat strings))) |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
5571 |
58792 | 5572 (defun org-xor (a b) |
5573 "Exclusive or." | |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
5574 (if a (not b) b)) |
58792 | 5575 |
5576 (defun org-get-header (header) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5577 "Find a header field in the current buffer." |
58792 | 5578 (save-excursion |
5579 (goto-char (point-min)) | |
5580 (let ((case-fold-search t) s) | |
5581 (cond | |
5582 ((eq header 'from) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5583 (if (re-search-forward "^From:\\s-+\\(.*\\)" nil t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5584 (setq s (match-string 1))) |
58792 | 5585 (while (string-match "\"" s) |
5586 (setq s (replace-match "" t t s))) | |
5587 (if (string-match "[<(].*" s) | |
5588 (setq s (replace-match "" t t s)))) | |
5589 ((eq header 'message-id) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5590 (if (re-search-forward "^message-id:\\s-+\\(.*\\)" nil t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5591 (setq s (match-string 1)))) |
58792 | 5592 ((eq header 'subject) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5593 (if (re-search-forward "^subject:\\s-+\\(.*\\)" nil t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5594 (setq s (match-string 1))))) |
58792 | 5595 (if (string-match "\\`[ \t\]+" s) (setq s (replace-match "" t t s))) |
5596 (if (string-match "[ \t\]+\\'" s) (setq s (replace-match "" t t s))) | |
5597 s))) | |
5598 | |
5599 | |
5600 (defun org-fixup-message-id-for-http (s) | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
5601 "Replace special characters in a message id, so it can be used in an http query." |
58792 | 5602 (while (string-match "<" s) |
5603 (setq s (replace-match "%3C" t t s))) | |
5604 (while (string-match ">" s) | |
5605 (setq s (replace-match "%3E" t t s))) | |
5606 (while (string-match "@" s) | |
5607 (setq s (replace-match "%40" t t s))) | |
5608 s) | |
5609 | |
5610 (defun org-insert-link (&optional complete-file) | |
62076
4f2150e05f24
(org-get-entries-from-diary): Remove unused vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61924
diff
changeset
|
5611 "Insert a link. At the prompt, enter the link. |
58792 | 5612 |
5613 Completion can be used to select a link previously stored with | |
5614 `org-store-link'. When the empty string is entered (i.e. if you just | |
5615 press RET at the prompt), the link defaults to the most recently | |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
5616 stored link. As SPC triggers completion in the minibuffer, you need to |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
5617 use M-SPC or C-q SPC to force the insertion of a space character. |
58792 | 5618 |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
5619 With a \\[universal-argument] prefix, prompts for a file to link to. The file name can be |
58792 | 5620 selected using completion. The path to the file will be relative to |
5621 the current directory if the file is in the current directory or a | |
5622 subdirectory. Otherwise, the link will be the absolute path as | |
5623 completed in the minibuffer (i.e. normally ~/path/to/file). | |
5624 | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
5625 With two \\[universal-argument] prefixes, enforce an absolute path even if the file |
58792 | 5626 is in the current directory or below." |
5627 (interactive "P") | |
5628 (let ((link (if complete-file | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5629 (read-file-name "File: ") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5630 (completing-read |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5631 "Link: " org-stored-links nil nil nil |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5632 org-insert-link-history |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5633 (or (car (car org-stored-links)))))) |
58792 | 5634 linktxt matched) |
5635 (if (or (not link) (equal link "")) | |
5636 (error "No links available")) | |
5637 (if complete-file | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5638 (let ((pwd (file-name-as-directory (expand-file-name ".")))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5639 (cond |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5640 ((equal complete-file '(16)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5641 (insert |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5642 (org-make-link |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5643 "file:" (abbreviate-file-name (expand-file-name link))))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5644 ((string-match (concat "^" (regexp-quote pwd) "\\(.+\\)") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5645 (expand-file-name link)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5646 (insert |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5647 (org-make-link |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5648 "file:" (match-string 1 (expand-file-name link))))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5649 (t (insert (org-make-link "file:" link))))) |
58792 | 5650 (setq linktxt (cdr (assoc link org-stored-links))) |
5651 (if (not org-keep-stored-link-after-insertion) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5652 (setq org-stored-links (delq (assoc link org-stored-links) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5653 org-stored-links))) |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
5654 (if (not linktxt) (setq link (org-make-link link))) |
58792 | 5655 (let ((lines (org-split-string (or linktxt link) "\n"))) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5656 (insert (car lines)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5657 (setq matched (string-match org-link-regexp (car lines))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5658 (setq lines (cdr lines)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5659 (while lines |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5660 (insert "\n") |
58792 | 5661 (if (save-excursion |
5662 (beginning-of-line 0) | |
5663 (looking-at "[ \t]+\\S-")) | |
5664 (indent-relative)) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5665 (setq matched (or matched |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5666 (string-match org-link-regexp (car lines)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5667 (insert (car lines)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5668 (setq lines (cdr lines)))) |
58792 | 5669 (unless matched |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5670 (error "Add link type: http(s),ftp,mailto,file,news,bbdb,vm,wl,rmail,gnus, or shell"))))) |
58792 | 5671 |
5672 ;;; Hooks for remember.el | |
5673 ;;;###autoload | |
5674 (defun org-remember-annotation () | |
5675 "Return a link to the current location as an annotation for remember.el. | |
5676 If you are using Org-mode files as target for data storage with | |
5677 remember.el, then the annotations should include a link compatible with the | |
5678 conventions in Org-mode. This function returns such a link." | |
5679 (org-store-link nil)) | |
5680 | |
5681 (defconst org-remember-help | |
5682 "Select a destination location for the note. | |
5683 UP/DOWN=headline TAB=cycle visibility [Q]uit RET/<left>/<right>=Store | |
5684 RET at beg-of-buf -> Append to file as level 2 headline | |
5685 RET on headline -> Store as sublevel entry to current headline | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5686 <left>/<right> -> before/after current headline, same headings level") |
58792 | 5687 |
5688 ;;;###autoload | |
5689 (defun org-remember-handler () | |
5690 "Store stuff from remember.el into an org file. | |
5691 First prompts for an org file. If the user just presses return, the value | |
5692 of `org-default-notes-file' is used. | |
5693 Then the command offers the headings tree of the selected file in order to | |
5694 file the text at a specific location. | |
5695 You can either immediately press RET to get the note appended to the | |
5696 file. Or you can use vertical cursor motion and visibility cycling (TAB) to | |
5697 find a better place. Then press RET or <left> or <right> in insert the note. | |
5698 | |
5699 Key Cursor position Note gets inserted | |
5700 ----------------------------------------------------------------------------- | |
5701 RET buffer-start as level 2 heading at end of file | |
5702 RET on headline as sublevel of the heading at cursor | |
5703 RET no heading at cursor position, level taken from context. | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5704 Or use prefix arg to specify level manually. |
58792 | 5705 <left> on headline as same level, before current heading |
5706 <right> on headline as same level, after current heading | |
5707 | |
5708 So the fastest way to store the note is to press RET RET to append it to | |
5709 the default file. This way your current train of thought is not | |
5710 interrupted, in accordance with the principles of remember.el. But with | |
5711 little extra effort, you can push it directly to the correct location. | |
5712 | |
5713 Before being stored away, the function ensures that the text has a | |
5714 headline, i.e. a first line that starts with a \"*\". If not, a headline | |
5715 is constructed from the current date and some additional data. | |
5716 | |
5717 If the variable `org-adapt-indentation' is non-nil, the entire text is | |
5718 also indented so that it starts in the same column as the headline | |
5719 \(i.e. after the stars). | |
5720 | |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
5721 See also the variable `org-reverse-note-order'." |
58792 | 5722 (catch 'quit |
5723 (let* ((txt (buffer-substring (point-min) (point-max))) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5724 (fastp current-prefix-arg) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5725 (file (if fastp org-default-notes-file (org-get-org-file))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5726 (visiting (find-buffer-visiting file)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5727 (org-startup-with-deadline-check nil) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5728 (org-startup-folded nil) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5729 spos level indent reversed) |
58792 | 5730 ;; Modify text so that it becomes a nice subtree which can be inserted |
5731 ;; into an org tree. | |
5732 (let* ((lines (split-string txt "\n")) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5733 (first (car lines)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5734 (lines (cdr lines))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5735 (if (string-match "^\\*+" first) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5736 ;; Is already a headline |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5737 (setq indent (make-string (- (match-end 0) (match-beginning 0) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5738 -1) ?\ )) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5739 ;; We need to add a headline: Use time and first buffer line |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5740 (setq lines (cons first lines) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5741 first (concat "* " (current-time-string) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5742 " (" (remember-buffer-desc) ")") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5743 indent " ")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5744 (if org-adapt-indentation |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5745 (setq lines (mapcar (lambda (x) (concat indent x)) lines))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5746 (setq txt (concat first "\n" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5747 (mapconcat 'identity lines "\n")))) |
58792 | 5748 ;; Find the file |
5749 (if (not visiting) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5750 (find-file-noselect file)) |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
5751 (with-current-buffer (get-file-buffer file) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5752 (setq reversed (org-notes-order-reversed-p)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5753 (save-excursion |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5754 (save-restriction |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5755 (widen) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5756 ;; Ask the User for a location |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5757 (setq spos (if fastp 1 (org-get-location |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5758 (current-buffer) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5759 org-remember-help))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5760 (if (not spos) (throw 'quit nil)) ; return nil to show we did |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5761 ; not handle this note |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5762 (goto-char spos) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5763 (cond ((bobp) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5764 ;; Put it at the start or end, as level 2 |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5765 (save-restriction |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5766 (widen) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5767 (goto-char (if reversed (point-min) (point-max))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5768 (if (not (bolp)) (newline)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5769 (org-paste-subtree (or current-prefix-arg 2) txt))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5770 ((and (org-on-heading-p nil) (not current-prefix-arg)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5771 ;; Put it below this entry, at the beg/end of the subtree |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5772 (org-back-to-heading) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5773 (setq level (outline-level)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5774 (if reversed |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5775 (outline-end-of-heading) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5776 (outline-end-of-subtree)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5777 (if (not (bolp)) (newline)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5778 (beginning-of-line 1) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5779 (org-paste-subtree (1+ level) txt)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5780 (t |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5781 ;; Put it right there, with automatic level determined by |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5782 ;; org-paste-subtree or from prefix arg |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5783 (org-paste-subtree current-prefix-arg txt))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5784 (when remember-save-after-remembering |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5785 (save-buffer) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5786 (if (not visiting) (kill-buffer (current-buffer))))))))) |
58792 | 5787 t) ;; return t to indicate that we took care of this note. |
5788 | |
5789 (defun org-get-org-file () | |
5790 "Read a filename, with default directory `org-directory'." | |
5791 (let ((default (or org-default-notes-file remember-data-file))) | |
5792 (read-file-name (format "File name [%s]: " default) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5793 (file-name-as-directory org-directory) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5794 default))) |
58792 | 5795 |
5796 (defun org-notes-order-reversed-p () | |
5797 "Check if the current file should receive notes in reversed order." | |
5798 (cond | |
5799 ((not org-reverse-note-order) nil) | |
5800 ((eq t org-reverse-note-order) t) | |
5801 ((not (listp org-reverse-note-order)) nil) | |
5802 (t (catch 'exit | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5803 (let ((all org-reverse-note-order) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5804 entry) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5805 (while (setq entry (pop all)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5806 (if (string-match (car entry) (buffer-file-name)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5807 (throw 'exit (cdr entry)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5808 nil))))) |
58792 | 5809 |
5810 ;;; Tables | |
5811 | |
5812 ;; Watch out: Here we are talking about two different kind of tables. | |
5813 ;; Most of the code is for the tables created with the Org-mode table editor. | |
5814 ;; Sometimes, we talk about tables created and edited with the table.el | |
5815 ;; Emacs package. We call the former org-type tables, and the latter | |
5816 ;; table.el-type tables. | |
5817 | |
5818 | |
5819 (defun org-before-change-function (beg end) | |
5820 "Every change indicates that a table might need an update." | |
5821 (setq org-table-may-need-update t)) | |
5822 | |
5823 (defconst org-table-line-regexp "^[ \t]*|" | |
5824 "Detects an org-type table line.") | |
5825 (defconst org-table-dataline-regexp "^[ \t]*|[^-]" | |
5826 "Detects an org-type table line.") | |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
5827 (defconst org-table-auto-recalculate-regexp "^[ \t]*| *# *\\(|\\|$\\)" |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
5828 "Detects a table line marked for automatic recalculation.") |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
5829 (defconst org-table-recalculate-regexp "^[ \t]*| *[#*] *\\(|\\|$\\)" |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
5830 "Detects a table line marked for automatic recalculation.") |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
5831 (defconst org-table-calculate-mark-regexp "^[ \t]*| *[!$^_#*] *\\(|\\|$\\)" |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
5832 "Detects a table line marked for automatic recalculation.") |
58792 | 5833 (defconst org-table-hline-regexp "^[ \t]*|-" |
5834 "Detects an org-type table hline.") | |
5835 (defconst org-table1-hline-regexp "^[ \t]*\\+-[-+]" | |
5836 "Detects a table-type table hline.") | |
5837 (defconst org-table-any-line-regexp "^[ \t]*\\(|\\|\\+-[-+]\\)" | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
5838 "Detects an org-type or table-type table.") |
58792 | 5839 (defconst org-table-border-regexp "^[ \t]*[^| \t]" |
5840 "Searching from within a table (any type) this finds the first line | |
5841 outside the table.") | |
5842 (defconst org-table-any-border-regexp "^[ \t]*[^|+ \t]" | |
5843 "Searching from within a table (any type) this finds the first line | |
5844 outside the table.") | |
5845 | |
5846 (defun org-table-create-with-table.el () | |
5847 "Use the table.el package to insert a new table. | |
5848 If there is already a table at point, convert between Org-mode tables | |
5849 and table.el tables." | |
5850 (interactive) | |
5851 (require 'table) | |
5852 (cond | |
5853 ((org-at-table.el-p) | |
5854 (if (y-or-n-p "Convert table to Org-mode table? ") | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5855 (org-table-convert))) |
58792 | 5856 ((org-at-table-p) |
5857 (if (y-or-n-p "Convert table to table.el table? ") | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5858 (org-table-convert))) |
58792 | 5859 (t (call-interactively 'table-insert)))) |
5860 | |
5861 (defun org-table-create (&optional size) | |
5862 "Query for a size and insert a table skeleton. | |
5863 SIZE is a string Columns x Rows like for example \"3x2\"." | |
5864 (interactive "P") | |
5865 (unless size | |
5866 (setq size (read-string | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5867 (concat "Table size Columns x Rows [e.g. " |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5868 org-table-default-size "]: ") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5869 "" nil org-table-default-size))) |
58792 | 5870 |
5871 (let* ((pos (point)) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5872 (indent (make-string (current-column) ?\ )) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5873 (split (org-split-string size " *x *")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5874 (rows (string-to-number (nth 1 split))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5875 (columns (string-to-number (car split))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5876 (line (concat (apply 'concat indent "|" (make-list columns " |")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5877 "\n"))) |
58792 | 5878 (if (string-match "^[ \t]*$" (buffer-substring-no-properties |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5879 (point-at-bol) (point))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5880 (beginning-of-line 1) |
58792 | 5881 (newline)) |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
5882 ;; (mapcar (lambda (x) (insert line)) (make-list rows t)) |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
5883 (dotimes (i rows) (insert line)) |
58792 | 5884 (goto-char pos) |
5885 (if (> rows 1) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5886 ;; Insert a hline after the first row. |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5887 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5888 (end-of-line 1) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5889 (insert "\n|-") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5890 (goto-char pos))) |
58792 | 5891 (org-table-align))) |
5892 | |
5893 (defun org-table-convert-region (beg0 end0 nspace) | |
5894 "Convert region to a table. | |
5895 The region goes from BEG0 to END0, but these borders will be moved | |
5896 slightly, to make sure a beginning of line in the first line is included. | |
5897 When NSPACE is non-nil, it indicates the minimum number of spaces that | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5898 separate columns (default: just one space)" |
58792 | 5899 (let* ((beg (min beg0 end0)) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5900 (end (max beg0 end0)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5901 (tabsep t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5902 re) |
58792 | 5903 (goto-char beg) |
5904 (beginning-of-line 1) | |
5905 (setq beg (move-marker (make-marker) (point))) | |
5906 (goto-char end) | |
5907 (if (bolp) (backward-char 1) (end-of-line 1)) | |
5908 (setq end (move-marker (make-marker) (point))) | |
5909 ;; Lets see if this is tab-separated material. If every nonempty line | |
5910 ;; contains a tab, we will assume that it is tab-separated material | |
5911 (if nspace | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5912 (setq tabsep nil) |
58792 | 5913 (goto-char beg) |
5914 (and (re-search-forward "^[^\n\t]+$" end t) (setq tabsep nil))) | |
5915 (if nspace (setq tabsep nil)) | |
5916 (if tabsep | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5917 (setq re "^\\|\t") |
58792 | 5918 (setq re (format "^ *\\| *\t *\\| \\{%d,\\}" |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5919 (max 1 (prefix-numeric-value nspace))))) |
58792 | 5920 (goto-char beg) |
5921 (while (re-search-forward re end t) | |
5922 (replace-match "|" t t)) | |
5923 (goto-char beg) | |
5924 (insert " ") | |
5925 (org-table-align))) | |
5926 | |
5927 (defun org-table-import (file arg) | |
5928 "Import FILE as a table. | |
5929 The file is assumed to be tab-separated. Such files can be produced by most | |
5930 spreadsheet and database applications. If no tabs (at least one per line) | |
5931 are found, lines will be split on whitespace into fields." | |
5932 (interactive "f\nP") | |
5933 (or (bolp) (newline)) | |
5934 (let ((beg (point)) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5935 (pm (point-max))) |
58792 | 5936 (insert-file-contents file) |
5937 (org-table-convert-region beg (+ (point) (- (point-max) pm)) arg))) | |
5938 | |
5939 (defun org-table-export () | |
5940 "Export table as a tab-separated file. | |
5941 Such a file can be imported into a spreadsheet program like Excel." | |
5942 (interactive) | |
5943 (let* ((beg (org-table-begin)) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5944 (end (org-table-end)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5945 (table (buffer-substring beg end)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5946 (file (read-file-name "Export table to: ")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5947 buf) |
58792 | 5948 (unless (or (not (file-exists-p file)) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5949 (y-or-n-p (format "Overwrite file %s? " file))) |
58792 | 5950 (error "Abort")) |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
5951 (with-current-buffer (find-file-noselect file) |
58792 | 5952 (setq buf (current-buffer)) |
5953 (erase-buffer) | |
5954 (fundamental-mode) | |
5955 (insert table) | |
5956 (goto-char (point-min)) | |
5957 (while (re-search-forward "^[ \t]*|[ \t]*" nil t) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5958 (replace-match "" t t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5959 (end-of-line 1)) |
58792 | 5960 (goto-char (point-min)) |
5961 (while (re-search-forward "[ \t]*|[ \t]*$" nil t) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5962 (replace-match "" t t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5963 (goto-char (min (1+ (point)) (point-max)))) |
58792 | 5964 (goto-char (point-min)) |
5965 (while (re-search-forward "^-[-+]*$" nil t) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5966 (replace-match "") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5967 (if (looking-at "\n") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5968 (delete-char 1))) |
58792 | 5969 (goto-char (point-min)) |
5970 (while (re-search-forward "[ \t]*|[ \t]*" nil t) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5971 (replace-match "\t" t t)) |
58792 | 5972 (save-buffer)) |
5973 (kill-buffer buf))) | |
5974 | |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
5975 (defvar org-table-aligned-begin-marker (make-marker) |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
5976 "Marker at the beginning of the table last aligned. |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
5977 Used to check if cursor still is in that table, to minimize realignment.") |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
5978 (defvar org-table-aligned-end-marker (make-marker) |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
5979 "Marker at the end of the table last aligned. |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
5980 Used to check if cursor still is in that table, to minimize realignment.") |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
5981 (defvar org-table-last-alignment nil |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
5982 "List of flags for flushright alignment, from the last re-alignment. |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
5983 This is being used to correctly align a single field after TAB or RET.") |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
5984 ;; FIXME: The following is currently not used. |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
5985 (defvar org-table-last-column-widths nil |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
5986 "List of max width of fields in each column. |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
5987 This is being used to correctly align a single field after TAB or RET.") |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
5988 |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
5989 (defvar org-last-recalc-line nil) |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
5990 |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
5991 (defun org-table-align () |
58792 | 5992 "Align the table at point by aligning all vertical bars." |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
5993 (interactive) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5994 ;; (message "align") (sit-for 2) |
58792 | 5995 (let* ( |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5996 ;; Limits of table |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5997 (beg (org-table-begin)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5998 (end (org-table-end)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
5999 ;; Current cursor position |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6000 (linepos (+ (if (bolp) 1 0) (count-lines (point-min) (point)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6001 (colpos (org-table-current-column)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6002 (winstart (window-start)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6003 text lines (new "") lengths l typenums ty fields maxfields i |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6004 column |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6005 (indent "") cnt frac |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6006 rfmt hfmt |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6007 (spaces (if (org-in-invisibility-spec-p '(org-table)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6008 org-table-spaces-around-invisible-separators |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6009 org-table-spaces-around-separators)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6010 (sp1 (car spaces)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6011 (sp2 (cdr spaces)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6012 (rfmt1 (concat |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6013 (make-string sp2 ?\ ) "%%%s%ds" (make-string sp1 ?\ ) "|")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6014 (hfmt1 (concat |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6015 (make-string sp2 ?-) "%s" (make-string sp1 ?-) "+")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6016 emptystrings) |
58792 | 6017 (untabify beg end) |
6018 ;; (message "Aligning table...") | |
6019 ;; Get the rows | |
6020 (setq lines (org-split-string | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6021 (buffer-substring-no-properties beg end) "\n")) |
58792 | 6022 ;; Store the indentation of the first line |
6023 (if (string-match "^ *" (car lines)) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6024 (setq indent (make-string (- (match-end 0) (match-beginning 0)) ?\ ))) |
58792 | 6025 ;; Mark the hlines |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
6026 (setq lines (mapcar (lambda (l) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6027 (if (string-match "^ *|-" l) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6028 nil |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6029 (if (string-match "[ \t]+$" l) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6030 (substring l 0 (match-beginning 0)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6031 l))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6032 lines)) |
58792 | 6033 ;; Get the data fields |
6034 (setq fields (mapcar | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6035 (lambda (l) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6036 (org-split-string l " *| *")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6037 (delq nil (copy-sequence lines)))) |
58792 | 6038 ;; How many fields in the longest line? |
6039 (condition-case nil | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6040 (setq maxfields (apply 'max (mapcar 'length fields))) |
58792 | 6041 (error |
6042 (kill-region beg end) | |
6043 (org-table-create org-table-default-size) | |
6044 (error "Empty table - created default table"))) | |
6045 ;; A list of empty string to fill any short rows on output | |
6046 (setq emptystrings (make-list maxfields "")) | |
6047 ;; Get the maximum length of a field and the most common datatype | |
6048 ;; for each column | |
6049 (setq i -1) | |
6050 (while (< (setq i (1+ i)) maxfields) ;; Loop over all columns | |
6051 (setq column (mapcar (lambda (x) (or (nth i x) "")) fields)) | |
6052 ;; maximum length | |
6053 (push (apply 'max 1 (mapcar 'length column)) lengths) | |
6054 ;; compute the fraction stepwise, ignoring empty fields | |
6055 (setq cnt 0 frac 0.0) | |
6056 (mapcar | |
6057 (lambda (x) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6058 (if (equal x "") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6059 nil |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6060 (setq frac ( / (+ (* frac cnt) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6061 (if (string-match org-table-number-regexp x) 1 0)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6062 (setq cnt (1+ cnt)))))) |
58792 | 6063 column) |
6064 (push (>= frac org-table-number-fraction) typenums)) | |
6065 (setq lengths (nreverse lengths) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6066 typenums (nreverse typenums)) |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
6067 (setq org-table-last-alignment typenums |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6068 org-table-last-column-widths lengths) |
58792 | 6069 ;; Compute the formats needed for output of the table |
6070 (setq rfmt (concat indent "|") hfmt (concat indent "|")) | |
6071 (while (setq l (pop lengths)) | |
6072 (setq ty (if (pop typenums) "" "-")) ; number types flushright | |
6073 (setq rfmt (concat rfmt (format rfmt1 ty l)) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6074 hfmt (concat hfmt (format hfmt1 (make-string l ?-))))) |
58792 | 6075 (setq rfmt (concat rfmt "\n") |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6076 hfmt (concat (substring hfmt 0 -1) "|\n")) |
58792 | 6077 ;; Produce the new table |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
6078 ;;(while lines |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
6079 ;; (setq l (pop lines)) |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
6080 ;; (if l |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
6081 ;; (setq new (concat new (apply 'format rfmt |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
6082 ;; (append (pop fields) emptystrings)))) |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
6083 ;; (setq new (concat new hfmt)))) |
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
6084 (setq new (mapconcat |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6085 (lambda (l) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6086 (if l (apply 'format rfmt |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6087 (append (pop fields) emptystrings)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6088 hfmt)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6089 lines "")) |
58792 | 6090 ;; Replace the old one |
6091 (delete-region beg end) | |
6092 (move-marker end nil) | |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
6093 (move-marker org-table-aligned-begin-marker (point)) |
58792 | 6094 (insert new) |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
6095 (move-marker org-table-aligned-end-marker (point)) |
58792 | 6096 ;; Try to move to the old location (approximately) |
6097 (goto-line linepos) | |
6098 (set-window-start (selected-window) winstart 'noforce) | |
6099 (org-table-goto-column colpos) | |
6100 (setq org-table-may-need-update nil) | |
6101 (if (org-in-invisibility-spec-p '(org-table)) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6102 (org-table-add-invisible-to-vertical-lines)) |
58792 | 6103 )) |
6104 | |
6105 (defun org-table-begin (&optional table-type) | |
6106 "Find the beginning of the table and return its position. | |
6107 With argument TABLE-TYPE, go to the beginning of a table.el-type table." | |
6108 (save-excursion | |
6109 (if (not (re-search-backward | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6110 (if table-type org-table-any-border-regexp |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6111 org-table-border-regexp) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6112 nil t)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6113 (error "Can't find beginning of table") |
58792 | 6114 (goto-char (match-beginning 0)) |
6115 (beginning-of-line 2) | |
6116 (point)))) | |
6117 | |
6118 (defun org-table-end (&optional table-type) | |
6119 "Find the end of the table and return its position. | |
6120 With argument TABLE-TYPE, go to the end of a table.el-type table." | |
6121 (save-excursion | |
6122 (if (not (re-search-forward | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6123 (if table-type org-table-any-border-regexp |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6124 org-table-border-regexp) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6125 nil t)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6126 (goto-char (point-max)) |
58792 | 6127 (goto-char (match-beginning 0))) |
6128 (point-marker))) | |
6129 | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6130 (defun org-table-justify-field-maybe (&optional new) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6131 "Justify the current field, text to left, number to right. |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6132 Optional argument NEW may specify text to replace the current field content." |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
6133 (cond |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6134 ((and (not new) org-table-may-need-update)) ; Realignment will happen anyway |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
6135 ((org-at-table-hline-p) |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
6136 ;; FIXME: I used to enforce realign here, but I think this is not needed. |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6137 ;; (setq org-table-may-need-update t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6138 ) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6139 ((and (not new) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6140 (or (not (equal (marker-buffer org-table-aligned-begin-marker) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6141 (current-buffer))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6142 (< (point) org-table-aligned-begin-marker) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6143 (>= (point) org-table-aligned-end-marker))) |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
6144 ;; This is not the same table, force a full re-align |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
6145 (setq org-table-may-need-update t)) |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
6146 (t ;; realign the current field, based on previous full realign |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6147 (let* ((pos (point)) s |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6148 (col (org-table-current-column)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6149 (num (nth (1- col) org-table-last-alignment)) |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
6150 l f n o e) |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
6151 (when (> col 0) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6152 (skip-chars-backward "^|\n") |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
6153 (if (looking-at " *\\([^|\n]*?\\) *\\(|\\|$\\)") |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6154 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6155 (setq s (match-string 1) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6156 o (match-string 0) |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
6157 l (max 1 (- (match-end 0) (match-beginning 0) 3)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
6158 e (not (= (match-beginning 2) (match-end 2)))) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
6159 (setq f (format (if num " %%%ds %s" " %%-%ds %s") |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
6160 l (if e "|" (setq org-table-may-need-update t) "")) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6161 n (format f s t t)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6162 (if new |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6163 (if (<= (length new) l) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6164 (setq n (format f new t t)) ;; FIXME: why t t????? |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6165 (setq n (concat new "|") org-table-may-need-update t))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6166 (or (equal n o) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6167 (let (org-table-may-need-update) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6168 (replace-match n)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6169 (setq org-table-may-need-update t)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6170 (goto-char pos)))))) |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
6171 |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
6172 (defun org-table-next-field () |
58792 | 6173 "Go to the next field in the current table. |
6174 Before doing so, re-align the table if necessary." | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
6175 (interactive) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
6176 (org-table-maybe-eval-formula) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
6177 (org-table-maybe-recalculate-line) |
58792 | 6178 (if (and org-table-automatic-realign |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6179 org-table-may-need-update) |
58792 | 6180 (org-table-align)) |
6181 (if (org-at-table-hline-p) | |
6182 (end-of-line 1)) | |
6183 (condition-case nil | |
6184 (progn | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6185 (re-search-forward "|" (org-table-end)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6186 (if (looking-at "[ \t]*$") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6187 (re-search-forward "|" (org-table-end))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6188 (if (looking-at "-") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6189 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6190 (beginning-of-line 0) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6191 (org-table-insert-row 'below)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6192 (if (looking-at " ") (forward-char 1)))) |
58792 | 6193 (error |
6194 (org-table-insert-row 'below)))) | |
6195 | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
6196 (defun org-table-previous-field () |
58792 | 6197 "Go to the previous field in the table. |
6198 Before doing so, re-align the table if necessary." | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
6199 (interactive) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
6200 (org-table-justify-field-maybe) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
6201 (org-table-maybe-recalculate-line) |
58792 | 6202 (if (and org-table-automatic-realign |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6203 org-table-may-need-update) |
58792 | 6204 (org-table-align)) |
6205 (if (org-at-table-hline-p) | |
6206 (end-of-line 1)) | |
6207 (re-search-backward "|" (org-table-begin)) | |
6208 (re-search-backward "|" (org-table-begin)) | |
6209 (while (looking-at "|\\(-\\|[ \t]*$\\)") | |
6210 (re-search-backward "|" (org-table-begin))) | |
6211 (if (looking-at "| ?") | |
6212 (goto-char (match-end 0)))) | |
6213 | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
6214 (defun org-table-next-row () |
58792 | 6215 "Go to the next row (same column) in the current table. |
6216 Before doing so, re-align the table if necessary." | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
6217 (interactive) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
6218 (org-table-maybe-eval-formula) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
6219 (org-table-maybe-recalculate-line) |
58792 | 6220 (if (or (looking-at "[ \t]*$") |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6221 (save-excursion (skip-chars-backward " \t") (bolp))) |
58792 | 6222 (newline) |
6223 (if (and org-table-automatic-realign | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6224 org-table-may-need-update) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6225 (org-table-align)) |
58792 | 6226 (let ((col (org-table-current-column))) |
6227 (beginning-of-line 2) | |
6228 (if (or (not (org-at-table-p)) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6229 (org-at-table-hline-p)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6230 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6231 (beginning-of-line 0) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6232 (org-table-insert-row 'below))) |
58792 | 6233 (org-table-goto-column col) |
6234 (skip-chars-backward "^|\n\r") | |
6235 (if (looking-at " ") (forward-char 1))))) | |
6236 | |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
6237 (defun org-table-copy-down (n) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
6238 "Copy a field down in the current column. |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
6239 If the field at the cursor is empty, copy into it the content of the nearest |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
6240 non-empty field above. With argument N, use the Nth non-empty field. |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
6241 If the current field is not empty, it is copied down to the next row, and |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
6242 the cursor is moved with it. Therefore, repeating this command causes the |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
6243 column to be filled row-by-row. |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
6244 If the variable `org-table-copy-increment' is non-nil and the field is an |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
6245 integer, it will be incremented while copying." |
58792 | 6246 (interactive "p") |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
6247 (let* ((colpos (org-table-current-column)) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6248 (field (org-table-get-field)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6249 (non-empty (string-match "[^ \t]" field)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6250 (beg (org-table-begin)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6251 txt) |
58792 | 6252 (org-table-check-inside-data-field) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
6253 (if non-empty |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6254 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6255 (setq txt (org-trim field)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6256 (org-table-next-row) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6257 (org-table-blank-field)) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
6258 (save-excursion |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6259 (setq txt |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6260 (catch 'exit |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6261 (while (progn (beginning-of-line 1) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6262 (re-search-backward org-table-dataline-regexp |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6263 beg t)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6264 (org-table-goto-column colpos t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6265 (if (and (looking-at |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6266 "|[ \t]*\\([^| \t][^|]*?\\)[ \t]*|") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6267 (= (setq n (1- n)) 0)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6268 (throw 'exit (match-string 1)))))))) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
6269 (if txt |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6270 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6271 (if (and org-table-copy-increment |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6272 (string-match "^[0-9]+$" txt)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6273 (setq txt (format "%d" (+ (string-to-int txt) 1)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6274 (insert txt) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6275 (org-table-maybe-recalculate-line) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6276 (org-table-align)) |
58792 | 6277 (error "No non-empty field found")))) |
6278 | |
6279 (defun org-table-check-inside-data-field () | |
6280 "Is point inside a table data field? | |
6281 I.e. not on a hline or before the first or after the last column?" | |
6282 (if (or (not (org-at-table-p)) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6283 (= (org-table-current-column) 0) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6284 (org-at-table-hline-p) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6285 (looking-at "[ \t]*$")) |
58792 | 6286 (error "Not in table data field"))) |
6287 | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
6288 (defvar org-table-clip nil |
62076
4f2150e05f24
(org-get-entries-from-diary): Remove unused vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61924
diff
changeset
|
6289 "Clipboard for table regions.") |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
6290 |
58792 | 6291 (defun org-table-blank-field () |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
6292 "Blank the current table field or active region." |
58792 | 6293 (interactive) |
6294 (org-table-check-inside-data-field) | |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
6295 (if (and (interactive-p) (org-region-active-p)) |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
6296 (let (org-table-clip) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6297 (org-table-cut-region (region-beginning) (region-end))) |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
6298 (skip-chars-backward "^|") |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
6299 (backward-char 1) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
6300 (if (looking-at "|[^|\n]+") |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6301 (let* ((pos (match-beginning 0)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6302 (match (match-string 0)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6303 (len (length match))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6304 (replace-match (concat "|" (make-string (1- len) ?\ ))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6305 (goto-char (+ 2 pos)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6306 (substring match 1))))) |
58792 | 6307 |
6308 (defun org-table-get-field (&optional n replace) | |
6309 "Return the value of the field in column N of current row. | |
6310 N defaults to current field. | |
6311 If REPLACE is a string, replace field with this value. The return value | |
6312 is always the old value." | |
6313 (and n (org-table-goto-column n)) | |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
6314 (skip-chars-backward "^|\n") |
58792 | 6315 (backward-char 1) |
6316 (if (looking-at "|[^|\r\n]*") | |
6317 (let* ((pos (match-beginning 0)) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6318 (val (buffer-substring (1+ pos) (match-end 0)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6319 (if replace |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6320 (replace-match (concat "|" replace))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6321 (goto-char (min (point-at-eol) (+ 2 pos))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6322 val) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
6323 (forward-char 1) "")) |
58792 | 6324 |
6325 (defun org-table-current-column () | |
6326 "Find out which column we are in. | |
6327 When called interactively, column is also displayed in echo area." | |
6328 (interactive) | |
6329 (if (interactive-p) (org-table-check-inside-data-field)) | |
6330 (save-excursion | |
6331 (let ((cnt 0) (pos (point))) | |
6332 (beginning-of-line 1) | |
6333 (while (search-forward "|" pos t) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6334 (setq cnt (1+ cnt))) |
58792 | 6335 (if (interactive-p) (message "This is table column %d" cnt)) |
6336 cnt))) | |
6337 | |
6338 (defun org-table-goto-column (n &optional on-delim force) | |
6339 "Move the cursor to the Nth column in the current table line. | |
6340 With optional argument ON-DELIM, stop with point before the left delimiter | |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
6341 of the field. |
58792 | 6342 If there are less than N fields, just go to after the last delimiter. |
6343 However, when FORCE is non-nil, create new columns if necessary." | |
6344 (let ((pos (point-at-eol))) | |
6345 (beginning-of-line 1) | |
6346 (when (> n 0) | |
6347 (while (and (> (setq n (1- n)) -1) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6348 (or (search-forward "|" pos t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6349 (and force |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6350 (progn (end-of-line 1) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6351 (skip-chars-backward "^|") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6352 (insert " | ")))))) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
6353 ; (backward-char 2) t))))) |
58792 | 6354 (when (and force (not (looking-at ".*|"))) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6355 (save-excursion (end-of-line 1) (insert " | "))) |
58792 | 6356 (if on-delim |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6357 (backward-char 1) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6358 (if (looking-at " ") (forward-char 1)))))) |
58792 | 6359 |
6360 (defun org-at-table-p (&optional table-type) | |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
6361 "Return t if the cursor is inside an org-type table. |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6362 If TABLE-TYPE is non-nil, also chack for table.el-type tables." |
58792 | 6363 (if org-enable-table-editor |
6364 (save-excursion | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6365 (beginning-of-line 1) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6366 (looking-at (if table-type org-table-any-line-regexp |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6367 org-table-line-regexp))) |
58792 | 6368 nil)) |
6369 | |
6370 (defun org-table-recognize-table.el () | |
6371 "If there is a table.el table nearby, recognize it and move into it." | |
6372 (if org-table-tab-recognizes-table.el | |
6373 (if (org-at-table.el-p) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6374 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6375 (beginning-of-line 1) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6376 (if (looking-at org-table-dataline-regexp) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6377 nil |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6378 (if (looking-at org-table1-hline-regexp) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6379 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6380 (beginning-of-line 2) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6381 (if (looking-at org-table-any-border-regexp) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6382 (beginning-of-line -1))))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6383 (if (re-search-forward "|" (org-table-end t) t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6384 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6385 (require 'table) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6386 (if (table--at-cell-p (point)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6387 t |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6388 (message "recognizing table.el table...") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6389 (table-recognize-table) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6390 (message "recognizing table.el table...done"))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6391 (error "This should not happen...")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6392 t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6393 nil) |
58792 | 6394 nil)) |
6395 | |
6396 (defun org-at-table.el-p () | |
6397 "Return t if the cursor is inside a table.el-type table." | |
6398 (save-excursion | |
6399 (if (org-at-table-p 'any) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6400 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6401 (goto-char (org-table-begin 'any)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6402 (looking-at org-table1-hline-regexp)) |
58792 | 6403 nil))) |
6404 | |
6405 (defun org-at-table-hline-p () | |
6406 "Return t if the cursor is inside a hline in a table." | |
6407 (if org-enable-table-editor | |
6408 (save-excursion | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6409 (beginning-of-line 1) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6410 (looking-at org-table-hline-regexp)) |
58792 | 6411 nil)) |
6412 | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
6413 (defun org-table-insert-column () |
58792 | 6414 "Insert a new column into the table." |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
6415 (interactive) |
58792 | 6416 (if (not (org-at-table-p)) |
6417 (error "Not at a table")) | |
6418 (org-table-find-dataline) | |
6419 (let* ((col (max 1 (org-table-current-column))) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6420 (beg (org-table-begin)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6421 (end (org-table-end)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6422 ;; Current cursor position |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6423 (linepos (+ (if (bolp) 1 0) (count-lines (point-min) (point)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6424 (colpos col)) |
58792 | 6425 (goto-char beg) |
6426 (while (< (point) end) | |
6427 (if (org-at-table-hline-p) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6428 nil |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6429 (org-table-goto-column col t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6430 (insert "| ")) |
58792 | 6431 (beginning-of-line 2)) |
6432 (move-marker end nil) | |
6433 (goto-line linepos) | |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
6434 (org-table-goto-column colpos) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
6435 (org-table-align) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
6436 (org-table-modify-formulas 'insert col))) |
58792 | 6437 |
6438 (defun org-table-find-dataline () | |
6439 "Find a dataline in the current table, which is needed for column commands." | |
6440 (if (and (org-at-table-p) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6441 (not (org-at-table-hline-p))) |
58792 | 6442 t |
6443 (let ((col (current-column)) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6444 (end (org-table-end))) |
58792 | 6445 (move-to-column col) |
6446 (while (and (< (point) end) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6447 (or (not (= (current-column) col)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6448 (org-at-table-hline-p))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6449 (beginning-of-line 2) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6450 (move-to-column col)) |
58792 | 6451 (if (and (org-at-table-p) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6452 (not (org-at-table-hline-p))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6453 t |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6454 (error |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6455 "Please position cursor in a data line for column operations"))))) |
58792 | 6456 |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
6457 (defun org-table-delete-column () |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
6458 "Delete a column into the table." |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
6459 (interactive) |
58792 | 6460 (if (not (org-at-table-p)) |
6461 (error "Not at a table")) | |
6462 (org-table-find-dataline) | |
6463 (org-table-check-inside-data-field) | |
6464 (let* ((col (org-table-current-column)) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6465 (beg (org-table-begin)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6466 (end (org-table-end)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6467 ;; Current cursor position |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6468 (linepos (+ (if (bolp) 1 0) (count-lines (point-min) (point)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6469 (colpos col)) |
58792 | 6470 (goto-char beg) |
6471 (while (< (point) end) | |
6472 (if (org-at-table-hline-p) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6473 nil |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6474 (org-table-goto-column col t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6475 (and (looking-at "|[^|\n]+|") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6476 (replace-match "|"))) |
58792 | 6477 (beginning-of-line 2)) |
6478 (move-marker end nil) | |
6479 (goto-line linepos) | |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
6480 (org-table-goto-column colpos) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
6481 (org-table-align) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
6482 (org-table-modify-formulas 'remove col))) |
58792 | 6483 |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
6484 (defun org-table-move-column-right () |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
6485 "Move column to the right." |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
6486 (interactive) |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
6487 (org-table-move-column nil)) |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
6488 (defun org-table-move-column-left () |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
6489 "Move column to the left." |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
6490 (interactive) |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
6491 (org-table-move-column 'left)) |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
6492 |
58792 | 6493 (defun org-table-move-column (&optional left) |
6494 "Move the current column to the right. With arg LEFT, move to the left." | |
6495 (interactive "P") | |
6496 (if (not (org-at-table-p)) | |
6497 (error "Not at a table")) | |
6498 (org-table-find-dataline) | |
6499 (org-table-check-inside-data-field) | |
6500 (let* ((col (org-table-current-column)) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6501 (col1 (if left (1- col) col)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6502 (beg (org-table-begin)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6503 (end (org-table-end)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6504 ;; Current cursor position |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6505 (linepos (+ (if (bolp) 1 0) (count-lines (point-min) (point)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6506 (colpos (if left (1- col) (1+ col)))) |
58792 | 6507 (if (and left (= col 1)) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6508 (error "Cannot move column further left")) |
58792 | 6509 (if (and (not left) (looking-at "[^|\n]*|[^|\n]*$")) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6510 (error "Cannot move column further right")) |
58792 | 6511 (goto-char beg) |
6512 (while (< (point) end) | |
6513 (if (org-at-table-hline-p) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6514 nil |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6515 (org-table-goto-column col1 t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6516 (and (looking-at "|\\([^|\n]+\\)|\\([^|\n]+\\)|") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6517 (replace-match "|\\2|\\1|"))) |
58792 | 6518 (beginning-of-line 2)) |
6519 (move-marker end nil) | |
6520 (goto-line linepos) | |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
6521 (org-table-goto-column colpos) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
6522 (org-table-align) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
6523 (org-table-modify-formulas 'swap col (if left (1- col) (1+ col))))) |
58792 | 6524 |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
6525 (defun org-table-move-row-down () |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6526 "move table row down." |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
6527 (interactive) |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
6528 (org-table-move-row nil)) |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
6529 (defun org-table-move-row-up () |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6530 "move table row up." |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
6531 (interactive) |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
6532 (org-table-move-row 'up)) |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
6533 |
58792 | 6534 (defun org-table-move-row (&optional up) |
62076
4f2150e05f24
(org-get-entries-from-diary): Remove unused vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61924
diff
changeset
|
6535 "Move the current table line down. With arg UP, move it up." |
58792 | 6536 (interactive "P") |
6537 (let ((col (current-column)) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6538 (pos (point)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6539 (tonew (if up 0 2)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6540 txt) |
58792 | 6541 (beginning-of-line tonew) |
6542 (if (not (org-at-table-p)) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6543 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6544 (goto-char pos) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6545 (error "Cannot move row further"))) |
58792 | 6546 (goto-char pos) |
6547 (beginning-of-line 1) | |
6548 (setq pos (point)) | |
6549 (setq txt (buffer-substring (point) (1+ (point-at-eol)))) | |
6550 (delete-region (point) (1+ (point-at-eol))) | |
6551 (beginning-of-line tonew) | |
6552 (insert txt) | |
6553 (beginning-of-line 0) | |
6554 (move-to-column col))) | |
6555 | |
6556 (defun org-table-insert-row (&optional arg) | |
6557 "Insert a new row above the current line into the table. | |
6558 With prefix ARG, insert below the current line." | |
6559 (interactive "P") | |
6560 (if (not (org-at-table-p)) | |
6561 (error "Not at a table")) | |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
6562 (let* ((line (buffer-substring-no-properties (point-at-bol) (point-at-eol))) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6563 new) |
58792 | 6564 (if (string-match "^[ \t]*|-" line) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6565 (setq new (mapcar (lambda (x) (if (member x '(?| ?+)) ?| ?\ )) line)) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
6566 (setq new (mapcar (lambda (x) (if (equal x ?|) ?| ?\ )) line))) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
6567 ;; Fix the first field if necessary |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
6568 (setq new (concat new)) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
6569 (if (string-match "^[ \t]*| *[#$] *|" line) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6570 (setq new (replace-match (match-string 0 line) t t new))) |
58792 | 6571 (beginning-of-line (if arg 2 1)) |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
6572 (let (org-table-may-need-update) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
6573 (insert-before-markers new) |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
6574 (insert-before-markers "\n")) |
58792 | 6575 (beginning-of-line 0) |
6576 (re-search-forward "| ?" (point-at-eol) t) | |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
6577 (and org-table-may-need-update (org-table-align)))) |
58792 | 6578 |
6579 (defun org-table-insert-hline (&optional arg) | |
6580 "Insert a horizontal-line below the current line into the table. | |
6581 With prefix ARG, insert above the current line." | |
6582 (interactive "P") | |
6583 (if (not (org-at-table-p)) | |
6584 (error "Not at a table")) | |
6585 (let ((line (buffer-substring-no-properties (point-at-bol) (point-at-eol))) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6586 (col (current-column)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6587 start) |
58792 | 6588 (if (string-match "^[ \t]*|-" line) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6589 (setq line |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6590 (mapcar (lambda (x) (if (member x '(?| ?+)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6591 (prog1 (if start ?+ ?|) (setq start t)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6592 (if start ?- ?\ ))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6593 line)) |
58792 | 6594 (setq line |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6595 (mapcar (lambda (x) (if (equal x ?|) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6596 (prog1 (if start ?+ ?|) (setq start t)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6597 (if start ?- ?\ ))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6598 line))) |
58792 | 6599 (beginning-of-line (if arg 1 2)) |
6600 (apply 'insert line) | |
6601 (if (equal (char-before (point)) ?+) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6602 (progn (backward-delete-char 1) (insert "|"))) |
58792 | 6603 (insert "\n") |
6604 (beginning-of-line 0) | |
6605 (move-to-column col))) | |
6606 | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
6607 (defun org-table-kill-row () |
58792 | 6608 "Delete the current row or horizontal line from the table." |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
6609 (interactive) |
58792 | 6610 (if (not (org-at-table-p)) |
6611 (error "Not at a table")) | |
6612 (let ((col (current-column))) | |
6613 (kill-region (point-at-bol) (min (1+ (point-at-eol)) (point-max))) | |
6614 (if (not (org-at-table-p)) (beginning-of-line 0)) | |
6615 (move-to-column col))) | |
6616 | |
6617 | |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
6618 (defun org-table-cut-region (beg end) |
58792 | 6619 "Copy region in table to the clipboard and blank all relevant fields." |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
6620 (interactive "r") |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
6621 (org-table-copy-region beg end 'cut)) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
6622 |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
6623 (defun org-table-copy-region (beg end &optional cut) |
58792 | 6624 "Copy rectangular region in table to clipboard. |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
6625 A special clipboard is used which can only be accessed |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6626 with `org-table-paste-rectangle'" |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
6627 (interactive "rP") |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
6628 (let* (l01 c01 l02 c02 l1 c1 l2 c2 ic1 ic2 |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6629 region cols |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6630 (rpl (if cut " " nil))) |
58792 | 6631 (goto-char beg) |
6632 (org-table-check-inside-data-field) | |
6633 (setq l01 (count-lines (point-min) (point)) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6634 c01 (org-table-current-column)) |
58792 | 6635 (goto-char end) |
6636 (org-table-check-inside-data-field) | |
6637 (setq l02 (count-lines (point-min) (point)) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6638 c02 (org-table-current-column)) |
58792 | 6639 (setq l1 (min l01 l02) l2 (max l01 l02) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6640 c1 (min c01 c02) c2 (max c01 c02)) |
58792 | 6641 (catch 'exit |
6642 (while t | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6643 (catch 'nextline |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6644 (if (> l1 l2) (throw 'exit t)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6645 (goto-line l1) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6646 (if (org-at-table-hline-p) (throw 'nextline (setq l1 (1+ l1)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6647 (setq cols nil ic1 c1 ic2 c2) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6648 (while (< ic1 (1+ ic2)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6649 (push (org-table-get-field ic1 rpl) cols) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6650 (setq ic1 (1+ ic1))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6651 (push (nreverse cols) region) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6652 (setq l1 (1+ l1))))) |
58792 | 6653 (setq org-table-clip (nreverse region)) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
6654 (if cut (org-table-align)) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
6655 org-table-clip)) |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
6656 |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
6657 (defun org-table-paste-rectangle () |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
6658 "Paste a rectangular region into a table. |
58792 | 6659 The upper right corner ends up in the current field. All involved fields |
6660 will be overwritten. If the rectangle does not fit into the present table, | |
6661 the table is enlarged as needed. The process ignores horizontal separator | |
6662 lines." | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
6663 (interactive) |
58792 | 6664 (unless (and org-table-clip (listp org-table-clip)) |
6665 (error "First cut/copy a region to paste!")) | |
6666 (org-table-check-inside-data-field) | |
6667 (let* ((clip org-table-clip) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6668 (line (count-lines (point-min) (point))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6669 (col (org-table-current-column)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6670 (org-enable-table-editor t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6671 (org-table-automatic-realign nil) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6672 c cols field) |
58792 | 6673 (while (setq cols (pop clip)) |
6674 (while (org-at-table-hline-p) (beginning-of-line 2)) | |
6675 (if (not (org-at-table-p)) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6676 (progn (end-of-line 0) (org-table-next-field))) |
58792 | 6677 (setq c col) |
6678 (while (setq field (pop cols)) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6679 (org-table-goto-column c nil 'force) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6680 (org-table-get-field nil field) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6681 (setq c (1+ c))) |
58792 | 6682 (beginning-of-line 2)) |
6683 (goto-line line) | |
6684 (org-table-goto-column col) | |
6685 (org-table-align))) | |
6686 | |
6687 (defun org-table-convert () | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
6688 "Convert from `org-mode' table to table.el and back. |
58792 | 6689 Obviously, this only works within limits. When an Org-mode table is |
6690 converted to table.el, all horizontal separator lines get lost, because | |
6691 table.el uses these as cell boundaries and has no notion of horizontal lines. | |
6692 A table.el table can be converted to an Org-mode table only if it does not | |
6693 do row or column spanning. Multiline cells will become multiple cells. | |
6694 Beware, Org-mode does not test if the table can be successfully converted - it | |
6695 blindly applies a recipe that works for simple tables." | |
6696 (interactive) | |
6697 (require 'table) | |
6698 (if (org-at-table.el-p) | |
6699 ;; convert to Org-mode table | |
6700 (let ((beg (move-marker (make-marker) (org-table-begin t))) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6701 (end (move-marker (make-marker) (org-table-end t)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6702 (table-unrecognize-region beg end) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6703 (goto-char beg) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6704 (while (re-search-forward "^\\([ \t]*\\)\\+-.*\n" end t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6705 (replace-match "")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6706 (goto-char beg)) |
58792 | 6707 (if (org-at-table-p) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6708 ;; convert to table.el table |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6709 (let ((beg (move-marker (make-marker) (org-table-begin))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6710 (end (move-marker (make-marker) (org-table-end)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6711 ;; first, get rid of all horizontal lines |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6712 (goto-char beg) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6713 (while (re-search-forward "^\\([ \t]*\\)|-.*\n" end t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6714 (replace-match "")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6715 ;; insert a hline before first |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6716 (goto-char beg) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6717 (org-table-insert-hline 'above) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6718 ;; insert a hline after each line |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6719 (while (progn (beginning-of-line 2) (< (point) end)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6720 (org-table-insert-hline)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6721 (goto-char beg) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6722 (setq end (move-marker end (org-table-end))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6723 ;; replace "+" at beginning and ending of hlines |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6724 (while (re-search-forward "^\\([ \t]*\\)|-" end t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6725 (replace-match "\\1+-")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6726 (goto-char beg) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6727 (while (re-search-forward "-|[ \t]*$" end t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6728 (replace-match "-+")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6729 (goto-char beg))))) |
58792 | 6730 |
6731 (defun org-table-wrap-region (arg) | |
6732 "Wrap several fields in a column like a paragraph. | |
6733 This is useful if you'd like to spread the contents of a field over several | |
6734 lines, in order to keep the table compact. | |
6735 | |
6736 If there is an active region, and both point and mark are in the same column, | |
6737 the text in the column is wrapped to minimum width for the given number of | |
6738 lines. Generally, this makes the table more compact. A prefix ARG may be | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
6739 used to change the number of desired lines. For example, `C-2 \\[org-table-wrap]' |
58792 | 6740 formats the selected text to two lines. If the region was longer than 2 |
6741 lines, the remaining lines remain empty. A negative prefix argument reduces | |
6742 the current number of lines by that amount. The wrapped text is pasted back | |
6743 into the table. If you formatted it to more lines than it was before, fields | |
6744 further down in the table get overwritten - so you might need to make space in | |
6745 the table first. | |
6746 | |
6747 If there is no region, the current field is split at the cursor position and | |
6748 the text fragment to the right of the cursor is prepended to the field one | |
6749 line down. | |
6750 | |
6751 If there is no region, but you specify a prefix ARG, the current field gets | |
6752 blank, and the content is appended to the field above." | |
6753 (interactive "P") | |
6754 (org-table-check-inside-data-field) | |
6755 (if (org-region-active-p) | |
6756 ;; There is a region: fill as a paragraph | |
6757 (let ((beg (region-beginning)) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6758 nlines) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6759 (org-table-cut-region (region-beginning) (region-end)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6760 (if (> (length (car org-table-clip)) 1) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6761 (error "Region must be limited to single column")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6762 (setq nlines (if arg |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6763 (if (< arg 1) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6764 (+ (length org-table-clip) arg) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6765 arg) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6766 (length org-table-clip))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6767 (setq org-table-clip |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6768 (mapcar 'list (org-wrap (mapconcat 'car org-table-clip " ") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6769 nil nlines))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6770 (goto-char beg) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6771 (org-table-paste-rectangle)) |
58792 | 6772 ;; No region, split the current field at point |
6773 (if arg | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6774 ;; combine with field above |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6775 (let ((s (org-table-blank-field)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6776 (col (org-table-current-column))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6777 (beginning-of-line 0) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6778 (while (org-at-table-hline-p) (beginning-of-line 0)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6779 (org-table-goto-column col) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6780 (skip-chars-forward "^|") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6781 (skip-chars-backward " ") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6782 (insert " " (org-trim s)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6783 (org-table-align)) |
58792 | 6784 ;; split field |
6785 (when (looking-at "\\([^|]+\\)+|") | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6786 (let ((s (match-string 1))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6787 (replace-match " |") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6788 (goto-char (match-beginning 0)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6789 (org-table-next-row) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6790 (insert (org-trim s) " ") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6791 (org-table-align)))))) |
58792 | 6792 |
6793 (defun org-trim (s) | |
6794 "Remove whitespace at beginning and end of string." | |
6795 (if (string-match "^[ \t]+" s) (setq s (replace-match "" t t s))) | |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
6796 (if (string-match "[ \t]+$" s) (setq s (replace-match "" t t s))) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
6797 s) |
58792 | 6798 |
6799 (defun org-wrap (string &optional width lines) | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
6800 "Wrap string to either a number of lines, or a width in characters. |
58792 | 6801 If WIDTH is non-nil, the string is wrapped to that width, however many lines |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
6802 that costs. If there is a word longer than WIDTH, the text is actually |
58792 | 6803 wrapped to the length of that word. |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
6804 IF WIDTH is nil and LINES is non-nil, the string is forced into at most that |
58792 | 6805 many lines, whatever width that takes. |
6806 The return value is a list of lines, without newlines at the end." | |
6807 (let* ((words (org-split-string string "[ \t\n]+")) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6808 (maxword (apply 'max (mapcar 'length words))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6809 w ll) |
58792 | 6810 (cond (width |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6811 (org-do-wrap words (max maxword width))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6812 (lines |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6813 (setq w maxword) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6814 (setq ll (org-do-wrap words maxword)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6815 (if (<= (length ll) lines) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6816 ll |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6817 (setq ll words) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6818 (while (> (length ll) lines) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6819 (setq w (1+ w)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6820 (setq ll (org-do-wrap words w))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6821 ll)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6822 (t (error "Cannot wrap this"))))) |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
6823 |
58792 | 6824 |
6825 (defun org-do-wrap (words width) | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
6826 "Create lines of maximum width WIDTH (in characters) from word list WORDS." |
58792 | 6827 (let (lines line) |
6828 (while words | |
6829 (setq line (pop words)) | |
6830 (while (and words (< (+ (length line) (length (car words))) width)) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6831 (setq line (concat line " " (pop words)))) |
58792 | 6832 (setq lines (push line lines))) |
6833 (nreverse lines))) | |
6834 | |
6835 ;; FIXME: I think I can make this more efficient | |
6836 (defun org-split-string (string &optional separators) | |
6837 "Splits STRING into substrings at SEPARATORS. | |
6838 No empty strings are returned if there are matches at the beginning | |
6839 and end of string." | |
6840 (let ((rexp (or separators "[ \f\t\n\r\v]+")) | |
6841 (start 0) | |
6842 notfirst | |
6843 (list nil)) | |
6844 (while (and (string-match rexp string | |
6845 (if (and notfirst | |
6846 (= start (match-beginning 0)) | |
6847 (< start (length string))) | |
6848 (1+ start) start)) | |
6849 (< (match-beginning 0) (length string))) | |
6850 (setq notfirst t) | |
6851 (or (eq (match-beginning 0) 0) | |
6852 (and (eq (match-beginning 0) (match-end 0)) | |
6853 (eq (match-beginning 0) start)) | |
6854 (setq list | |
6855 (cons (substring string start (match-beginning 0)) | |
6856 list))) | |
6857 (setq start (match-end 0))) | |
6858 (or (eq start (length string)) | |
6859 (setq list | |
6860 (cons (substring string start) | |
6861 list))) | |
6862 (nreverse list))) | |
6863 | |
6864 (defun org-table-add-invisible-to-vertical-lines () | |
6865 "Add an `invisible' property to vertical lines of current table." | |
6866 (interactive) | |
6867 (let* ((beg (org-table-begin)) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6868 (end (org-table-end)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6869 (end1)) |
58792 | 6870 (save-excursion |
6871 (goto-char beg) | |
6872 (while (< (point) end) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6873 (setq end1 (point-at-eol)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6874 (if (looking-at org-table-dataline-regexp) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6875 (while (re-search-forward "|" end1 t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6876 (add-text-properties (1- (point)) (point) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6877 '(invisible org-table))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6878 (while (re-search-forward "[+|]" end1 t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6879 (add-text-properties (1- (point)) (point) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6880 '(invisible org-table)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6881 (beginning-of-line 2))))) |
58792 | 6882 |
6883 (defun org-table-toggle-vline-visibility (&optional arg) | |
6884 "Toggle the visibility of table vertical lines. | |
6885 The effect is immediate and on all tables in the file. | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
6886 With prefix ARG, make lines invisible when ARG is positive, make lines |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6887 visible when ARG is not positive" |
58792 | 6888 (interactive "P") |
6889 (let ((action (cond | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6890 ((and arg (> (prefix-numeric-value arg) 0)) 'on) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6891 ((and arg (< (prefix-numeric-value arg) 1)) 'off) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6892 (t (if (org-in-invisibility-spec-p '(org-table)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6893 'off |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6894 'on))))) |
58792 | 6895 (if (eq action 'off) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6896 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6897 (org-remove-from-invisibility-spec '(org-table)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6898 (org-table-map-tables 'org-table-align) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6899 (message "Vertical table lines visible") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6900 (if (org-at-table-p) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6901 (org-table-align))) |
58792 | 6902 (org-add-to-invisibility-spec '(org-table)) |
6903 (org-table-map-tables 'org-table-align) | |
6904 (message "Vertical table lines invisible")) | |
6905 (redraw-frame (selected-frame)))) | |
6906 | |
6907 (defun org-table-map-tables (function) | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
6908 "Apply FUNCTION to the start of all tables in the buffer." |
58792 | 6909 (save-excursion |
6910 (save-restriction | |
6911 (widen) | |
6912 (goto-char (point-min)) | |
6913 (while (re-search-forward org-table-any-line-regexp nil t) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6914 (message "Mapping tables: %d%%" (/ (* 100.0 (point)) (buffer-size))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6915 (beginning-of-line 1) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6916 (if (looking-at org-table-line-regexp) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6917 (save-excursion (funcall function))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6918 (re-search-forward org-table-any-border-regexp nil 1))))) |
58792 | 6919 |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
6920 (defun org-table-sum (&optional beg end nlast) |
58792 | 6921 "Sum numbers in region of current table column. |
6922 The result will be displayed in the echo area, and will be available | |
6923 as kill to be inserted with \\[yank]. | |
6924 | |
6925 If there is an active region, it is interpreted as a rectangle and all | |
6926 numbers in that rectangle will be summed. If there is no active | |
6927 region and point is located in a table column, sum all numbers in that | |
6928 column. | |
6929 | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
6930 If at least one number looks like a time HH:MM or HH:MM:SS, all other |
58792 | 6931 numbers are assumed to be times as well (in decimal hours) and the |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
6932 numbers are added as such. |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
6933 |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
6934 If NLAST is a number, only the NLAST fields will actually be summed." |
58792 | 6935 (interactive) |
6936 (save-excursion | |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
6937 (let (col (timecnt 0) diff h m s org-table-clip) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
6938 (cond |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
6939 ((and beg end)) ; beg and end given explicitly |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
6940 ((org-region-active-p) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6941 (setq beg (region-beginning) end (region-end))) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
6942 (t |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6943 (setq col (org-table-current-column)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6944 (goto-char (org-table-begin)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6945 (unless (re-search-forward "^[ \t]*|[^-]" nil t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6946 (error "No table data")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6947 (org-table-goto-column col) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
6948 ;not needed? (skip-chars-backward "^|") |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6949 (setq beg (point)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6950 (goto-char (org-table-end)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6951 (unless (re-search-backward "^[ \t]*|[^-]" nil t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6952 (error "No table data")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6953 (org-table-goto-column col) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
6954 ;not needed? (skip-chars-forward "^|") |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6955 (setq end (point)))) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
6956 (let* ((items (apply 'append (org-table-copy-region beg end))) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6957 (items1 (cond ((not nlast) items) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6958 ((>= nlast (length items)) items) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6959 (t (setq items (reverse items)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6960 (setcdr (nthcdr (1- nlast) items) nil) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6961 (nreverse items)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6962 (numbers (delq nil (mapcar 'org-table-get-number-for-summing |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6963 items1))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6964 (res (apply '+ numbers)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6965 (sres (if (= timecnt 0) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6966 (format "%g" res) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6967 (setq diff (* 3600 res) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6968 h (floor (/ diff 3600)) diff (mod diff 3600) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6969 m (floor (/ diff 60)) diff (mod diff 60) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6970 s diff) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6971 (format "%d:%02d:%02d" h m s)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6972 (kill-new sres) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6973 (if (interactive-p) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6974 (message (substitute-command-keys |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6975 (format "Sum of %d items: %-20s (\\[yank] will insert result into buffer)" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6976 (length numbers) sres)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6977 sres)))) |
58792 | 6978 |
6979 (defun org-table-get-number-for-summing (s) | |
6980 (let (n) | |
6981 (if (string-match "^ *|? *" s) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6982 (setq s (replace-match "" nil nil s))) |
58792 | 6983 (if (string-match " *|? *$" s) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6984 (setq s (replace-match "" nil nil s))) |
58792 | 6985 (setq n (string-to-number s)) |
6986 (cond | |
6987 ((and (string-match "0" s) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6988 (string-match "\\`[-+ \t0.edED]+\\'" s)) 0) |
58792 | 6989 ((string-match "\\`[ \t]+\\'" s) nil) |
6990 ((string-match "\\`\\([0-9]+\\):\\([0-9]+\\)\\(:\\([0-9]+\\)\\)?\\'" s) | |
6991 (let ((h (string-to-number (or (match-string 1 s) "0"))) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6992 (m (string-to-number (or (match-string 2 s) "0"))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6993 (s (string-to-number (or (match-string 4 s) "0")))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6994 (if (boundp 'timecnt) (setq timecnt (1+ timecnt))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
6995 (* 1.0 (+ h (/ m 60.0) (/ s 3600.0))))) |
58792 | 6996 ((equal n 0) nil) |
6997 (t n)))) | |
6998 | |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
6999 (defun org-table-get-vertical-vector (desc &optional tbeg col) |
64518
7b82147924c7
(org-table-formula-substitute-names, org-table-get-vertical-vector): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents:
64515
diff
changeset
|
7000 "Get a calc vector from a column, according to descriptor DESC. |
7b82147924c7
(org-table-formula-substitute-names, org-table-get-vertical-vector): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents:
64515
diff
changeset
|
7001 Optional arguments TBEG and COL can give the beginning of the table |
7b82147924c7
(org-table-formula-substitute-names, org-table-get-vertical-vector): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents:
64515
diff
changeset
|
7002 and the current column, to avoid unnecessary parsing." |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7003 (save-excursion |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7004 (or tbeg (setq tbeg (org-table-begin))) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7005 (or col (setq col (org-table-current-column))) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7006 (let (beg end nn n n1 n2 l (thisline (org-current-line)) hline-list) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7007 (cond |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7008 ((string-match "\\(I+\\)\\(-\\(I+\\)\\)?" desc) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7009 (setq n1 (- (match-end 1) (match-beginning 1))) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7010 (if (match-beginning 3) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7011 (setq n2 (- (match-end 2) (match-beginning 3)))) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7012 (setq n (if n2 (max n1 n2) n1)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7013 (setq n1 (if n2 (min n1 n2))) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7014 (setq nn n) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7015 (while (and (> nn 0) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7016 (re-search-backward org-table-hline-regexp tbeg t)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7017 (push (org-current-line) hline-list) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7018 (setq nn (1- nn))) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7019 (setq hline-list (nreverse hline-list)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7020 (goto-line (nth (1- n) hline-list)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7021 (when (re-search-forward org-table-dataline-regexp) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7022 (org-table-goto-column col) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7023 (setq beg (point))) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7024 (goto-line (if n1 (nth (1- n1) hline-list) thisline)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7025 (when (re-search-backward org-table-dataline-regexp) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7026 (org-table-goto-column col) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7027 (setq end (point))) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7028 (setq l (apply 'append (org-table-copy-region beg end))) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7029 (concat "[" (mapconcat (lambda (x) (setq x (org-trim x)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7030 (if (equal x "") "0" x)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7031 l ",") "]")) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7032 ((string-match "\\([0-9]+\\)-\\([0-9]+\\)" desc) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7033 (setq n1 (string-to-number (match-string 1 desc)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7034 n2 (string-to-number (match-string 2 desc))) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7035 (beginning-of-line 1) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7036 (save-excursion |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7037 (when (re-search-backward org-table-dataline-regexp tbeg t n1) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7038 (org-table-goto-column col) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7039 (setq beg (point)))) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7040 (when (re-search-backward org-table-dataline-regexp tbeg t n2) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7041 (org-table-goto-column col) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7042 (setq end (point))) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7043 (setq l (apply 'append (org-table-copy-region beg end))) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7044 (concat "[" (mapconcat |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7045 (lambda (x) (setq x (org-trim x)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7046 (if (equal x "") "0" x)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7047 l ",") "]")) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7048 ((string-match "\\([0-9]+\\)" desc) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7049 (beginning-of-line 1) |
64518
7b82147924c7
(org-table-formula-substitute-names, org-table-get-vertical-vector): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents:
64515
diff
changeset
|
7050 (when (re-search-backward org-table-dataline-regexp tbeg t |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7051 (string-to-number (match-string 0 desc))) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7052 (org-table-goto-column col) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7053 (org-trim (org-table-get-field)))))))) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7054 |
58792 | 7055 (defvar org-table-formula-history nil) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7056 |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7057 (defvar org-table-column-names nil |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7058 "Alist with column names, derived from the `!' line.") |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7059 (defvar org-table-column-name-regexp nil |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7060 "Regular expression matching the current column names.") |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7061 (defvar org-table-local-parameters nil |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7062 "Alist with parameter names, derived from the `$' line.") |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7063 (defvar org-table-named-field-locations nil |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7064 "Alist with locations of named fields.") |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7065 |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7066 (defun org-table-get-formula (&optional equation named) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7067 "Read a formula from the minibuffer, offer stored formula as default." |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7068 (let* ((name (car (rassoc (list (org-current-line) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7069 (org-table-current-column)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7070 org-table-named-field-locations))) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7071 (scol (if named |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7072 (if name name |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7073 (error "Not in a named field")) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7074 (int-to-string (org-table-current-column)))) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7075 (dummy (and name (not named) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7076 (not (y-or-n-p "Replace named-field formula with column equation? " )) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7077 (error "Abort"))) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7078 (org-table-may-need-update nil) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7079 (stored-list (org-table-get-stored-formulas)) |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7080 (stored (cdr (assoc scol stored-list))) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7081 (eq (cond |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7082 ((and stored equation (string-match "^ *= *$" equation)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7083 stored) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7084 ((stringp equation) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7085 equation) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7086 (t (read-string |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7087 (format "%s formula $%s=" (if named "Field" "Column") scol) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7088 (or stored "") 'org-table-formula-history |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7089 ;stored |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7090 )))) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7091 mustsave) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7092 (when (not (string-match "\\S-" eq)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7093 ;; remove formula |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7094 (setq stored-list (delq (assoc scol stored-list) stored-list)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7095 (org-table-store-formulas stored-list) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7096 (error "Formula removed")) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7097 (if (string-match "^ *=?" eq) (setq eq (replace-match "" t t eq))) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7098 (if (string-match " *$" eq) (setq eq (replace-match "" t t eq))) |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7099 (if (and name (not named)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7100 ;; We set the column equation, delete the named one. |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7101 (setq stored-list (delq (assoc name stored-list) stored-list) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7102 mustsave t)) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7103 (if stored |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7104 (setcdr (assoc scol stored-list) eq) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7105 (setq stored-list (cons (cons scol eq) stored-list))) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7106 (if (or mustsave (not (equal stored eq))) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7107 (org-table-store-formulas stored-list)) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7108 eq)) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7109 |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7110 (defun org-table-store-formulas (alist) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7111 "Store the list of formulas below the current table." |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7112 (setq alist (sort alist (lambda (a b) (string< (car a) (car b))))) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7113 (save-excursion |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7114 (goto-char (org-table-end)) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7115 (if (looking-at "\\([ \t]*\n\\)*#\\+TBLFM:.*\n?") |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7116 (delete-region (point) (match-end 0))) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7117 (insert "#+TBLFM: " |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7118 (mapconcat (lambda (x) |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7119 (concat "$" (car x) "=" (cdr x))) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7120 alist "::") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7121 "\n"))) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7122 |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7123 (defun org-table-get-stored-formulas () |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7124 "Return an alist with the t=stored formulas directly after current table." |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7125 (interactive) |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7126 (let (scol eq eq-alist strings string seen) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7127 (save-excursion |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7128 (goto-char (org-table-end)) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7129 (when (looking-at "\\([ \t]*\n\\)*#\\+TBLFM: *\\(.*\\)") |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7130 (setq strings (org-split-string (match-string 2) " *:: *")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7131 (while (setq string (pop strings)) |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7132 (when (string-match "\\$\\([a-zA-Z0-9]+\\) *= *\\(.*[^ \t]\\)" string) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7133 (setq scol (match-string 1 string) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7134 eq (match-string 2 string) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7135 eq-alist (cons (cons scol eq) eq-alist)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7136 (if (member scol seen) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7137 (error "Double definition `$%s=' in TBLFM line, please fix by hand" scol) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7138 (push scol seen)))))) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7139 (nreverse eq-alist))) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7140 |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7141 (defun org-table-modify-formulas (action &rest columns) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7142 "Modify the formulas stored below the current table. |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7143 ACTION can be `remove', `insert', `swap'. For `swap', two column numbers are |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7144 expected, for the other action only a single column number is needed." |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7145 (let ((list (org-table-get-stored-formulas)) |
64518
7b82147924c7
(org-table-formula-substitute-names, org-table-get-vertical-vector): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents:
64515
diff
changeset
|
7146 (nmax (length (org-split-string |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7147 (buffer-substring (point-at-bol) (point-at-eol)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7148 "|"))) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7149 col col1 col2 scol si sc1 sc2) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7150 (cond |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7151 ((null list)) ; No action needed if there are no stored formulas |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7152 ((eq action 'remove) |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7153 (setq col (car columns) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7154 scol (int-to-string col)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7155 (org-table-replace-in-formulas list scol "INVALID") |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7156 (if (assoc scol list) (setq list (delq (assoc scol list) list))) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7157 (loop for i from (1+ col) upto nmax by 1 do |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7158 (setq si (int-to-string i)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7159 (org-table-replace-in-formulas list si (int-to-string (1- i))) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7160 (if (assoc si list) (setcar (assoc si list) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7161 (int-to-string (1- i)))))) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7162 ((eq action 'insert) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7163 (setq col (car columns)) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7164 (loop for i from nmax downto col by 1 do |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7165 (setq si (int-to-string i)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7166 (org-table-replace-in-formulas list si (int-to-string (1+ i))) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7167 (if (assoc si list) (setcar (assoc si list) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7168 (int-to-string (1+ i)))))) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7169 ((eq action 'swap) |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7170 (setq col1 (car columns) col2 (nth 1 columns) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7171 sc1 (int-to-string col1) sc2 (int-to-string col2)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7172 ;; Hopefully, ZqZ will never be a name in a table... FIXME: |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7173 (org-table-replace-in-formulas list sc1 "ZqZ") |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7174 (org-table-replace-in-formulas list sc2 sc1) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7175 (org-table-replace-in-formulas list "ZqZ" sc2) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7176 (if (assoc sc1 list) (setcar (assoc sc1 list) "ZqZ")) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7177 (if (assoc sc2 list) (setcar (assoc sc2 list) sc1)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7178 (if (assoc "ZqZ" list) (setcar (assoc "ZqZ" list) sc2))) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7179 (t (error "Invalid action in `org-table-modify-formulas'"))) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7180 (if list (org-table-store-formulas list)))) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7181 |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7182 (defun org-table-replace-in-formulas (list s1 s2) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7183 (let (elt re s) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7184 (setq s1 (concat "$" (if (integerp s1) (int-to-string s1) s1)) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7185 s2 (concat "$" (if (integerp s2) (int-to-string s2) s2)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7186 re (concat (regexp-quote s1) "\\>")) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7187 (while (setq elt (pop list)) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7188 (setq s (cdr elt)) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7189 (while (string-match re s) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7190 (setq s (replace-match s2 t t s))) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7191 (setcdr elt s)))) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7192 |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7193 (defun org-table-get-specials () |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7194 "Get the column nmaes and local parameters for this table." |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7195 (save-excursion |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7196 (let ((beg (org-table-begin)) (end (org-table-end)) |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7197 names name fields fields1 field cnt c v line col) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7198 (setq org-table-column-names nil |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7199 org-table-local-parameters nil |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7200 org-table-named-field-locations nil) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7201 (goto-char beg) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7202 (when (re-search-forward "^[ \t]*| *! *\\(|.*\\)" end t) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7203 (setq names (org-split-string (match-string 1) " *| *") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7204 cnt 1) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7205 (while (setq name (pop names)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7206 (setq cnt (1+ cnt)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7207 (if (string-match "^[a-zA-Z][a-zA-Z0-9]*$" name) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7208 (push (cons name (int-to-string cnt)) org-table-column-names)))) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7209 (setq org-table-column-names (nreverse org-table-column-names)) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7210 (setq org-table-column-name-regexp |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7211 (concat "\\$\\(" (mapconcat 'car org-table-column-names "\\|") "\\)\\>")) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7212 (goto-char beg) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7213 (while (re-search-forward "^[ \t]*| *\\$ *\\(|.*\\)" end t) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7214 (setq fields (org-split-string (match-string 1) " *| *")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7215 (while (setq field (pop fields)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7216 (if (string-match "^\\([a-zA-Z][a-zA-Z0-9]*\\|%\\) *= *\\(.*\\)" field) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7217 (push (cons (match-string 1 field) (match-string 2 field)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7218 org-table-local-parameters)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7219 (goto-char beg) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7220 (while (re-search-forward "^[ \t]*| *\\([_^]\\) *\\(|.*\\)" end t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7221 (setq c (match-string 1) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7222 fields (org-split-string (match-string 2) " *| *")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7223 (save-excursion |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7224 (beginning-of-line (if (equal c "_") 2 0)) |
64518
7b82147924c7
(org-table-formula-substitute-names, org-table-get-vertical-vector): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents:
64515
diff
changeset
|
7225 (setq line (org-current-line) col 1) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7226 (and (looking-at "^[ \t]*|[^|]*\\(|.*\\)") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7227 (setq fields1 (org-split-string (match-string 1) " *| *")))) |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7228 (while (and fields1 (setq field (pop fields))) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7229 (setq v (pop fields1) col (1+ col)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7230 (when (and (stringp field) (stringp v) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7231 (string-match "^[a-zA-Z][a-zA-Z0-9]*$" field)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7232 (push (cons field v) org-table-local-parameters) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7233 (push (list field line col) org-table-named-field-locations))))))) |
58792 | 7234 |
7235 (defun org-this-word () | |
7236 ;; Get the current word | |
7237 (save-excursion | |
7238 (let ((beg (progn (skip-chars-backward "^ \t\n") (point))) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7239 (end (progn (skip-chars-forward "^ \t\n") (point)))) |
58792 | 7240 (buffer-substring-no-properties beg end)))) |
7241 | |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7242 (defun org-table-maybe-eval-formula () |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7243 "Check if the current field starts with \"=\" or \":=\". |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7244 If yes, store the formula and apply it." |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7245 ;; We already know we are in a table. Get field will only return a formula |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7246 ;; when appropriate. It might return a separator line, but no problem. |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7247 (when org-table-formula-evaluate-inline |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7248 (let* ((field (org-trim (or (org-table-get-field) ""))) |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7249 named eq) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7250 (when (string-match "^:?=\\(.+\\)" field) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7251 (setq named (equal (string-to-char field) ?:) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7252 eq (match-string 1 field)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7253 (if (fboundp 'calc-eval) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7254 (org-table-eval-formula (if named '(4) nil) eq)))))) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7255 |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7256 (defvar org-recalc-commands nil |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7257 "List of commands triggering the reccalculation of a line. |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7258 Will be filled automatically during use.") |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7259 |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7260 (defvar org-recalc-marks |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7261 '((" " . "Unmarked: no special line, no automatic recalculation") |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7262 ("#" . "Automatically recalculate this line upon TAB, RET, and C-c C-c in the line") |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7263 ("*" . "Recalculate only when entire table is recalculated with `C-u C-c *'") |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7264 ("!" . "Column name definition line. Reference in formula as $name.") |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7265 ("$" . "Parameter definition line name=value. Reference in formula as $name.") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7266 ("_" . "Names for values in row below this one.") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7267 ("^" . "Names for values in row above this one."))) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7268 |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7269 (defun org-table-rotate-recalc-marks (&optional newchar) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7270 "Rotate the recalculation mark in the first column. |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7271 If in any row, the first field is not consistent with a mark, |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7272 insert a new column for the makers. |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7273 When there is an active region, change all the lines in the region, |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7274 after prompting for the marking character. |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7275 After each change, a message will be displayed indication the meaning |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7276 of the new mark." |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7277 (interactive) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7278 (unless (org-at-table-p) (error "Not at a table")) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7279 (let* ((marks (append (mapcar 'car org-recalc-marks) '(" "))) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7280 (beg (org-table-begin)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7281 (end (org-table-end)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7282 (l (org-current-line)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7283 (l1 (if (org-region-active-p) (org-current-line (region-beginning)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7284 (l2 (if (org-region-active-p) (org-current-line (region-end)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7285 (have-col |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7286 (save-excursion |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7287 (goto-char beg) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7288 (not (re-search-forward "^[ \t]*|[^-|][^|]*[^#!$*_^| \t][^|]*|" end t)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7289 (col (org-table-current-column)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7290 (forcenew (car (assoc newchar org-recalc-marks))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7291 epos new) |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7292 (when l1 |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7293 (message "Change region to what mark? Type # * ! $ or SPC: ") |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7294 (setq newchar (char-to-string (read-char-exclusive)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7295 forcenew (car (assoc newchar org-recalc-marks)))) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7296 (if (and newchar (not forcenew)) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7297 (error "Invalid NEWCHAR `%s' in `org-table-rotate-recalc-marks'" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7298 newchar)) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7299 (if l1 (goto-line l1)) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7300 (save-excursion |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7301 (beginning-of-line 1) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7302 (unless (looking-at org-table-dataline-regexp) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7303 (error "Not at a table data line"))) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7304 (unless have-col |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7305 (org-table-goto-column 1) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7306 (org-table-insert-column) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7307 (org-table-goto-column (1+ col))) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7308 (setq epos (point-at-eol)) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7309 (save-excursion |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7310 (beginning-of-line 1) |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
7311 (org-table-get-field |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7312 1 (if (looking-at "^[ \t]*| *\\([#!$*^_ ]\\) *|") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7313 (concat " " |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7314 (setq new (or forcenew |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7315 (cadr (member (match-string 1) marks)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7316 " ") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7317 " # "))) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7318 (if (and l1 l2) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7319 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7320 (goto-line l1) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7321 (while (progn (beginning-of-line 2) (not (= (org-current-line) l2))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7322 (and (looking-at org-table-dataline-regexp) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7323 (org-table-get-field 1 (concat " " new " ")))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7324 (goto-line l1))) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7325 (if (not (= epos (point-at-eol))) (org-table-align)) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7326 (goto-line l) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7327 (and (interactive-p) (message (cdr (assoc new org-recalc-marks)))))) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7328 |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7329 (defun org-table-maybe-recalculate-line () |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7330 "Recompute the current line if marked for it, and if we haven't just done it." |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7331 (interactive) |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7332 (and org-table-allow-automatic-line-recalculation |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7333 (not (and (memq last-command org-recalc-commands) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7334 (equal org-last-recalc-line (org-current-line)))) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7335 (save-excursion (beginning-of-line 1) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7336 (looking-at org-table-auto-recalculate-regexp)) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7337 (fboundp 'calc-eval) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7338 (org-table-recalculate) t)) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7339 |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7340 (defvar org-table-formula-debug nil |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7341 "Non-nil means, debug table formulas. |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7342 When nil, simply write \"#ERROR\" in corrupted fields.") |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7343 |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7344 (defvar modes) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7345 (defsubst org-set-calc-mode (var &optional value) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7346 (if (stringp var) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7347 (setq var (assoc var '(("D" calc-angle-mode deg) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7348 ("R" calc-angle-mode rad) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7349 ("F" calc-prefer-frac t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7350 ("S" calc-symbolic-mode t))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7351 value (nth 2 var) var (nth 1 var))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7352 (if (memq var modes) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7353 (setcar (cdr (memq var modes)) value) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7354 (cons var (cons value modes))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7355 modes) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7356 |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7357 (defun org-table-eval-formula (&optional arg equation |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7358 suppress-align suppress-const |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7359 suppress-store) |
58792 | 7360 "Replace the table field value at the cursor by the result of a calculation. |
7361 | |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7362 This function makes use of Dave Gillespie's calc package, in my view the |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7363 most exciting program ever written for GNU Emacs. So you need to have calc |
58792 | 7364 installed in order to use this function. |
7365 | |
7366 In a table, this command replaces the value in the current field with the | |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7367 result of a formula. It also installes the formula as the \"current\" column |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7368 formula, by storing it in a special line below the table. When called |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7369 with a `C-u' prefix, the current field must ba a named field, and the |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7370 formula is installed as valid in only this specific field. |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7371 |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7372 When called, the command first prompts for a formula, which is read in |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7373 the minibuffer. Previously entered formulas are available through the |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7374 history list, and the last used formula is offered as a default. |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7375 These stored formulas are adapted correctly when moving, inserting, or |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7376 deleting columns with the corresponding commands. |
58792 | 7377 |
7378 The formula can be any algebraic expression understood by the calc package. | |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7379 For details, see the Org-mode manual. |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7380 |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7381 This function can also be called from Lisp programs and offers |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7382 additional Arguments: EQUATION can be the formula to apply. If this |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7383 argument is given, the user will not be prompted. SUPPRESS-ALIGN is |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7384 used to speed-up recursive calls by by-passing unnecessary aligns. |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7385 SUPPRESS-CONST suppresses the interpretation of constants in the |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7386 formula, assuming that this has been done already outside the fuction. |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7387 SUPPRESS-STORE means the formula should not be stored, either because |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7388 it is already stored, or because it is a modified equation that should |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7389 not overwrite the stored one." |
58792 | 7390 (interactive "P") |
7391 (require 'calc) | |
7392 (org-table-check-inside-data-field) | |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7393 (org-table-get-specials) |
58792 | 7394 (let* (fields |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7395 (ndown (if (integerp arg) arg 1)) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7396 (org-table-automatic-realign nil) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7397 (case-fold-search nil) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7398 (down (> ndown 1)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7399 (formula (if (and equation suppress-store) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7400 equation |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7401 (org-table-get-formula equation (equal arg '(4))))) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7402 (n0 (org-table-current-column)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7403 (modes (copy-sequence org-calc-default-modes)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7404 n form fmt x ev orig c) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7405 ;; Parse the format string. Since we have a lot of modes, this is |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7406 ;; a lot of work. However, I think calc still uses most of the time. |
58792 | 7407 (if (string-match ";" formula) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7408 (let ((tmp (org-split-string formula ";"))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7409 (setq formula (car tmp) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7410 fmt (concat (cdr (assoc "%" org-table-local-parameters)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7411 (nth 1 tmp))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7412 (while (string-match "[pnfse]\\(-?[0-9]+\\)" fmt) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7413 (setq c (string-to-char (match-string 1 fmt)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7414 n (string-to-number (or (match-string 1 fmt) ""))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7415 (if (= c ?p) (setq modes (org-set-calc-mode 'calc-internal-prec n)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7416 (setq modes (org-set-calc-mode |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7417 'calc-float-format |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7418 (list (cdr (assoc c '((?n. float) (?f. fix) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7419 (?s. sci) (?e. eng)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7420 n)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7421 (setq fmt (replace-match "" t t fmt))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7422 (while (string-match "[DRFS]" fmt) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7423 (setq modes (org-set-calc-mode (match-string 0 fmt))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7424 (setq fmt (replace-match "" t t fmt))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7425 (unless (string-match "\\S-" fmt) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7426 (setq fmt nil)))) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7427 (if (and (not suppress-const) org-table-formula-use-constants) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7428 (setq formula (org-table-formula-substitute-names formula))) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7429 (setq orig (or (get-text-property 1 :orig-formula formula) "?")) |
58792 | 7430 (while (> ndown 0) |
7431 (setq fields (org-split-string | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7432 (buffer-substring |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7433 (point-at-bol) (point-at-eol)) " *| *")) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7434 (if org-table-formula-numbers-only |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7435 (setq fields (mapcar |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7436 (lambda (x) (number-to-string (string-to-number x))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7437 fields))) |
58792 | 7438 (setq ndown (1- ndown)) |
7439 (setq form (copy-sequence formula)) | |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7440 ;; Insert the references to fields in same row |
58792 | 7441 (while (string-match "\\$\\([0-9]+\\)?" form) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7442 (setq n (if (match-beginning 1) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7443 (string-to-int (match-string 1 form)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7444 n0) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7445 x (nth (1- n) fields)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7446 (unless x (error "Invalid field specifier \"%s\"" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7447 (match-string 0 form))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7448 (if (equal x "") (setq x "0")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7449 (setq form (replace-match (concat "(" x ")") t t form))) |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7450 ;; Insert ranges in current column |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7451 (while (string-match "\\&[-I0-9]+" form) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7452 (setq form (replace-match |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7453 (save-match-data |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7454 (org-table-get-vertical-vector (match-string 0 form) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7455 nil n0)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7456 t t form))) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7457 (setq ev (calc-eval (cons form modes) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7458 (if org-table-formula-numbers-only 'num))) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7459 |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7460 (when org-table-formula-debug |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7461 (with-output-to-temp-buffer "*Help*" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7462 (princ (format "Substitution history of formula |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7463 Orig: %s |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7464 $xyz-> %s |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7465 $1-> %s\n" orig formula form)) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7466 (if (listp ev) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7467 (princ (format " %s^\nError: %s" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7468 (make-string (car ev) ?\-) (nth 1 ev))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7469 (princ (format "Result: %s\nFormat: %s\nFinal: %s" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7470 ev (or fmt "NONE") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7471 (if fmt (format fmt (string-to-number ev)) ev))))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7472 (shrink-window-if-larger-than-buffer (get-buffer-window "*Help*")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7473 (unless (and (interactive-p) (not ndown)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7474 (unless (let (inhibit-redisplay) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7475 (y-or-n-p "Debugging Formula. Continue to next? ")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7476 (org-table-align) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7477 (error "Abort")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7478 (delete-window (get-buffer-window "*Help*")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7479 (message ""))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7480 (if (listp ev) (setq fmt nil ev "#ERROR")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7481 (org-table-justify-field-maybe |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7482 (if fmt (format fmt (string-to-number ev)) ev)) |
58792 | 7483 (if (and down (> ndown 0) (looking-at ".*\n[ \t]*|[^-]")) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7484 (call-interactively 'org-return) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7485 (setq ndown 0))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7486 (and down (org-table-maybe-recalculate-line)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7487 (or suppress-align (and org-table-may-need-update |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7488 (org-table-align))))) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7489 |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7490 (defun org-table-recalculate (&optional all noalign) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7491 "Recalculate the current table line by applying all stored formulas." |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7492 (interactive "P") |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7493 (or (memq this-command org-recalc-commands) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7494 (setq org-recalc-commands (cons this-command org-recalc-commands))) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7495 (unless (org-at-table-p) (error "Not at a table")) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7496 (org-table-get-specials) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7497 (let* ((eqlist (sort (org-table-get-stored-formulas) |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7498 (lambda (a b) (string< (car a) (car b))))) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7499 (inhibit-redisplay t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7500 (line-re org-table-dataline-regexp) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7501 (thisline (+ (if (bolp) 1 0) (count-lines (point-min) (point)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7502 (thiscol (org-table-current-column)) |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7503 beg end entry eqlnum eqlname eql (cnt 0) eq a name) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7504 ;; Insert constants in all formulas |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7505 (setq eqlist |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7506 (mapcar (lambda (x) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7507 (setcdr x (org-table-formula-substitute-names (cdr x))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7508 x) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7509 eqlist)) |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7510 ;; Split the equation list |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7511 (while (setq eq (pop eqlist)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7512 (if (<= (string-to-char (car eq)) ?9) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7513 (push eq eqlnum) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7514 (push eq eqlname))) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7515 (setq eqlnum (nreverse eqlnum) eqlname (nreverse eqlname)) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7516 (if all |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7517 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7518 (setq end (move-marker (make-marker) (1+ (org-table-end)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7519 (goto-char (setq beg (org-table-begin))) |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7520 (if (re-search-forward org-table-calculate-mark-regexp end t) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7521 ;; This is a table with marked lines, only compute selected lines |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7522 (setq line-re org-table-recalculate-regexp) |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7523 ;; Move forward to the first non-header line |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7524 (if (and (re-search-forward org-table-dataline-regexp end t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7525 (re-search-forward org-table-hline-regexp end t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7526 (re-search-forward org-table-dataline-regexp end t)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7527 (setq beg (match-beginning 0)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7528 nil))) ;; just leave beg where it is |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7529 (setq beg (point-at-bol) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7530 end (move-marker (make-marker) (1+ (point-at-eol))))) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7531 (goto-char beg) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7532 (and all (message "Re-applying formulas to full table...")) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7533 (while (re-search-forward line-re end t) |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7534 (unless (string-match "^ *[_^!$] *$" (org-table-get-field 1)) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7535 ;; Unprotected line, recalculate |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7536 (and all (message "Re-applying formulas to full table...(line %d)" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7537 (setq cnt (1+ cnt)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7538 (setq org-last-recalc-line (org-current-line)) |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7539 (setq eql eqlnum) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7540 (while (setq entry (pop eql)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7541 (goto-line org-last-recalc-line) |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7542 (org-table-goto-column (string-to-int (car entry)) nil 'force) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7543 (org-table-eval-formula nil (cdr entry) 'noalign 'nocst 'nostore)))) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7544 (goto-line thisline) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7545 (org-table-goto-column thiscol) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7546 (or noalign (and org-table-may-need-update (org-table-align)) |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7547 (and all (message "Re-applying formulas to %d lines...done" cnt))) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7548 ;; Now do the names fields |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7549 (while (setq eq (pop eqlname)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7550 (setq name (car eq) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7551 a (assoc name org-table-named-field-locations)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7552 (when a |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7553 (message "Re-applying formula to named field: %s" name) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7554 (goto-line (nth 1 a)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7555 (org-table-goto-column (nth 2 a)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7556 (org-table-eval-formula nil (cdr eq) 'noalign 'nocst 'nostore))) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7557 ;; back to initial position |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7558 (goto-line thisline) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7559 (org-table-goto-column thiscol) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7560 (or noalign (and org-table-may-need-update (org-table-align)) |
64518
7b82147924c7
(org-table-formula-substitute-names, org-table-get-vertical-vector): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents:
64515
diff
changeset
|
7561 (and all (message "Re-applying formulas...done"))))) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7562 |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7563 (defun org-table-formula-substitute-names (f) |
64518
7b82147924c7
(org-table-formula-substitute-names, org-table-get-vertical-vector): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents:
64515
diff
changeset
|
7564 "Replace $const with values in string F." |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7565 (let ((start 0) a n1 n2 nn1 nn2 s (f1 f)) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7566 ;; First, check for column names |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7567 (while (setq start (string-match org-table-column-name-regexp f start)) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7568 (setq start (1+ start)) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7569 (setq a (assoc (match-string 1 f) org-table-column-names)) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7570 (setq f (replace-match (concat "$" (cdr a)) t t f))) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7571 ;; Expand ranges to vectors |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7572 (while (string-match "\\$\\([0-9]+\\)\\.\\.\\.?\\$\\([0-9]+\\)" f) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7573 (setq n1 (string-to-number (match-string 1 f)) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7574 n2 (string-to-number (match-string 2 f)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7575 nn1 (1+ (min n1 n2)) nn2 (max n1 n2) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7576 s (concat "[($" (number-to-string (1- nn1)) ")")) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7577 (loop for i from nn1 upto nn2 do |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7578 (setq s (concat s ",($" (int-to-string i) ")"))) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7579 (setq s (concat s "]")) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7580 (if (< n2 n1) (setq s (concat "rev(" s ")"))) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7581 (setq f (replace-match s t t f))) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7582 ;; Parameters and constants |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7583 (setq start 0) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7584 (while (setq start (string-match "\\$\\([a-zA-Z][a-zA-Z0-9]*\\)" f start)) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7585 (setq start (1+ start)) |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
7586 (if (setq a (save-match-data |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7587 (org-table-get-constant (match-string 1 f)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7588 (setq f (replace-match (concat "(" a ")") t t f)))) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7589 (if org-table-formula-debug |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7590 (put-text-property 0 (length f) :orig-formula f1 f)) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7591 f)) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7592 |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7593 (defun org-table-get-constant (const) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7594 "Find the value for a parameter or constant in a formula. |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7595 Parameters get priority." |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7596 (or (cdr (assoc const org-table-local-parameters)) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7597 (cdr (assoc const org-table-formula-constants)) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7598 (and (fboundp 'constants-get) (constants-get const)) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7599 "#UNDEFINED_NAME")) |
58792 | 7600 |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7601 (defvar org-edit-formulas-map (make-sparse-keymap)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7602 (define-key org-edit-formulas-map "\C-c\C-c" 'org-finish-edit-formulas) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7603 (define-key org-edit-formulas-map "\C-c\C-q" 'org-abort-edit-formulas) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7604 (define-key org-edit-formulas-map "\C-c?" 'org-show-variable) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7605 |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7606 (defvar org-pos) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7607 (defvar org-window-configuration) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7608 |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7609 (defun org-table-edit-formulas () |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7610 "Edit the formulas of the current table in a separate buffer." |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7611 (interactive) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7612 (unless (org-at-table-p) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7613 (error "Not at a table")) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7614 (org-table-get-specials) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7615 (let ((eql (org-table-get-stored-formulas)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7616 (pos (move-marker (make-marker) (point))) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7617 (wc (current-window-configuration)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7618 entry loc s) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7619 (switch-to-buffer-other-window "*Edit Formulas*") |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7620 (erase-buffer) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7621 (fundamental-mode) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7622 (set (make-local-variable 'org-pos) pos) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7623 (set (make-local-variable 'org-window-configuration) wc) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7624 (use-local-map org-edit-formulas-map) |
64518
7b82147924c7
(org-table-formula-substitute-names, org-table-get-vertical-vector): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents:
64515
diff
changeset
|
7625 (setq s "# Edit formulas and finish with `C-c C-c'. |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7626 # Use `C-u C-c C-c' to also appy them immediately to the entire table. |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7627 # Use `C-c ?' to get information about $name at point. |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7628 # To cancel editing, press `C-c C-q'.\n") |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7629 (put-text-property 0 (length s) 'face 'font-lock-comment-face s) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7630 (insert s) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7631 (while (setq entry (pop eql)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7632 (when (setq loc (assoc (car entry) org-table-named-field-locations)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7633 (setq s (format "# Named formula, referring to column %d in line %d\n" |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7634 (nth 2 loc) (nth 1 loc))) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7635 (put-text-property 0 (length s) 'face 'font-lock-comment-face s) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7636 (insert s)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7637 (setq s (concat "$" (car entry) "=" (cdr entry) "\n")) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7638 (remove-text-properties 0 (length s) '(face nil) s) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7639 (insert s)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7640 (goto-char (point-min)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7641 (message "Edit formulas and finish with `C-c C-c'."))) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7642 |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7643 (defun org-show-variable () |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7644 "Show the location/value of the $ expression at point." |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7645 (interactive) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7646 (let (var (pos org-pos) (win (selected-window)) e) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7647 (save-excursion |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7648 (or (looking-at "\\$") (skip-chars-backward "$a-zA-Z0-9")) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7649 (if (looking-at "\\$\\([a-zA-Z0-9]+\\)") |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7650 (setq var (match-string 1)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7651 (error "No variable at point"))) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7652 (cond |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7653 ((setq e (assoc var org-table-named-field-locations)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7654 (switch-to-buffer-other-window (marker-buffer pos)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7655 (goto-line (nth 1 e)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7656 (org-table-goto-column (nth 2 e)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7657 (select-window win) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7658 (message "Named field, column %d of line %d" (nth 2 e) (nth 1 e))) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7659 ((setq e (assoc var org-table-column-names)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7660 (switch-to-buffer-other-window (marker-buffer pos)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7661 (goto-char pos) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7662 (goto-char (org-table-begin)) |
64518
7b82147924c7
(org-table-formula-substitute-names, org-table-get-vertical-vector): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents:
64515
diff
changeset
|
7663 (if (re-search-forward (concat "^[ \t]*| *! *.*?| *\\(" var "\\) *|") |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7664 (org-table-end) t) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7665 (progn |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7666 (goto-char (match-beginning 1)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7667 (message "Named column (column %s)" (cdr e))) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7668 (error "Column name not found")) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7669 (select-window win)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7670 ((string-match "^[0-9]$" var) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7671 ;; column number |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7672 (switch-to-buffer-other-window (marker-buffer pos)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7673 (goto-char pos) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7674 (goto-char (org-table-begin)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7675 (recenter 1) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7676 (if (re-search-forward org-table-dataline-regexp |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7677 (org-table-end) t) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7678 (progn |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7679 (goto-char (match-beginning 0)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7680 (org-table-goto-column (string-to-number var)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7681 (message "Column %s" var)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7682 (error "Column name not found")) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7683 (select-window win)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7684 ((setq e (assoc var org-table-local-parameters)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7685 (switch-to-buffer-other-window (marker-buffer pos)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7686 (goto-char pos) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7687 (goto-char (org-table-begin)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7688 (if (re-search-forward (concat "^[ \t]*| *\\$ *.*?| *\\(" var "=\\)") nil t) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7689 (progn |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7690 (goto-char (match-beginning 1)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7691 (message "Local parameter.")) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7692 (error "Parameter not found")) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7693 (select-window win)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7694 (t |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7695 (cond |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7696 ((setq e (assoc var org-table-formula-constants)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7697 (message "Constant: $%s=%s in `org-table-formula-constants'." var (cdr e))) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7698 ((setq e (and (fboundp 'constants-get) (constants-get var))) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7699 (message "Constant: $%s=%s, retrieved from `constants.el'." var e)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7700 (t (error "Undefined name $%s" var))))))) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7701 |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7702 (defun org-finish-edit-formulas (&optional arg) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7703 "Parse the buffer for formula definitions and install them. |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7704 With prefix ARG, apply the new formulas to the table." |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7705 (interactive "P") |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7706 (let ((pos org-pos) eql) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7707 (goto-char (point-min)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7708 (while (re-search-forward "^\\$\\([a-zA-Z0-9]+\\) *= *\\(.*?\\) *$" nil t) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7709 (push (cons (match-string 1) (match-string 2)) eql)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7710 (set-window-configuration org-window-configuration) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7711 (select-window (get-buffer-window (marker-buffer pos))) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7712 (goto-char pos) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7713 (unless (org-at-table-p) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7714 (error "Lost table position - cannot install formulae")) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7715 (org-table-store-formulas eql) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7716 (move-marker pos nil) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7717 (kill-buffer "*Edit Formulas*") |
64518
7b82147924c7
(org-table-formula-substitute-names, org-table-get-vertical-vector): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents:
64515
diff
changeset
|
7718 (if arg |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7719 (org-table-recalculate 'all) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7720 (message "New formulas installed - press C-u C-c C-c to apply.")))) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7721 |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7722 (defun org-abort-edit-formulas () |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7723 "Abort editing formulas, without installing the changes." |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7724 (interactive) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7725 (let ((pos org-pos)) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7726 (set-window-configuration org-window-configuration) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7727 (select-window (get-buffer-window (marker-buffer pos))) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7728 (goto-char pos) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7729 (message "Formula editing aborted without installing changes"))) |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7730 |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7731 ;;; The orgtbl minor mode |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7732 |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7733 ;; Define a minor mode which can be used in other modes in order to |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7734 ;; integrate the org-mode table editor. |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7735 |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7736 ;; This is really a hack, because the org-mode table editor uses several |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7737 ;; keys which normally belong to the major mode, for example the TAB and |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7738 ;; RET keys. Here is how it works: The minor mode defines all the keys |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7739 ;; necessary to operate the table editor, but wraps the commands into a |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7740 ;; function which tests if the cursor is currently inside a table. If that |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7741 ;; is the case, the table editor command is executed. However, when any of |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7742 ;; those keys is used outside a table, the function uses `key-binding' to |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7743 ;; look up if the key has an associated command in another currently active |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7744 ;; keymap (minor modes, major mode, global), and executes that command. |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7745 ;; There might be problems if any of the keys used by the table editor is |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7746 ;; otherwise used as a prefix key. |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7747 |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7748 ;; Another challenge is that the key binding for TAB can be tab or \C-i, |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7749 ;; likewise the binding for RET can be return or \C-m. Orgtbl-mode |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7750 ;; addresses this by checking explicitly for both bindings. |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7751 |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7752 ;; The optimized version (see variable `orgtbl-optimized') takes over |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7753 ;; all keys which are bound to `self-insert-command' in the *global map*. |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7754 ;; Some modes bind other commands to simple characters, for example |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7755 ;; AUCTeX binds the double quote to `Tex-insert-quote'. With orgtbl-mode |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7756 ;; active, this binding is ignored inside tables and replaced with a |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7757 ;; modified self-insert. |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7758 |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7759 (defcustom orgtbl-optimized (eq org-enable-table-editor 'optimized) |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
7760 "Non-nil means, use the optimized table editor version for `orgtbl-mode'. |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7761 In the optimized version, the table editor takes over all simple keys that |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7762 normally just insert a character. In tables, the characters are inserted |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7763 in a way to minimize disturbing the table structure (i.e. in overwrite mode |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7764 for empty fields). Outside tables, the correct binding of the keys is |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7765 restored. |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7766 |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7767 The default for this option is t if the optimized version is also used in |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7768 Org-mode. See the variable `org-enable-table-editor' for details. Changing |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7769 this variable requires a restart of Emacs to become effective." |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7770 :group 'org-table |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7771 :type 'boolean) |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7772 |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7773 (defvar orgtbl-mode nil |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
7774 "Variable controlling `orgtbl-mode', a minor mode enabling the `org-mode' |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
7775 table editor in arbitrary modes.") |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7776 (make-variable-buffer-local 'orgtbl-mode) |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7777 |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7778 (defvar orgtbl-mode-map (make-sparse-keymap) |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
7779 "Keymap for `orgtbl-mode'.") |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7780 |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7781 ;;;###autoload |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7782 (defun turn-on-orgtbl () |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
7783 "Unconditionally turn on `orgtbl-mode'." |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7784 (orgtbl-mode 1)) |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7785 |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7786 ;;;###autoload |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7787 (defun orgtbl-mode (&optional arg) |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
7788 "The `org-mode' table editor as a minor mode for use in other modes." |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
7789 (interactive) |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
7790 (if (eq major-mode 'org-mode) |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
7791 ;; Exit without error, in case some hook functions calls this |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
7792 ;; by accident in org-mode. |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
7793 (message "Orgtbl-mode is not useful in org-mode, command ignored") |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
7794 (setq orgtbl-mode |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7795 (if arg (> (prefix-numeric-value arg) 0) (not orgtbl-mode))) |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
7796 (if orgtbl-mode |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7797 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7798 (and (orgtbl-setup) (defun orgtbl-setup () nil)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7799 ;; Make sure we are first in minor-mode-map-alist |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7800 (let ((c (assq 'orgtbl-mode minor-mode-map-alist))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7801 (and c (setq minor-mode-map-alist |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7802 (cons c (delq c minor-mode-map-alist))))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7803 (set (make-local-variable (quote org-table-may-need-update)) t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7804 (make-local-hook (quote before-change-functions)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7805 (add-hook 'before-change-functions 'org-before-change-function |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7806 nil 'local) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7807 (set (make-local-variable 'org-old-auto-fill-inhibit-regexp) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7808 auto-fill-inhibit-regexp) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7809 (set (make-local-variable 'auto-fill-inhibit-regexp) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7810 (if auto-fill-inhibit-regexp |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7811 (concat "\\([ \t]*|\\|" auto-fill-inhibit-regexp) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7812 "[ \t]*|")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7813 (easy-menu-add orgtbl-mode-menu) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7814 (run-hooks 'orgtbl-mode-hook)) |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
7815 (setq auto-fill-inhibit-regexp org-old-auto-fill-inhibit-regexp) |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
7816 (remove-hook 'before-change-functions 'org-before-change-function t) |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
7817 (easy-menu-remove orgtbl-mode-menu) |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
7818 (force-mode-line-update 'all)))) |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7819 |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7820 ;; Install it as a minor mode. |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7821 (put 'orgtbl-mode :included t) |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7822 (put 'orgtbl-mode :menu-tag "Org Table Mode") |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7823 (add-minor-mode 'orgtbl-mode " OrgTbl" orgtbl-mode-map) |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7824 |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7825 (defun orgtbl-make-binding (fun n &rest keys) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7826 "Create a function for binding in the table minor mode. |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7827 FUN is the command to call inside a table. N is used to create a unique |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7828 command name. KEYS are keys that should be checked in for a command |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7829 to execute outside of tables." |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7830 (eval |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
7831 (list 'defun |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7832 (intern (concat "orgtbl-hijacker-command-" (int-to-string n))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7833 '(arg) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7834 (concat "In tables, run `" (symbol-name fun) "'.\n" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7835 "Outside of tables, run the binding of `" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7836 (mapconcat (lambda (x) (format "%s" x)) keys "' or `") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7837 "'.") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7838 '(interactive "p") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7839 (list 'if |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7840 '(org-at-table-p) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7841 (list 'call-interactively (list 'quote fun)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7842 (list 'let '(orgtbl-mode) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7843 (list 'call-interactively |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7844 (append '(or) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7845 (mapcar (lambda (k) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7846 (list 'key-binding k)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7847 keys) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7848 '('orgtbl-error)))))))) |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7849 |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7850 (defun orgtbl-error () |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7851 "Error when there is no default binding for a table key." |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7852 (interactive) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7853 (error "This key is has no function outside tables")) |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7854 |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7855 (defun orgtbl-setup () |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7856 "Setup orgtbl keymaps." |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7857 (let ((nfunc 0) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7858 (bindings |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7859 (list |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7860 '([(meta shift left)] org-table-delete-column) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7861 '([(meta left)] org-table-move-column-left) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7862 '([(meta right)] org-table-move-column-right) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7863 '([(meta shift right)] org-table-insert-column) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7864 '([(meta shift up)] org-table-kill-row) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7865 '([(meta shift down)] org-table-insert-row) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7866 '([(meta up)] org-table-move-row-up) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7867 '([(meta down)] org-table-move-row-down) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7868 '("\C-c\C-w" org-table-cut-region) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7869 '("\C-c\M-w" org-table-copy-region) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7870 '("\C-c\C-y" org-table-paste-rectangle) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7871 '("\C-c-" org-table-insert-hline) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7872 '([(shift tab)] org-table-previous-field) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7873 '("\C-c\C-c" org-ctrl-c-ctrl-c) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7874 '("\C-m" org-table-next-row) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7875 (list (org-key 'S-return) 'org-table-copy-down) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7876 '([(meta return)] org-table-wrap-region) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7877 '("\C-c\C-q" org-table-wrap-region) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7878 '("\C-c?" org-table-current-column) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7879 '("\C-c " org-table-blank-field) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7880 '("\C-c+" org-table-sum) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7881 '("\C-c|" org-table-toggle-vline-visibility) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7882 '("\C-c=" org-table-eval-formula) |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7883 '("\C-c'" org-table-edit-formulas) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7884 '("\C-c*" org-table-recalculate) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7885 '([(control ?#)] org-table-rotate-recalc-marks))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7886 elt key fun cmd) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7887 (while (setq elt (pop bindings)) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7888 (setq nfunc (1+ nfunc)) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7889 (setq key (car elt) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7890 fun (nth 1 elt) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7891 cmd (orgtbl-make-binding fun nfunc key)) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7892 (define-key orgtbl-mode-map key cmd)) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7893 ;; Special treatment needed for TAB and RET |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
7894 (define-key orgtbl-mode-map [(return)] |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7895 (orgtbl-make-binding 'orgtbl-ret 100 [(return)] "\C-m")) |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
7896 (define-key orgtbl-mode-map "\C-m" |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7897 (orgtbl-make-binding 'orgtbl-ret 101 "\C-m" [(return)])) |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
7898 (define-key orgtbl-mode-map [(tab)] |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7899 (orgtbl-make-binding 'orgtbl-tab 102 [(tab)] "\C-i")) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7900 (define-key orgtbl-mode-map "\C-i" |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7901 (orgtbl-make-binding 'orgtbl-tab 103 "\C-i" [(tab)]))) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7902 (when orgtbl-optimized |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7903 ;; If the user wants maximum table support, we need to hijack |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7904 ;; some standard editing functions |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7905 (substitute-key-definition 'self-insert-command 'orgtbl-self-insert-command |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7906 orgtbl-mode-map global-map) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7907 (substitute-key-definition 'delete-char 'orgtbl-delete-char |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7908 orgtbl-mode-map global-map) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7909 (substitute-key-definition 'delete-backward-char 'orgtbl-delete-backward-char |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7910 orgtbl-mode-map global-map) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7911 (define-key org-mode-map "|" 'self-insert-command)) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7912 (easy-menu-define orgtbl-mode-menu orgtbl-mode-map "OrgTbl menu" |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7913 '("OrgTbl" |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7914 ["Align" org-ctrl-c-ctrl-c :active (org-at-table-p) :keys "C-c C-c"] |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7915 ["Next Field" org-cycle :active (org-at-table-p) :keys "TAB"] |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7916 ["Previous Field" org-shifttab :active (org-at-table-p) :keys "S-TAB"] |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7917 ["Next Row" org-return :active (org-at-table-p) :keys "RET"] |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7918 "--" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7919 ["Blank Field" org-table-blank-field :active (org-at-table-p) :keys "C-c SPC"] |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7920 ["Copy Field from Above" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7921 org-table-copy-down :active (org-at-table-p) :keys "S-RET"] |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7922 "--" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7923 ("Column" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7924 ["Move Column Left" org-metaleft :active (org-at-table-p) :keys "M-<left>"] |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7925 ["Move Column Right" org-metaright :active (org-at-table-p) :keys "M-<right>"] |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7926 ["Delete Column" org-shiftmetaleft :active (org-at-table-p) :keys "M-S-<left>"] |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7927 ["Insert Column" org-shiftmetaright :active (org-at-table-p) :keys "M-S-<right>"]) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7928 ("Row" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7929 ["Move Row Up" org-metaup :active (org-at-table-p) :keys "M-<up>"] |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7930 ["Move Row Down" org-metadown :active (org-at-table-p) :keys "M-<down>"] |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7931 ["Delete Row" org-shiftmetaup :active (org-at-table-p) :keys "M-S-<up>"] |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7932 ["Insert Row" org-shiftmetadown :active (org-at-table-p) :keys "M-S-<down>"] |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7933 "--" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7934 ["Insert Hline" org-table-insert-hline :active (org-at-table-p) :keys "C-c -"]) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7935 ("Rectangle" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7936 ["Copy Rectangle" org-copy-special :active (org-at-table-p) :keys "C-c M-w"] |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7937 ["Cut Rectangle" org-cut-special :active (org-at-table-p) :keys "C-c C-w"] |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7938 ["Paste Rectangle" org-paste-special :active (org-at-table-p) :keys "C-c C-y"] |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7939 ["Fill Rectangle" org-table-wrap-region :active (org-at-table-p) :keys "C-c C-q"]) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7940 "--" |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7941 ["Set Column Formula" org-table-eval-formula :active (org-at-table-p) :keys "C-c ="] |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7942 ["Set Named Field Formula" (org-table-eval-formula '(4)) :active (org-at-table-p) :keys "C-u C-c ="] |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
7943 ["Edit Formulas" org-table-edit-formulas :active (org-at-table-p) :keys "C-c '"] |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7944 ["Recalculate line" org-table-recalculate :active (org-at-table-p) :keys "C-c *"] |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7945 ["Recalculate all" (org-table-recalculate '(4)) :active (org-at-table-p) :keys "C-u C-c *"] |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7946 ["Toggle Recalculate Mark" org-table-rotate-recalc-marks :active (org-at-table-p) :keys "C-c #"] |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7947 ["Sum Column/Rectangle" org-table-sum |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7948 :active (or (org-at-table-p) (org-region-active-p)) :keys "C-c +"] |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7949 ["Which Column?" org-table-current-column :active (org-at-table-p) :keys "C-c ?"] |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7950 ["Debug Formulas" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7951 (setq org-table-formula-debug (not org-table-formula-debug)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7952 :style toggle :selected org-table-formula-debug] |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7953 )) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
7954 t) |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7955 |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7956 (defun orgtbl-tab () |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
7957 "Justification and field motion for `orgtbl-mode'." |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7958 (interactive) |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7959 (org-table-justify-field-maybe) |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7960 (org-table-next-field)) |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7961 |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7962 (defun orgtbl-ret () |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
7963 "Justification and field motion for `orgtbl-mode'." |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7964 (interactive) |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7965 (org-table-justify-field-maybe) |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7966 (org-table-next-row)) |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7967 |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7968 (defun orgtbl-self-insert-command (N) |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7969 "Like `self-insert-command', use overwrite-mode for whitespace in tables. |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7970 If the cursor is in a table looking at whitespace, the whitespace is |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7971 overwritten, and the table is not marked as requiring realignment." |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7972 (interactive "p") |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7973 (if (and (org-at-table-p) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7974 (eq N 1) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7975 (looking-at "[^|\n]* +|")) |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
7976 (let (org-table-may-need-update) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7977 (goto-char (1- (match-end 0))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7978 (delete-backward-char 1) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7979 (goto-char (match-beginning 0)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7980 (self-insert-command N)) |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7981 (setq org-table-may-need-update t) |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7982 (let (orgtbl-mode) |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7983 (call-interactively (key-binding (vector last-input-event)))))) |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7984 |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7985 (defun orgtbl-delete-backward-char (N) |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7986 "Like `delete-backward-char', insert whitespace at field end in tables. |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7987 When deleting backwards, in tables this function will insert whitespace in |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7988 front of the next \"|\" separator, to keep the table aligned. The table will |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7989 still be marked for re-alignment, because a narrow field may lead to a |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7990 reduced column width." |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7991 (interactive "p") |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7992 (if (and (org-at-table-p) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7993 (eq N 1) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7994 (string-match "|" (buffer-substring (point-at-bol) (point))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7995 (looking-at ".*?|")) |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
7996 (let ((pos (point))) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7997 (backward-delete-char N) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7998 (skip-chars-forward "^|") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
7999 (insert " ") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8000 (goto-char (1- pos))) |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
8001 (delete-backward-char N))) |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
8002 |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
8003 (defun orgtbl-delete-char (N) |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
8004 "Like `delete-char', but insert whitespace at field end in tables. |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
8005 When deleting characters, in tables this function will insert whitespace in |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
8006 front of the next \"|\" separator, to keep the table aligned. The table |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
8007 will still be marked for re-alignment, because a narrow field may lead to |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
8008 a reduced column width." |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
8009 (interactive "p") |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
8010 (if (and (org-at-table-p) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8011 (not (bolp)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8012 (not (= (char-after) ?|)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8013 (eq N 1)) |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
8014 (if (looking-at ".*?|") |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8015 (let ((pos (point))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8016 (replace-match (concat |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8017 (substring (match-string 0) 1 -1) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8018 " |")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8019 (goto-char pos))) |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
8020 (delete-char N))) |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
8021 |
58792 | 8022 ;;; Exporting |
8023 | |
8024 (defconst org-level-max 20) | |
8025 | |
8026 (defun org-export-find-first-heading-line (list) | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
8027 "Remove all lines from LIST which are before the first headline." |
58792 | 8028 (let ((orig-list list) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8029 (re (concat "^" outline-regexp))) |
58792 | 8030 (while (and list |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8031 (not (string-match re (car list)))) |
58792 | 8032 (pop list)) |
8033 (or list orig-list))) | |
8034 | |
8035 (defun org-skip-comments (lines) | |
8036 "Skip lines starting with \"#\" and subtrees starting with COMMENT." | |
8037 (let ((re1 (concat "^\\(\\*+\\)[ \t]+" org-comment-string)) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8038 (re2 "^\\(\\*+\\)[ \t\n\r]") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8039 rtn line level) |
58792 | 8040 (while (setq line (pop lines)) |
8041 (cond | |
8042 ((and (string-match re1 line) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8043 (setq level (- (match-end 1) (match-beginning 1)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8044 ;; Beginning of a COMMENT subtree. Skip it. |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8045 (while (and (setq line (pop lines)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8046 (or (not (string-match re2 line)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8047 (> (- (match-end 1) (match-beginning 1)) level)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8048 (setq lines (cons line lines))) |
58792 | 8049 ((string-match "^#" line) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8050 ;; an ordinary comment line |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8051 ) |
58792 | 8052 (t (setq rtn (cons line rtn))))) |
8053 (nreverse rtn))) | |
8054 | |
8055 ;; ASCII | |
8056 | |
8057 (defconst org-ascii-underline '(?\$ ?\# ?^ ?\~ ?\= ?\-) | |
8058 "Characters for underlining headings in ASCII export.") | |
8059 | |
8060 (defconst org-html-entities | |
8061 '(("nbsp") | |
8062 ("iexcl") | |
8063 ("cent") | |
8064 ("pound") | |
8065 ("curren") | |
8066 ("yen") | |
8067 ("brvbar") | |
8068 ("sect") | |
8069 ("uml") | |
8070 ("copy") | |
8071 ("ordf") | |
8072 ("laquo") | |
8073 ("not") | |
8074 ("shy") | |
8075 ("reg") | |
8076 ("macr") | |
8077 ("deg") | |
8078 ("plusmn") | |
8079 ("sup2") | |
8080 ("sup3") | |
8081 ("acute") | |
8082 ("micro") | |
8083 ("para") | |
8084 ("middot") | |
8085 ("odot"."o") | |
8086 ("star"."*") | |
8087 ("cedil") | |
8088 ("sup1") | |
8089 ("ordm") | |
8090 ("raquo") | |
8091 ("frac14") | |
8092 ("frac12") | |
8093 ("frac34") | |
8094 ("iquest") | |
8095 ("Agrave") | |
8096 ("Aacute") | |
8097 ("Acirc") | |
8098 ("Atilde") | |
8099 ("Auml") | |
8100 ("Aring") ("AA"."Å") | |
8101 ("AElig") | |
8102 ("Ccedil") | |
8103 ("Egrave") | |
8104 ("Eacute") | |
8105 ("Ecirc") | |
8106 ("Euml") | |
8107 ("Igrave") | |
8108 ("Iacute") | |
8109 ("Icirc") | |
8110 ("Iuml") | |
8111 ("ETH") | |
8112 ("Ntilde") | |
8113 ("Ograve") | |
8114 ("Oacute") | |
8115 ("Ocirc") | |
8116 ("Otilde") | |
8117 ("Ouml") | |
8118 ("times") | |
8119 ("Oslash") | |
8120 ("Ugrave") | |
8121 ("Uacute") | |
8122 ("Ucirc") | |
8123 ("Uuml") | |
8124 ("Yacute") | |
8125 ("THORN") | |
8126 ("szlig") | |
8127 ("agrave") | |
8128 ("aacute") | |
8129 ("acirc") | |
8130 ("atilde") | |
8131 ("auml") | |
8132 ("aring") | |
8133 ("aelig") | |
8134 ("ccedil") | |
8135 ("egrave") | |
8136 ("eacute") | |
8137 ("ecirc") | |
8138 ("euml") | |
8139 ("igrave") | |
8140 ("iacute") | |
8141 ("icirc") | |
8142 ("iuml") | |
8143 ("eth") | |
8144 ("ntilde") | |
8145 ("ograve") | |
8146 ("oacute") | |
8147 ("ocirc") | |
8148 ("otilde") | |
8149 ("ouml") | |
8150 ("divide") | |
8151 ("oslash") | |
8152 ("ugrave") | |
8153 ("uacute") | |
8154 ("ucirc") | |
8155 ("uuml") | |
8156 ("yacute") | |
8157 ("thorn") | |
8158 ("yuml") | |
8159 ("fnof") | |
8160 ("Alpha") | |
8161 ("Beta") | |
8162 ("Gamma") | |
8163 ("Delta") | |
8164 ("Epsilon") | |
8165 ("Zeta") | |
8166 ("Eta") | |
8167 ("Theta") | |
8168 ("Iota") | |
8169 ("Kappa") | |
8170 ("Lambda") | |
8171 ("Mu") | |
8172 ("Nu") | |
8173 ("Xi") | |
8174 ("Omicron") | |
8175 ("Pi") | |
8176 ("Rho") | |
8177 ("Sigma") | |
8178 ("Tau") | |
8179 ("Upsilon") | |
8180 ("Phi") | |
8181 ("Chi") | |
8182 ("Psi") | |
8183 ("Omega") | |
8184 ("alpha") | |
8185 ("beta") | |
8186 ("gamma") | |
8187 ("delta") | |
8188 ("epsilon") | |
8189 ("varepsilon"."ε") | |
8190 ("zeta") | |
8191 ("eta") | |
8192 ("theta") | |
8193 ("iota") | |
8194 ("kappa") | |
8195 ("lambda") | |
8196 ("mu") | |
8197 ("nu") | |
8198 ("xi") | |
8199 ("omicron") | |
8200 ("pi") | |
8201 ("rho") | |
8202 ("sigmaf") ("varsigma"."ς") | |
8203 ("sigma") | |
8204 ("tau") | |
8205 ("upsilon") | |
8206 ("phi") | |
8207 ("chi") | |
8208 ("psi") | |
8209 ("omega") | |
8210 ("thetasym") ("vartheta"."ϑ") | |
8211 ("upsih") | |
8212 ("piv") | |
8213 ("bull") ("bullet"."•") | |
8214 ("hellip") ("dots"."…") | |
8215 ("prime") | |
8216 ("Prime") | |
8217 ("oline") | |
8218 ("frasl") | |
8219 ("weierp") | |
8220 ("image") | |
8221 ("real") | |
8222 ("trade") | |
8223 ("alefsym") | |
8224 ("larr") ("leftarrow"."←") ("gets"."←") | |
8225 ("uarr") ("uparrow"."↑") | |
8226 ("rarr") ("to"."→") ("rightarrow"."→") | |
8227 ("darr")("downarrow"."↓") | |
8228 ("harr") ("leftrightarrow"."↔") | |
8229 ("crarr") ("hookleftarrow"."↵") ; has round hook, not quite CR | |
8230 ("lArr") ("Leftarrow"."⇐") | |
8231 ("uArr") ("Uparrow"."⇑") | |
8232 ("rArr") ("Rightarrow"."⇒") | |
8233 ("dArr") ("Downarrow"."⇓") | |
8234 ("hArr") ("Leftrightarrow"."⇔") | |
8235 ("forall") | |
8236 ("part") ("partial"."∂") | |
8237 ("exist") ("exists"."∃") | |
8238 ("empty") ("emptyset"."∅") | |
8239 ("nabla") | |
8240 ("isin") ("in"."∈") | |
8241 ("notin") | |
8242 ("ni") | |
8243 ("prod") | |
8244 ("sum") | |
8245 ("minus") | |
8246 ("lowast") ("ast"."∗") | |
8247 ("radic") | |
8248 ("prop") ("proptp"."∝") | |
8249 ("infin") ("infty"."∞") | |
8250 ("ang") ("angle"."∠") | |
8251 ("and") ("vee"."∧") | |
8252 ("or") ("wedge"."∨") | |
8253 ("cap") | |
8254 ("cup") | |
8255 ("int") | |
8256 ("there4") | |
8257 ("sim") | |
8258 ("cong") ("simeq"."≅") | |
8259 ("asymp")("approx"."≈") | |
8260 ("ne") ("neq"."≠") | |
8261 ("equiv") | |
8262 ("le") | |
8263 ("ge") | |
8264 ("sub") ("subset"."⊂") | |
8265 ("sup") ("supset"."⊃") | |
8266 ("nsub") | |
8267 ("sube") | |
8268 ("supe") | |
8269 ("oplus") | |
8270 ("otimes") | |
8271 ("perp") | |
8272 ("sdot") ("cdot"."⋅") | |
8273 ("lceil") | |
8274 ("rceil") | |
8275 ("lfloor") | |
8276 ("rfloor") | |
8277 ("lang") | |
8278 ("rang") | |
8279 ("loz") ("Diamond"."◊") | |
8280 ("spades") ("spadesuit"."♠") | |
8281 ("clubs") ("clubsuit"."♣") | |
8282 ("hearts") ("diamondsuit"."♥") | |
8283 ("diams") ("diamondsuit"."♦") | |
8284 ("quot") | |
8285 ("amp") | |
8286 ("lt") | |
8287 ("gt") | |
8288 ("OElig") | |
8289 ("oelig") | |
8290 ("Scaron") | |
8291 ("scaron") | |
8292 ("Yuml") | |
8293 ("circ") | |
8294 ("tilde") | |
8295 ("ensp") | |
8296 ("emsp") | |
8297 ("thinsp") | |
8298 ("zwnj") | |
8299 ("zwj") | |
8300 ("lrm") | |
8301 ("rlm") | |
8302 ("ndash") | |
8303 ("mdash") | |
8304 ("lsquo") | |
8305 ("rsquo") | |
8306 ("sbquo") | |
8307 ("ldquo") | |
8308 ("rdquo") | |
8309 ("bdquo") | |
8310 ("dagger") | |
8311 ("Dagger") | |
8312 ("permil") | |
8313 ("lsaquo") | |
8314 ("rsaquo") | |
8315 ("euro") | |
8316 | |
8317 ("arccos"."arccos") | |
8318 ("arcsin"."arcsin") | |
8319 ("arctan"."arctan") | |
8320 ("arg"."arg") | |
8321 ("cos"."cos") | |
8322 ("cosh"."cosh") | |
8323 ("cot"."cot") | |
8324 ("coth"."coth") | |
8325 ("csc"."csc") | |
8326 ("deg"."deg") | |
8327 ("det"."det") | |
8328 ("dim"."dim") | |
8329 ("exp"."exp") | |
8330 ("gcd"."gcd") | |
8331 ("hom"."hom") | |
8332 ("inf"."inf") | |
8333 ("ker"."ker") | |
8334 ("lg"."lg") | |
8335 ("lim"."lim") | |
8336 ("liminf"."liminf") | |
8337 ("limsup"."limsup") | |
8338 ("ln"."ln") | |
8339 ("log"."log") | |
8340 ("max"."max") | |
8341 ("min"."min") | |
8342 ("Pr"."Pr") | |
8343 ("sec"."sec") | |
8344 ("sin"."sin") | |
8345 ("sinh"."sinh") | |
8346 ("sup"."sup") | |
8347 ("tan"."tan") | |
8348 ("tanh"."tanh") | |
8349 ) | |
8350 "Entities for TeX->HTML translation. | |
8351 Entries can be like (\"ent\"), in which case \"\\ent\" will be translated to | |
8352 \"&ent;\". An entry can also be a dotted pair like (\"ent\".\"&other;\"). | |
8353 In that case, \"\\ent\" will be translated to \"&other;\". | |
8354 The list contains HTML entities for Latin-1, Greek and other symbols. | |
8355 It is supplemented by a number of commonly used TeX macros with appropriate | |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
8356 translations. There is currently no way for users to extend this.") |
58792 | 8357 |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
8358 (defvar org-last-level nil) ; dynamically scoped variable |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
8359 |
58792 | 8360 (defun org-export-as-ascii (arg) |
8361 "Export the outline as a pretty ASCII file. | |
8362 If there is an active region, export only the region. | |
8363 The prefix ARG specifies how many levels of the outline should become | |
8364 underlined headlines. The default is 3." | |
8365 (interactive "P") | |
8366 (setq-default org-todo-line-regexp org-todo-line-regexp) | |
8367 (let* ((region | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8368 (buffer-substring |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8369 (if (org-region-active-p) (region-beginning) (point-min)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8370 (if (org-region-active-p) (region-end) (point-max)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8371 (lines (org-export-find-first-heading-line |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8372 (org-skip-comments (org-split-string region "[\r\n]")))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8373 (org-startup-with-deadline-check nil) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8374 (level 0) line txt |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8375 (umax nil) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8376 (case-fold-search nil) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8377 (filename (concat (file-name-sans-extension (buffer-file-name)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8378 ".txt")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8379 (buffer (find-file-noselect filename)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8380 (levels-open (make-vector org-level-max nil)) |
58792 | 8381 (date (format-time-string "%Y/%m/%d" (current-time))) |
8382 (time (format-time-string "%X" (current-time))) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8383 (author user-full-name) |
58792 | 8384 (title (buffer-name)) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8385 (options nil) |
58792 | 8386 (email user-mail-address) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8387 (language org-export-default-language) |
58792 | 8388 (text nil) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8389 (todo nil) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8390 (lang-words nil)) |
58792 | 8391 |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
8392 (setq org-last-level 1) |
58792 | 8393 (org-init-section-numbers) |
8394 | |
8395 (find-file-noselect filename) | |
8396 | |
8397 ;; Search for the export key lines | |
8398 (org-parse-key-lines) | |
8399 | |
8400 (setq lang-words (or (assoc language org-export-language-setup) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8401 (assoc "en" org-export-language-setup))) |
58792 | 8402 (if org-export-ascii-show-new-buffer |
8403 (switch-to-buffer-other-window buffer) | |
8404 (set-buffer buffer)) | |
8405 (erase-buffer) | |
8406 (fundamental-mode) | |
8407 (if options (org-parse-export-options options)) | |
8408 (setq umax (if arg (prefix-numeric-value arg) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8409 org-export-headline-levels)) |
58792 | 8410 |
8411 ;; File header | |
8412 (if title (org-insert-centered title ?=)) | |
8413 (insert "\n") | |
8414 (if (or author email) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8415 (insert (concat (nth 1 lang-words) ": " (or author "") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8416 (if email (concat " <" email ">") "") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8417 "\n"))) |
58792 | 8418 (if (and date time) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8419 (insert (concat (nth 2 lang-words) ": " date " " time "\n"))) |
58792 | 8420 (if text (insert (concat (org-html-expand-for-ascii text) "\n\n"))) |
8421 | |
8422 (insert "\n\n") | |
8423 | |
8424 (if org-export-with-toc | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8425 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8426 (insert (nth 3 lang-words) "\n" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8427 (make-string (length (nth 3 lang-words)) ?=) "\n") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8428 (mapcar '(lambda (line) |
58792 | 8429 (if (string-match org-todo-line-regexp |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8430 line) |
58792 | 8431 ;; This is a headline |
8432 (progn | |
8433 (setq level (- (match-end 1) (match-beginning 1)) | |
8434 txt (match-string 3 line) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8435 todo |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8436 (or (and (match-beginning 2) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8437 (not (equal (match-string 2 line) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8438 org-done-string))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8439 ; TODO, not DONE |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8440 (and (= level umax) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8441 (org-search-todo-below |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8442 line lines level)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8443 (setq txt (org-html-expand-for-ascii txt)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8444 |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8445 (if org-export-with-section-numbers |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8446 (setq txt (concat (org-section-number level) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8447 " " txt))) |
58792 | 8448 (if (<= level umax) |
8449 (progn | |
8450 (insert | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8451 (make-string (* (1- level) 4) ?\ ) |
58792 | 8452 (format (if todo "%s (*)\n" "%s\n") txt)) |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
8453 (setq org-last-level level)) |
58792 | 8454 )))) |
8455 lines))) | |
8456 | |
8457 (org-init-section-numbers) | |
8458 (while (setq line (pop lines)) | |
8459 ;; Remove the quoted HTML tags. | |
8460 (setq line (org-html-expand-for-ascii line)) | |
8461 (cond | |
8462 ((string-match "^\\(\\*+\\)[ \t]*\\(.*\\)" line) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8463 ;; a Headline |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8464 (setq level (- (match-end 1) (match-beginning 1)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8465 txt (match-string 2 line)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8466 (org-ascii-level-start level txt umax)) |
58792 | 8467 (t (insert line "\n")))) |
8468 (normal-mode) | |
8469 (save-buffer) | |
8470 (goto-char (point-min)))) | |
8471 | |
8472 (defun org-search-todo-below (line lines level) | |
8473 "Search the subtree below LINE for any TODO entries." | |
8474 (let ((rest (cdr (memq line lines))) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8475 (re org-todo-line-regexp) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8476 line lv todo) |
58792 | 8477 (catch 'exit |
8478 (while (setq line (pop rest)) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8479 (if (string-match re line) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8480 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8481 (setq lv (- (match-end 1) (match-beginning 1)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8482 todo (and (match-beginning 2) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8483 (not (equal (match-string 2 line) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8484 org-done-string)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8485 ; TODO, not DONE |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8486 (if (<= lv level) (throw 'exit nil)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8487 (if todo (throw 'exit t)))))))) |
58792 | 8488 |
8489 ;; FIXME: Try to handle <b> and <i> as faces via text properties. | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
8490 ;; FIXME: Can I implement *bold*,/italic/ and _underline_ for ASCII export? |
58792 | 8491 (defun org-html-expand-for-ascii (line) |
8492 "Handle quoted HTML for ASCII export." | |
8493 (if org-export-html-expand | |
8494 (while (string-match "@<[^<>\n]*>" line) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8495 ;; We just remove the tags for now. |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8496 (setq line (replace-match "" nil nil line)))) |
58792 | 8497 line) |
8498 | |
8499 (defun org-insert-centered (s &optional underline) | |
8500 "Insert the string S centered and underline it with character UNDERLINE." | |
8501 (let ((ind (max (/ (- 80 (length s)) 2) 0))) | |
8502 (insert (make-string ind ?\ ) s "\n") | |
8503 (if underline | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8504 (insert (make-string ind ?\ ) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8505 (make-string (length s) underline) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8506 "\n")))) |
58792 | 8507 |
8508 (defun org-ascii-level-start (level title umax) | |
8509 "Insert a new level in ASCII export." | |
8510 (let (char) | |
8511 (if (> level umax) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8512 (insert (make-string (* 2 (- level umax 1)) ?\ ) "* " title "\n") |
58792 | 8513 (if (or (not (equal (char-before) ?\n)) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8514 (not (equal (char-before (1- (point))) ?\n))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8515 (insert "\n")) |
58792 | 8516 (setq char (nth (- umax level) (reverse org-ascii-underline))) |
8517 (if org-export-with-section-numbers | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8518 (setq title (concat (org-section-number level) " " title))) |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
8519 (insert title "\n" (make-string (string-width title) char) "\n")))) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
8520 |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
8521 (defun org-export-copy-visible () |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
8522 "Copy the visible part of the buffer to another buffer, for printing. |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
8523 Also removes the first line of the buffer if it specifies a mode, |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
8524 and all options lines." |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
8525 (interactive) |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
8526 (let* ((filename (concat (file-name-sans-extension (buffer-file-name)) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8527 ".txt")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8528 (buffer (find-file-noselect filename)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8529 (ore (concat |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8530 (org-make-options-regexp |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8531 '("CATEGORY" "SEQ_TODO" "PRI_TODO" "TYP_TODO" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8532 "STARTUP" "ARCHIVE" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8533 "TITLE" "AUTHOR" "EMAIL" "TEXT" "OPTIONS" "LANGUAGE")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8534 (if org-noutline-p "\\(\n\\|$\\)" ""))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8535 s e) |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
8536 (with-current-buffer buffer |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
8537 (erase-buffer) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
8538 (text-mode)) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
8539 (save-excursion |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
8540 (setq s (goto-char (point-min))) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
8541 (while (not (= (point) (point-max))) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8542 (goto-char (org-find-invisible)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8543 (append-to-buffer buffer s (point)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8544 (setq s (goto-char (org-find-visible))))) |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
8545 (switch-to-buffer-other-window buffer) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
8546 (newline) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
8547 (goto-char (point-min)) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
8548 (if (looking-at ".*-\\*- mode:.*\n") |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8549 (replace-match "")) |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
8550 (while (re-search-forward ore nil t) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
8551 (replace-match "")) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
8552 (goto-char (point-min)))) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
8553 |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
8554 (defun org-find-visible () |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
8555 (if (featurep 'noutline) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
8556 (let ((s (point))) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8557 (while (and (not (= (point-max) (setq s (next-overlay-change s)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8558 (get-char-property s 'invisible))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8559 s) |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
8560 (skip-chars-forward "^\n") |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
8561 (point))) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
8562 (defun org-find-invisible () |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
8563 (if (featurep 'noutline) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
8564 (let ((s (point))) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8565 (while (and (not (= (point-max) (setq s (next-overlay-change s)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8566 (not (get-char-property s 'invisible)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8567 s) |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
8568 (skip-chars-forward "^\r") |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
8569 (point))) |
58792 | 8570 |
8571 ;; HTML | |
8572 | |
8573 (defun org-get-current-options () | |
8574 "Return a string with current options as keyword options. | |
8575 Does include HTML export options as well as TODO and CATEGORY stuff." | |
8576 (format | |
8577 "#+TITLE: %s | |
8578 #+AUTHOR: %s | |
8579 #+EMAIL: %s | |
8580 #+LANGUAGE: %s | |
8581 #+TEXT: Some descriptive text to be emitted. Several lines OK. | |
8582 #+OPTIONS: H:%d num:%s toc:%s \\n:%s @:%s ::%s |:%s ^:%s *:%s TeX:%s | |
8583 #+CATEGORY: %s | |
8584 #+SEQ_TODO: %s | |
8585 #+TYP_TODO: %s | |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
8586 #+STARTUP: %s %s |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
8587 #+ARCHIVE: %s |
58792 | 8588 " |
8589 (buffer-name) (user-full-name) user-mail-address org-export-default-language | |
8590 org-export-headline-levels | |
8591 org-export-with-section-numbers | |
8592 org-export-with-toc | |
8593 org-export-preserve-breaks | |
8594 org-export-html-expand | |
8595 org-export-with-fixed-width | |
8596 org-export-with-tables | |
8597 org-export-with-sub-superscripts | |
8598 org-export-with-emphasize | |
8599 org-export-with-TeX-macros | |
8600 (file-name-nondirectory (buffer-file-name)) | |
8601 (if (equal org-todo-interpretation 'sequence) | |
8602 (mapconcat 'identity org-todo-keywords " ") | |
8603 "TODO FEEDBACK VERIFY DONE") | |
8604 (if (equal org-todo-interpretation 'type) | |
8605 (mapconcat 'identity org-todo-keywords " ") | |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
8606 "Me Jason Marie DONE") |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
8607 (cdr (assoc org-startup-folded |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8608 '((nil . "nofold")(t . "fold")(content . "content")))) |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
8609 (if org-startup-with-deadline-check "dlcheck" "nodlcheck") |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
8610 org-archive-location |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
8611 )) |
58792 | 8612 |
8613 (defun org-insert-export-options-template () | |
8614 "Insert into the buffer a template with information for exporting." | |
8615 (interactive) | |
8616 (if (not (bolp)) (newline)) | |
8617 (let ((s (org-get-current-options))) | |
8618 (and (string-match "#\\+CATEGORY" s) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8619 (setq s (substring s 0 (match-beginning 0)))) |
58792 | 8620 (insert s))) |
8621 | |
8622 (defun org-toggle-fixed-width-section (arg) | |
8623 "Toggle the fixed-width indicator at the beginning of lines in the region. | |
8624 If there is no active region, only acts on the current line. | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
8625 If the first non-white character in the first line of the region is a |
58792 | 8626 vertical bar \"|\", then the command removes the bar from all lines in |
8627 the region. If the first character is not a bar, the command adds a | |
8628 bar to all lines, in the column given by the beginning of the region. | |
8629 | |
8630 If there is a numerical prefix ARG, create ARG new lines starting with \"|\"." | |
8631 (interactive "P") | |
8632 (let* ((cc 0) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8633 (regionp (org-region-active-p)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8634 (beg (if regionp (region-beginning) (point))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8635 (end (if regionp (region-end))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8636 (nlines (or arg (if (and beg end) (count-lines beg end) 1))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8637 (re "[ \t]*\\(:\\)") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8638 off) |
58792 | 8639 (save-excursion |
8640 (goto-char beg) | |
8641 (setq cc (current-column)) | |
8642 (beginning-of-line 1) | |
8643 (setq off (looking-at re)) | |
8644 (while (> nlines 0) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8645 (setq nlines (1- nlines)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8646 (beginning-of-line 1) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8647 (cond |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8648 (arg |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8649 (move-to-column cc t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8650 (insert ":\n") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8651 (forward-line -1)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8652 ((and off (looking-at re)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8653 (replace-match "" t t nil 1)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8654 ((not off) (move-to-column cc t) (insert ":"))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8655 (forward-line 1))))) |
58792 | 8656 |
8657 (defun org-export-as-html-and-open (arg) | |
8658 "Export the outline as HTML and immediately open it with a browser. | |
8659 If there is an active region, export only the region. | |
8660 The prefix ARG specifies how many levels of the outline should become | |
8661 headlines. The default is 3. Lower levels will become bulleted lists." | |
8662 (interactive "P") | |
8663 (org-export-as-html arg 'hidden) | |
8664 (org-open-file (buffer-file-name))) | |
8665 | |
8666 (defun org-export-as-html-batch () | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
8667 "Call `org-export-as-html', may be used in batch processing as |
58792 | 8668 emacs --batch |
8669 --load=$HOME/lib/emacs/org.el | |
8670 --eval \"(setq org-export-headline-levels 2)\" | |
8671 --visit=MyFile --funcall org-export-as-html-batch" | |
8672 (org-export-as-html org-export-headline-levels 'hidden)) | |
8673 | |
8674 (defun org-export-as-html (arg &optional hidden) | |
8675 "Export the outline as a pretty HTML file. | |
8676 If there is an active region, export only the region. | |
8677 The prefix ARG specifies how many levels of the outline should become | |
8678 headlines. The default is 3. Lower levels will become bulleted lists." | |
8679 (interactive "P") | |
8680 (setq-default org-todo-line-regexp org-todo-line-regexp) | |
8681 (setq-default org-deadline-line-regexp org-deadline-line-regexp) | |
8682 (setq-default org-done-string org-done-string) | |
8683 (let* ((region-p (org-region-active-p)) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8684 (region |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8685 (buffer-substring |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8686 (if region-p (region-beginning) (point-min)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8687 (if region-p (region-end) (point-max)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8688 (all_lines |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8689 (org-skip-comments (org-split-string region "[\r\n]"))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8690 (lines (org-export-find-first-heading-line all_lines)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8691 (level 0) (line "") (origline "") txt todo |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8692 (umax nil) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8693 (filename (concat (file-name-sans-extension (buffer-file-name)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8694 ".html")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8695 (buffer (find-file-noselect filename)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8696 (levels-open (make-vector org-level-max nil)) |
58792 | 8697 (date (format-time-string "%Y/%m/%d" (current-time))) |
8698 (time (format-time-string "%X" (current-time))) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8699 (author user-full-name) |
58792 | 8700 (title (buffer-name)) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8701 (options nil) |
58792 | 8702 (email user-mail-address) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8703 (language org-export-default-language) |
58792 | 8704 (text nil) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8705 (lang-words nil) |
58792 | 8706 (head-count 0) cnt |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8707 (start 0) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8708 table-open type |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8709 table-buffer table-orig-buffer |
58792 | 8710 ) |
8711 (message "Exporting...") | |
8712 | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
8713 (setq org-last-level 1) |
58792 | 8714 (org-init-section-numbers) |
8715 | |
8716 ;; Search for the export key lines | |
8717 (org-parse-key-lines) | |
8718 (setq lang-words (or (assoc language org-export-language-setup) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8719 (assoc "en" org-export-language-setup))) |
58792 | 8720 |
8721 ;; Switch to the output buffer | |
8722 (if (or hidden (not org-export-html-show-new-buffer)) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8723 (set-buffer buffer) |
58792 | 8724 (switch-to-buffer-other-window buffer)) |
8725 (erase-buffer) | |
8726 (fundamental-mode) | |
8727 (let ((case-fold-search nil)) | |
8728 (if options (org-parse-export-options options)) | |
8729 (setq umax (if arg (prefix-numeric-value arg) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8730 org-export-headline-levels)) |
58792 | 8731 |
8732 ;; File header | |
8733 (insert (format | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8734 "<html lang=\"%s\"><head> |
58792 | 8735 <title>%s</title> |
8736 <meta http-equiv=\"Content-Type\" content=\"text/html\"> | |
8737 <meta name=generator content=\"Org-mode\"> | |
8738 <meta name=generated content=\"%s %s\"> | |
8739 <meta name=author content=\"%s\"> | |
8740 </head><body> | |
8741 " | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8742 language (org-html-expand title) date time author)) |
58792 | 8743 (if title (insert (concat "<H1 align=\"center\">" |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8744 (org-html-expand title) "</H1>\n"))) |
58792 | 8745 (if author (insert (concat (nth 1 lang-words) ": " author "\n"))) |
8746 (if email (insert (concat "<a href=\"mailto:" email "\"><" | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8747 email "></a>\n"))) |
58792 | 8748 (if (or author email) (insert "<br>\n")) |
8749 (if (and date time) (insert (concat (nth 2 lang-words) ": " | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8750 date " " time "<br>\n"))) |
58792 | 8751 (if text (insert (concat "<p>\n" (org-html-expand text)))) |
8752 (if org-export-with-toc | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8753 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8754 (insert (format "<H2>%s</H2>\n" (nth 3 lang-words))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8755 (insert "<ul>\n") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8756 (mapcar '(lambda (line) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8757 (if (string-match org-todo-line-regexp line) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8758 ;; This is a headline |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8759 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8760 (setq level (- (match-end 1) (match-beginning 1)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8761 txt (save-match-data |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8762 (org-html-expand |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8763 (match-string 3 line))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8764 todo |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8765 (or (and (match-beginning 2) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8766 (not (equal (match-string 2 line) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8767 org-done-string))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8768 ; TODO, not DONE |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8769 (and (= level umax) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8770 (org-search-todo-below |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8771 line lines level)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8772 (if org-export-with-section-numbers |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8773 (setq txt (concat (org-section-number level) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8774 " " txt))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8775 (if (<= level umax) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8776 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8777 (setq head-count (+ head-count 1)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8778 (if (> level org-last-level) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8779 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8780 (setq cnt (- level org-last-level)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8781 (while (>= (setq cnt (1- cnt)) 0) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8782 (insert "<ul>")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8783 (insert "\n"))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8784 (if (< level org-last-level) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8785 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8786 (setq cnt (- org-last-level level)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8787 (while (>= (setq cnt (1- cnt)) 0) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8788 (insert "</ul>")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8789 (insert "\n"))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8790 (insert |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8791 (format |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8792 (if todo |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8793 "<li><a href=\"#sec-%d\"><span style='color:red'>%s</span></a></li>\n" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8794 "<li><a href=\"#sec-%d\">%s</a></li>\n") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8795 head-count txt)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8796 (setq org-last-level level)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8797 )))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8798 lines) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8799 (while (> org-last-level 0) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8800 (setq org-last-level (1- org-last-level)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8801 (insert "</ul>\n")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8802 )) |
58792 | 8803 (setq head-count 0) |
8804 (org-init-section-numbers) | |
8805 (while (setq line (pop lines) origline line) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8806 ;; Protect the links |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8807 (setq start 0) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8808 (while (string-match org-link-maybe-angles-regexp line start) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8809 (setq start (match-end 0)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8810 (setq line (replace-match |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8811 (concat "\000" (match-string 1 line) "\000") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8812 t t line))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8813 |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8814 ;; replace "<" and ">" by "<" and ">" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8815 ;; handle @<..> HTML tags (replace "@>..<" by "<..>") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8816 (setq line (org-html-expand line)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8817 |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8818 ;; Verbatim lines |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8819 (if (and org-export-with-fixed-width |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8820 (string-match "^[ \t]*:\\(.*\\)" line)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8821 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8822 (let ((l (match-string 1 line))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8823 (while (string-match " " l) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8824 (setq l (replace-match " " t t l))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8825 (insert "\n<span style='font-family:Courier'>" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8826 l "</span>" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8827 (if (and lines |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8828 (not (string-match "^[ \t]+\\(:.*\\)" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8829 (car lines)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8830 "<br>\n" "\n")))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8831 (setq start 0) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8832 (while (string-match org-protected-link-regexp line start) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8833 (setq start (- (match-end 0) 2)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8834 (setq type (match-string 1 line)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8835 (cond |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8836 ((member type '("http" "https" "ftp" "mailto" "news")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8837 ;; standard URL |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8838 (setq line (replace-match |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
8839 ; "<a href=\"\\1:\\2\"><\\1:\\2></a>" |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8840 "<a href=\"\\1:\\2\">\\1:\\2</a>" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8841 nil nil line))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8842 ((string= type "file") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8843 ;; FILE link |
58792 | 8844 (let* ((filename (match-string 2 line)) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8845 (abs-p (file-name-absolute-p filename)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8846 (thefile (if abs-p (expand-file-name filename) filename)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8847 (thefile (save-match-data |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8848 (if (string-match ":[0-9]+$" thefile) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8849 (replace-match "" t t thefile) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8850 thefile))) |
58792 | 8851 (file-is-image-p |
8852 (save-match-data | |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
8853 (string-match (org-image-file-name-regexp) thefile)))) |
58792 | 8854 (setq line (replace-match |
8855 (if (and org-export-html-inline-images | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8856 file-is-image-p) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8857 (concat "<img src=\"" thefile "\"/>") |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
8858 (concat "<a href=\"" thefile "\">\\1:\\2</a>")) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8859 nil nil line)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8860 |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8861 ((member type '("bbdb" "vm" "wl" "rmail" "gnus" "shell")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8862 (setq line (replace-match |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8863 "<i><\\1:\\2></i>" nil nil line))))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8864 |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8865 ;; TODO items |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8866 (if (and (string-match org-todo-line-regexp line) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8867 (match-beginning 2)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8868 (if (equal (match-string 2 line) org-done-string) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8869 (setq line (replace-match |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8870 "<span style='color:green'>\\2</span>" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8871 nil nil line 2)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8872 (setq line (replace-match "<span style='color:red'>\\2</span>" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8873 nil nil line 2)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8874 |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8875 ;; DEADLINES |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8876 (if (string-match org-deadline-line-regexp line) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8877 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8878 (if (save-match-data |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8879 (string-match "<a href" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8880 (substring line 0 (match-beginning 0)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8881 nil ; Don't do the replacement - it is inside a link |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8882 (setq line (replace-match "<span style='color:red'>\\&</span>" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8883 nil nil line 1))))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8884 |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8885 (cond |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8886 ((string-match "^\\(\\*+\\)[ \t]*\\(.*\\)" line) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8887 ;; This is a headline |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8888 (setq level (- (match-end 1) (match-beginning 1)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8889 txt (match-string 2 line)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8890 (if (<= level umax) (setq head-count (+ head-count 1))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8891 (org-html-level-start level txt umax |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8892 (and org-export-with-toc (<= level umax)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8893 head-count)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8894 |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8895 ((and org-export-with-tables |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8896 (string-match "^\\([ \t]*\\)\\(|\\|\\+-+\\+\\)" line)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8897 (if (not table-open) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8898 ;; New table starts |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8899 (setq table-open t table-buffer nil table-orig-buffer nil)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8900 ;; Accumulate lines |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8901 (setq table-buffer (cons line table-buffer) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8902 table-orig-buffer (cons origline table-orig-buffer)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8903 (when (or (not lines) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8904 (not (string-match "^\\([ \t]*\\)\\(|\\|\\+-+\\+\\)" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8905 (car lines)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8906 (setq table-open nil |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8907 table-buffer (nreverse table-buffer) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8908 table-orig-buffer (nreverse table-orig-buffer)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8909 (insert (org-format-table-html table-buffer table-orig-buffer)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8910 (t |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8911 ;; Normal lines |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8912 ;; Lines starting with "-", and empty lines make new paragraph. |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
8913 ;; FIXME: Should we add + and *? |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8914 (if (string-match "^ *-\\|^[ \t]*$" line) (insert "<p>")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8915 (insert line (if org-export-preserve-breaks "<br>\n" "\n")))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8916 )) |
58792 | 8917 (if org-export-html-with-timestamp |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8918 (insert org-export-html-html-helper-timestamp)) |
58792 | 8919 (insert "</body>\n</html>\n") |
8920 (normal-mode) | |
8921 (save-buffer) | |
8922 (goto-char (point-min))))) | |
8923 | |
8924 (defun org-format-table-html (lines olines) | |
8925 "Find out which HTML converter to use and return the HTML code." | |
8926 (if (string-match "^[ \t]*|" (car lines)) | |
8927 ;; A normal org table | |
8928 (org-format-org-table-html lines) | |
8929 ;; Table made by table.el - test for spanning | |
8930 (let* ((hlines (delq nil (mapcar | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8931 (lambda (x) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8932 (if (string-match "^[ \t]*\\+-" x) x |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8933 nil)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8934 lines))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8935 (first (car hlines)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8936 (ll (and (string-match "\\S-+" first) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8937 (match-string 0 first))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8938 (re (concat "^[ \t]*" (regexp-quote ll))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8939 (spanning (delq nil (mapcar (lambda (x) (not (string-match re x))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8940 hlines)))) |
58792 | 8941 (if (and (not spanning) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8942 (not org-export-prefer-native-exporter-for-tables)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8943 ;; We can use my own converter with HTML conversions |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8944 (org-format-table-table-html lines) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8945 ;; Need to use the code generator in table.el, with the original text. |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8946 (org-format-table-table-html-using-table-generate-source olines))))) |
58792 | 8947 |
8948 (defun org-format-org-table-html (lines) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8949 "Format a table into html." |
58792 | 8950 (if (string-match "^[ \t]*|-" (car lines)) (setq lines (cdr lines))) |
8951 (setq lines (nreverse lines)) | |
8952 (if (string-match "^[ \t]*|-" (car lines)) (setq lines (cdr lines))) | |
8953 (setq lines (nreverse lines)) | |
8954 (let ((head (and org-export-highlight-first-table-line | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8955 (delq nil (mapcar |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8956 (lambda (x) (string-match "^[ \t]*|-" x)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8957 (cdr lines))))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8958 line fields html) |
58792 | 8959 (setq html (concat org-export-html-table-tag "\n")) |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
8960 (while (setq line (pop lines)) |
58792 | 8961 (catch 'next-line |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8962 (if (string-match "^[ \t]*|-" line) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8963 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8964 (setq head nil) ;; head ends here, first time around |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8965 ;; ignore this line |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8966 (throw 'next-line t))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8967 ;; Break the line into fields |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8968 (setq fields (org-split-string line "[ \t]*|[ \t]*")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8969 (setq html (concat |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8970 html |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8971 "<tr>" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8972 (mapconcat (lambda (x) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8973 (if head |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8974 (concat "<th>" x "</th>") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8975 (concat "<td valign=\"top\">" x "</td>"))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8976 fields "") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8977 "</tr>\n")))) |
58792 | 8978 (setq html (concat html "</table>\n")) |
8979 html)) | |
8980 | |
8981 (defun org-fake-empty-table-line (line) | |
8982 "Replace everything except \"|\" with spaces." | |
8983 (let ((i (length line)) | |
8984 (newstr (copy-sequence line))) | |
8985 (while (> i 0) | |
8986 (setq i (1- i)) | |
8987 (if (not (eq (aref newstr i) ?|)) | |
8988 (aset newstr i ?\ ))) | |
8989 newstr)) | |
8990 | |
8991 (defun org-format-table-table-html (lines) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8992 "Format a table generated by table.el into html. |
58792 | 8993 This conversion does *not* use `table-generate-source' from table.el. |
8994 This has the advantage that Org-mode's HTML conversions can be used. | |
8995 But it has the disadvantage, that no cell- or row-spanning is allowed." | |
8996 (let (line field-buffer | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8997 (head org-export-highlight-first-table-line) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
8998 fields html empty) |
58792 | 8999 (setq html (concat org-export-html-table-tag "\n")) |
9000 (while (setq line (pop lines)) | |
9001 (setq empty " ") | |
9002 (catch 'next-line | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9003 (if (string-match "^[ \t]*\\+-" line) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9004 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9005 (if field-buffer |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9006 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9007 (setq html (concat |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9008 html |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9009 "<tr>" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9010 (mapconcat |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9011 (lambda (x) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9012 (if (equal x "") (setq x empty)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9013 (if head |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9014 (concat "<th valign=\"top\">" x |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9015 "</th>\n") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9016 (concat "<td valign=\"top\">" x |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9017 "</td>\n"))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9018 field-buffer "\n") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9019 "</tr>\n")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9020 (setq head nil) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9021 (setq field-buffer nil))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9022 ;; Ignore this line |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9023 (throw 'next-line t))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9024 ;; Break the line into fields and store the fields |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9025 (setq fields (org-split-string line "[ \t]*|[ \t]*")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9026 (if field-buffer |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9027 (setq field-buffer (mapcar |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9028 (lambda (x) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9029 (concat x "<br>" (pop fields))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9030 field-buffer)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9031 (setq field-buffer fields)))) |
58792 | 9032 (setq html (concat html "</table>\n")) |
9033 html)) | |
9034 | |
9035 (defun org-format-table-table-html-using-table-generate-source (lines) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9036 "Format a table into html, using `table-generate-source' from table.el. |
58792 | 9037 This has the advantage that cell- or row-spanning is allowed. |
9038 But it has the disadvantage, that Org-mode's HTML conversions cannot be used." | |
9039 (require 'table) | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9040 (with-current-buffer (get-buffer-create " org-tmp1 ") |
58792 | 9041 (erase-buffer) |
9042 (insert (mapconcat 'identity lines "\n")) | |
9043 (goto-char (point-min)) | |
9044 (if (not (re-search-forward "|[^+]" nil t)) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9045 (error "Error processing table")) |
58792 | 9046 (table-recognize-table) |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9047 (with-current-buffer (get-buffer-create " org-tmp2 ") (erase-buffer)) |
58792 | 9048 (table-generate-source 'html " org-tmp2 ") |
9049 (set-buffer " org-tmp2 ") | |
9050 (buffer-substring (point-min) (point-max)))) | |
9051 | |
9052 (defun org-html-expand (string) | |
62076
4f2150e05f24
(org-get-entries-from-diary): Remove unused vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61924
diff
changeset
|
9053 "Prepare STRING for HTML export. Applies all active conversions." |
58792 | 9054 ;; First check if there is a link in the line - if yes, apply conversions |
9055 ;; only before the start of the link. | |
9056 (let* ((m (string-match org-link-regexp string)) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9057 (s (if m (substring string 0 m) string)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9058 (r (if m (substring string m) ""))) |
58792 | 9059 ;; convert < to < and > to > |
9060 (while (string-match "<" s) | |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
9061 (setq s (replace-match "<" t t s))) |
58792 | 9062 (while (string-match ">" s) |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
9063 (setq s (replace-match ">" t t s))) |
58792 | 9064 (if org-export-html-expand |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9065 (while (string-match "@<\\([^&]*\\)>" s) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9066 (setq s (replace-match "<\\1>" nil nil s)))) |
58792 | 9067 (if org-export-with-emphasize |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9068 (setq s (org-export-html-convert-emphasize s))) |
58792 | 9069 (if org-export-with-sub-superscripts |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9070 (setq s (org-export-html-convert-sub-super s))) |
58792 | 9071 (if org-export-with-TeX-macros |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9072 (let ((start 0) wd ass) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9073 (while (setq start (string-match "\\\\\\([a-zA-Z]+\\)" s start)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9074 (setq wd (match-string 1 s)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9075 (if (setq ass (assoc wd org-html-entities)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9076 (setq s (replace-match (or (cdr ass) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9077 (concat "&" (car ass) ";")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9078 t t s)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9079 (setq start (+ start (length wd))))))) |
58792 | 9080 (concat s r))) |
9081 | |
9082 (defun org-create-multibrace-regexp (left right n) | |
9083 "Create a regular expression which will match a balanced sexp. | |
9084 Opening delimiter is LEFT, and closing delimiter is RIGHT, both given | |
9085 as single character strings. | |
9086 The regexp returned will match the entire expression including the | |
9087 delimiters. It will also define a single group which contains the | |
62076
4f2150e05f24
(org-get-entries-from-diary): Remove unused vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61924
diff
changeset
|
9088 match except for the outermost delimiters. The maximum depth of |
4f2150e05f24
(org-get-entries-from-diary): Remove unused vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61924
diff
changeset
|
9089 stacked delimiters is N. Escaping delimiters is not possible." |
58792 | 9090 (let* ((nothing (concat "[^" "\\" left "\\" right "]*?")) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9091 (or "\\|") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9092 (re nothing) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9093 (next (concat "\\(?:" nothing left nothing right "\\)+" nothing))) |
58792 | 9094 (while (> n 1) |
9095 (setq n (1- n) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9096 re (concat re or next) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9097 next (concat "\\(?:" nothing left next right "\\)+" nothing))) |
58792 | 9098 (concat left "\\(" re "\\)" right))) |
9099 | |
9100 (defvar org-match-substring-regexp | |
9101 (concat | |
9102 "\\([^\\]\\)\\([_^]\\)\\(" | |
9103 "\\(" (org-create-multibrace-regexp "{" "}" org-match-sexp-depth) "\\)" | |
9104 "\\|" | |
9105 "\\(" (org-create-multibrace-regexp "(" ")" org-match-sexp-depth) "\\)" | |
9106 "\\|" | |
9107 "\\(\\(?:\\*\\|[-+]?[^-+*!@#$%^_ \t\r\n,:\"?<>~;./{}=()]+\\)\\)\\)") | |
9108 "The regular expression matching a sub- or superscript.") | |
9109 | |
9110 (defun org-export-html-convert-sub-super (string) | |
9111 "Convert sub- and superscripts in STRING to HTML." | |
9112 (let (key c) | |
9113 (while (string-match org-match-substring-regexp string) | |
9114 (setq key (if (string= (match-string 2 string) "_") "sub" "sup")) | |
9115 (setq c (or (match-string 8 string) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9116 (match-string 6 string) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9117 (match-string 5 string))) |
58792 | 9118 (setq string (replace-match |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9119 (concat (match-string 1 string) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9120 "<" key ">" c "</" key ">") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9121 t t string))) |
58792 | 9122 (while (string-match "\\\\\\([_^]\\)" string) |
9123 (setq string (replace-match (match-string 1 string) t t string)))) | |
9124 string) | |
9125 | |
9126 (defun org-export-html-convert-emphasize (string) | |
9127 (while (string-match | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9128 "\\(\\s-\\|^\\)\\(\\*\\([a-zA-Z]+\\)\\*\\)\\([^a-zA-Z*]\\|$\\)" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9129 string) |
58792 | 9130 (setq string (replace-match |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9131 (concat "<b>" (match-string 3 string) "</b>") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9132 t t string 2))) |
58792 | 9133 (while (string-match |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9134 "\\(\\s-\\|^\\)\\(/\\([a-zA-Z]+\\)/\\)\\([^a-zA-Z*]\\|$\\)" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9135 string) |
58792 | 9136 (setq string (replace-match |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9137 (concat "<i>" (match-string 3 string) "</i>") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9138 t t string 2))) |
58792 | 9139 (while (string-match |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9140 "\\(\\s-\\|^\\)\\(_\\([a-zA-Z]+\\)_\\)\\([^a-zA-Z*]\\|$\\)" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9141 string) |
58792 | 9142 (setq string (replace-match |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9143 (concat "<u>" (match-string 3 string) "</u>") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9144 t t string 2))) |
58792 | 9145 string) |
9146 | |
9147 (defun org-parse-key-lines () | |
9148 "Find the special key lines with the information for exporters." | |
9149 (save-excursion | |
9150 (goto-char 0) | |
9151 (let ((re (org-make-options-regexp | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9152 '("TITLE" "AUTHOR" "EMAIL" "TEXT" "OPTIONS" "LANGUAGE"))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9153 key) |
58792 | 9154 (while (re-search-forward re nil t) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9155 (setq key (match-string 1)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9156 (cond ((string-equal key "TITLE") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9157 (setq title (match-string 2))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9158 ((string-equal key "AUTHOR") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9159 (setq author (match-string 2))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9160 ((string-equal key "EMAIL") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9161 (setq email (match-string 2))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9162 ((string-equal key "LANGUAGE") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9163 (setq language (match-string 2))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9164 ((string-equal key "TEXT") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9165 (setq text (concat text "\n" (match-string 2)))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9166 ((string-equal key "OPTIONS") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9167 (setq options (match-string 2)))))))) |
58792 | 9168 |
9169 (defun org-parse-export-options (s) | |
9170 "Parse the export options line." | |
9171 (let ((op '(("H" . org-export-headline-levels) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9172 ("num" . org-export-with-section-numbers) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9173 ("toc" . org-export-with-toc) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9174 ("\\n" . org-export-preserve-breaks) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9175 ("@" . org-export-html-expand) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9176 (":" . org-export-with-fixed-width) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9177 ("|" . org-export-with-tables) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9178 ("^" . org-export-with-sub-superscripts) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9179 ("*" . org-export-with-emphasize) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9180 ("TeX" . org-export-with-TeX-macros))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9181 o) |
58792 | 9182 (while (setq o (pop op)) |
9183 (if (string-match (concat (regexp-quote (car o)) ":\\([^ \t\n\r;,.]*\\)") | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9184 s) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9185 (set (make-local-variable (cdr o)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9186 (car (read-from-string (match-string 1 s)))))))) |
58792 | 9187 |
9188 (defun org-html-level-start (level title umax with-toc head-count) | |
9189 "Insert a new level in HTML export." | |
9190 (let ((l (1+ (max level umax)))) | |
9191 (while (<= l org-level-max) | |
9192 (if (aref levels-open (1- l)) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9193 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9194 (org-html-level-close l) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9195 (aset levels-open (1- l) nil))) |
58792 | 9196 (setq l (1+ l))) |
9197 (if (> level umax) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9198 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9199 (if (aref levels-open (1- level)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9200 (insert "<li>" title "<p>\n") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9201 (aset levels-open (1- level) t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9202 (insert "<ul><li>" title "<p>\n"))) |
58792 | 9203 (if org-export-with-section-numbers |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9204 (setq title (concat (org-section-number level) " " title))) |
58792 | 9205 (setq level (+ level 1)) |
9206 (if with-toc | |
9207 (insert (format "\n<H%d><a name=\"sec-%d\">%s</a></H%d>\n" | |
9208 level head-count title level)) | |
9209 (insert (format "\n<H%d>%s</H%d>\n" level title level)))))) | |
9210 | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9211 (defun org-html-level-close (&rest args) |
58792 | 9212 "Terminate one level in HTML export." |
9213 (insert "</ul>")) | |
9214 | |
9215 | |
9216 ;; Variable holding the vector with section numbers | |
9217 (defvar org-section-numbers (make-vector org-level-max 0)) | |
9218 | |
9219 (defun org-init-section-numbers () | |
9220 "Initialize the vector for the section numbers." | |
9221 (let* ((level -1) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9222 (numbers (nreverse (org-split-string "" "\\."))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9223 (depth (1- (length org-section-numbers))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9224 (i depth) number-string) |
58792 | 9225 (while (>= i 0) |
9226 (if (> i level) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9227 (aset org-section-numbers i 0) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9228 (setq number-string (or (car numbers) "0")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9229 (if (string-match "\\`[A-Z]\\'" number-string) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9230 (aset org-section-numbers i |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9231 (- (string-to-char number-string) ?A -1)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9232 (aset org-section-numbers i (string-to-int number-string))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9233 (pop numbers)) |
58792 | 9234 (setq i (1- i))))) |
9235 | |
9236 (defun org-section-number (&optional level) | |
9237 "Return a string with the current section number. | |
9238 When LEVEL is non-nil, increase section numbers on that level." | |
9239 (let* ((depth (1- (length org-section-numbers))) idx n (string "")) | |
9240 (when level | |
9241 (when (> level -1) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9242 (aset org-section-numbers |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9243 level (1+ (aref org-section-numbers level)))) |
58792 | 9244 (setq idx (1+ level)) |
9245 (while (<= idx depth) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9246 (if (not (= idx 1)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9247 (aset org-section-numbers idx 0)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9248 (setq idx (1+ idx)))) |
58792 | 9249 (setq idx 0) |
9250 (while (<= idx depth) | |
9251 (setq n (aref org-section-numbers idx)) | |
9252 (setq string (concat string (if (not (string= string "")) "." "") | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9253 (int-to-string n))) |
58792 | 9254 (setq idx (1+ idx))) |
9255 (save-match-data | |
9256 (if (string-match "\\`\\([@0]\\.\\)+" string) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9257 (setq string (replace-match "" nil nil string))) |
58792 | 9258 (if (string-match "\\(\\.0\\)+\\'" string) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9259 (setq string (replace-match "" nil nil string)))) |
58792 | 9260 string)) |
9261 | |
9262 | |
9263 ;;; Key bindings | |
9264 | |
9265 ;; - Bindings in Org-mode map are currently | |
9266 ;; 0123456789abcdefghijklmnopqrstuvwxyz!?@#$%^&-+*/=()_{}[]:;"|,.<>~`'\t the alphabet | |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9267 ;; abcd fgh j lmnopqrstuvwxyz ? #$ -+*/= [] ; |,.<>~ \t necessary bindings |
58792 | 9268 ;; e (?) useful from outline-mode |
9269 ;; i k @ expendable from outline-mode | |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9270 ;; 0123456789 ! %^& ()_{} " `' free |
58792 | 9271 |
9272 (define-key org-mode-map "\C-i" 'org-cycle) | |
9273 (define-key org-mode-map [(meta tab)] 'org-complete) | |
9274 (define-key org-mode-map "\M-\C-i" 'org-complete) | |
9275 (define-key org-mode-map [(meta shift left)] 'org-shiftmetaleft) | |
9276 (define-key org-mode-map [(meta left)] 'org-metaleft) | |
9277 (define-key org-mode-map [(meta shift right)] 'org-shiftmetaright) | |
9278 (define-key org-mode-map [(meta shift up)] 'org-shiftmetaup) | |
9279 (define-key org-mode-map [(meta shift down)] 'org-shiftmetadown) | |
9280 (define-key org-mode-map [(meta right)] 'org-metaright) | |
9281 (define-key org-mode-map [(meta up)] 'org-metaup) | |
9282 (define-key org-mode-map [(meta down)] 'org-metadown) | |
9283 ;(define-key org-mode-map "\C-c\C-h\C-w" 'org-cut-subtree) | |
9284 ;(define-key org-mode-map "\C-c\C-h\M-w" 'org-copy-subtree) | |
9285 ;(define-key org-mode-map "\C-c\C-h\C-y" 'org-paste-subtree) | |
9286 (define-key org-mode-map "\C-c\C-h\C-w" 'org-cut-special) | |
9287 (define-key org-mode-map "\C-c\C-h\M-w" 'org-copy-special) | |
9288 (define-key org-mode-map "\C-c\C-h\C-y" 'org-paste-special) | |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
9289 (define-key org-mode-map "\C-c$" 'org-archive-subtree) |
58792 | 9290 (define-key org-mode-map "\C-c\C-j" 'org-goto) |
9291 (define-key org-mode-map "\C-c\C-t" 'org-todo) | |
9292 (define-key org-mode-map "\C-c\C-s" 'org-schedule) | |
9293 (define-key org-mode-map "\C-c\C-d" 'org-deadline) | |
9294 (define-key org-mode-map "\C-c;" 'org-toggle-comment) | |
9295 (define-key org-mode-map "\C-c\C-v" 'org-show-todo-tree) | |
9296 (define-key org-mode-map "\C-c\C-w" 'org-check-deadlines) | |
9297 (define-key org-mode-map "\C-c/" 'org-occur) ; Minor-mode reserved | |
9298 (define-key org-mode-map "\C-c\C-m" 'org-insert-heading) | |
9299 (define-key org-mode-map "\M-\C-m" 'org-insert-heading) | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9300 (define-key org-mode-map [(meta shift return)] 'org-insert-todo-heading) |
58792 | 9301 (define-key org-mode-map "\C-c\C-l" 'org-insert-link) |
9302 (define-key org-mode-map "\C-c\C-o" 'org-open-at-point) | |
9303 (define-key org-mode-map "\C-c\C-z" 'org-time-stamp) ; Alternative binding | |
9304 (define-key org-mode-map "\C-c." 'org-time-stamp) ; Minor-mode reserved | |
9305 (define-key org-mode-map "\C-c," 'org-priority) ; Minor-mode reserved | |
9306 (define-key org-mode-map "\C-c\C-y" 'org-evaluate-time-range) | |
9307 (define-key org-mode-map "\C-c>" 'org-goto-calendar) | |
9308 (define-key org-mode-map "\C-c<" 'org-date-from-calendar) | |
9309 (define-key org-mode-map "\C-c[" 'org-add-file) | |
9310 (define-key org-mode-map "\C-c]" 'org-remove-file) | |
9311 (define-key org-mode-map "\C-c\C-r" 'org-timeline) | |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
9312 (define-key org-mode-map (org-key 'S-up) 'org-shiftup) |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
9313 (define-key org-mode-map (org-key 'S-down) 'org-shiftdown) |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
9314 (define-key org-mode-map (org-key 'S-left) 'org-timestamp-down-day) |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
9315 (define-key org-mode-map (org-key 'S-right) 'org-timestamp-up-day) |
58792 | 9316 (define-key org-mode-map "\C-c-" 'org-table-insert-hline) |
64078
ebf5ec3a071e
(org-file-apps-defaults-gnu): Renamed from org-file-apps-defaults-linux.
Richard M. Stallman <rms@gnu.org>
parents:
64057
diff
changeset
|
9317 ;; The following line is necessary for German keyboards under Suse GNU/Linux |
58792 | 9318 (unless org-xemacs-p |
9319 (define-key org-mode-map [S-iso-lefttab] 'org-shifttab)) | |
9320 (define-key org-mode-map [(shift tab)] 'org-shifttab) | |
9321 (define-key org-mode-map "\C-c\C-c" 'org-ctrl-c-ctrl-c) | |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
9322 (define-key org-mode-map "\C-m" 'org-return) |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
9323 (define-key org-mode-map (org-key 'S-return) 'org-table-copy-down) |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9324 (define-key org-mode-map [(meta return)] 'org-meta-return) |
58792 | 9325 (define-key org-mode-map "\C-c?" 'org-table-current-column) |
9326 (define-key org-mode-map "\C-c " 'org-table-blank-field) | |
9327 (define-key org-mode-map "\C-c+" 'org-table-sum) | |
9328 (define-key org-mode-map "\C-c|" 'org-table-toggle-vline-visibility) | |
9329 (define-key org-mode-map "\C-c=" 'org-table-eval-formula) | |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
9330 (define-key org-mode-map "\C-c'" 'org-table-edit-formulas) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9331 (define-key org-mode-map "\C-c*" 'org-table-recalculate) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9332 (define-key org-mode-map [(control ?#)] 'org-table-rotate-recalc-marks) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9333 (define-key org-mode-map "\C-c~" 'org-table-create-with-table.el) |
58792 | 9334 (define-key org-mode-map "\C-c\C-q" 'org-table-wrap-region) |
9335 (define-key org-mode-map "\C-c\C-xa" 'org-export-as-ascii) | |
9336 (define-key org-mode-map "\C-c\C-x\C-a" 'org-export-as-ascii) | |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
9337 (define-key org-mode-map "\C-c\C-xv" 'org-export-copy-visible) |
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
9338 (define-key org-mode-map "\C-c\C-x\C-v" 'org-export-copy-visible) |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
9339 ;(define-key org-mode-map "\C-c\C-xo" 'org-export-as-opml) |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
9340 ;(define-key org-mode-map "\C-c\C-x\C-o" 'org-export-as-opml) |
58792 | 9341 (define-key org-mode-map "\C-c\C-xt" 'org-insert-export-options-template) |
9342 (define-key org-mode-map "\C-c:" 'org-toggle-fixed-width-section) | |
9343 (define-key org-mode-map "\C-c\C-xh" 'org-export-as-html) | |
9344 (define-key org-mode-map "\C-c\C-x\C-h" 'org-export-as-html-and-open) | |
9345 | |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9346 (defsubst org-table-p () (org-at-table-p)) |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9347 |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9348 (defun org-self-insert-command (N) |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9349 "Like `self-insert-command', use overwrite-mode for whitespace in tables. |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9350 If the cursor is in a table looking at whitespace, the whitespace is |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9351 overwritten, and the table is not marked as requiring realignment." |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9352 (interactive "p") |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9353 (if (and (org-table-p) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9354 (eq N 1) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9355 (looking-at "[^|\n]* +|")) |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9356 (let (org-table-may-need-update) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9357 (goto-char (1- (match-end 0))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9358 (delete-backward-char 1) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9359 (goto-char (match-beginning 0)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9360 (self-insert-command N)) |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9361 (setq org-table-may-need-update t) |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9362 (self-insert-command N))) |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9363 |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9364 ;; FIXME: |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9365 ;; The following two functions might still be optimized to trigger |
61134
ac45ed541a16
* org.el (org-agenda-phases-of-moon, org-agenda-sunrise-sunset)
Carsten Dominik <dominik@science.uva.nl>
parents:
60918
diff
changeset
|
9366 ;; re-alignment less frequently. |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9367 |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9368 (defun org-delete-backward-char (N) |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9369 "Like `delete-backward-char', insert whitespace at field end in tables. |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9370 When deleting backwards, in tables this function will insert whitespace in |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9371 front of the next \"|\" separator, to keep the table aligned. The table will |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9372 still be marked for re-alignment, because a narrow field may lead to a |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9373 reduced column width." |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9374 (interactive "p") |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9375 (if (and (org-table-p) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9376 (eq N 1) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9377 (string-match "|" (buffer-substring (point-at-bol) (point))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9378 (looking-at ".*?|")) |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9379 (let ((pos (point))) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9380 (backward-delete-char N) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9381 (skip-chars-forward "^|") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9382 (insert " ") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9383 (goto-char (1- pos))) |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9384 (backward-delete-char N))) |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9385 |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9386 (defun org-delete-char (N) |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9387 "Like `delete-char', but insert whitespace at field end in tables. |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9388 When deleting characters, in tables this function will insert whitespace in |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9389 front of the next \"|\" separator, to keep the table aligned. The table |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9390 will still be marked for re-alignment, because a narrow field may lead to |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9391 a reduced column width." |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9392 (interactive "p") |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9393 (if (and (org-table-p) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9394 (not (bolp)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9395 (not (= (char-after) ?|)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9396 (eq N 1)) |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9397 (if (looking-at ".*?|") |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9398 (let ((pos (point))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9399 (replace-match (concat |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9400 (substring (match-string 0) 1 -1) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9401 " |")) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9402 (goto-char pos))) |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9403 (delete-char N))) |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9404 |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9405 ;; How to do this: Measure non-white length of current string |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9406 ;; If equal to column width, we should realign. |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9407 |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9408 (when (eq org-enable-table-editor 'optimized) |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9409 ;; If the user wants maximum table support, we need to hijack |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9410 ;; some standard editing functions |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9411 (substitute-key-definition 'self-insert-command 'org-self-insert-command |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9412 org-mode-map global-map) |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9413 (substitute-key-definition 'delete-char 'org-delete-char |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9414 org-mode-map global-map) |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9415 (substitute-key-definition 'delete-backward-char 'org-delete-backward-char |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9416 org-mode-map global-map) |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9417 (define-key org-mode-map "|" 'self-insert-command)) |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9418 |
58792 | 9419 (defun org-shiftcursor-error () |
9420 "Throw an error because Shift-Cursor command was applied in wrong context." | |
63431
fd4b70bc23a4
(org-promote, org-evaluate-time-range, org-agenda-next-date-line,
Juanma Barranquero <lekktu@gmail.com>
parents:
63367
diff
changeset
|
9421 (error "This command is only active in tables and on headlines")) |
58792 | 9422 |
9423 (defun org-shifttab () | |
9424 "Call `(org-cycle t)' or `org-table-previous-field'." | |
9425 (interactive) | |
9426 (cond | |
9427 ((org-at-table-p) (org-table-previous-field)) | |
9428 (t (org-cycle '(4))))) | |
9429 | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9430 (defun org-shiftmetaleft () |
58792 | 9431 "Call `org-promote-subtree' or `org-table-delete-column'." |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9432 (interactive) |
58792 | 9433 (cond |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9434 ((org-at-table-p) (org-table-delete-column)) |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9435 ((org-on-heading-p) (org-promote-subtree)) |
58792 | 9436 (t (org-shiftcursor-error)))) |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9437 |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9438 (defun org-shiftmetaright () |
58792 | 9439 "Call `org-demote-subtree' or `org-table-insert-column'." |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9440 (interactive) |
58792 | 9441 (cond |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9442 ((org-at-table-p) (org-table-insert-column)) |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9443 ((org-on-heading-p) (org-demote-subtree)) |
58792 | 9444 (t (org-shiftcursor-error)))) |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9445 |
58792 | 9446 (defun org-shiftmetaup (&optional arg) |
9447 "Call `org-move-subtree-up' or `org-table-kill-row'." | |
9448 (interactive "P") | |
9449 (cond | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9450 ((org-at-table-p) (org-table-kill-row)) |
58792 | 9451 ((org-on-heading-p) (org-move-subtree-up arg)) |
9452 (t (org-shiftcursor-error)))) | |
9453 (defun org-shiftmetadown (&optional arg) | |
9454 "Call `org-move-subtree-down' or `org-table-insert-row'." | |
9455 (interactive "P") | |
9456 (cond | |
9457 ((org-at-table-p) (org-table-insert-row arg)) | |
9458 ((org-on-heading-p) (org-move-subtree-down arg)) | |
9459 (t (org-shiftcursor-error)))) | |
9460 | |
9461 (defun org-metaleft (&optional arg) | |
9462 "Call `org-do-promote' or `org-table-move-column' to left." | |
9463 (interactive "P") | |
9464 (cond | |
9465 ((org-at-table-p) (org-table-move-column 'left)) | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9466 ((or (org-on-heading-p) (org-region-active-p)) (org-do-promote)) |
58792 | 9467 (t (backward-word (prefix-numeric-value arg))))) |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9468 |
58792 | 9469 (defun org-metaright (&optional arg) |
9470 "Call `org-do-demote' or `org-table-move-column' to right." | |
9471 (interactive "P") | |
9472 (cond | |
9473 ((org-at-table-p) (org-table-move-column nil)) | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9474 ((or (org-on-heading-p) (org-region-active-p)) (org-do-demote)) |
58792 | 9475 (t (forward-word (prefix-numeric-value arg))))) |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9476 |
58792 | 9477 (defun org-metaup (&optional arg) |
9478 "Call `org-move-subtree-up' or `org-table-move-row' up." | |
9479 (interactive "P") | |
9480 (cond | |
9481 ((org-at-table-p) (org-table-move-row 'up)) | |
9482 ((org-on-heading-p) (org-move-subtree-up arg)) | |
9483 (t (org-shiftcursor-error)))) | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9484 |
58792 | 9485 (defun org-metadown (&optional arg) |
9486 "Call `org-move-subtree-down' or `org-table-move-row' down." | |
9487 (interactive "P") | |
9488 (cond | |
9489 ((org-at-table-p) (org-table-move-row nil)) | |
9490 ((org-on-heading-p) (org-move-subtree-down arg)) | |
9491 (t (org-shiftcursor-error)))) | |
9492 | |
9493 (defun org-shiftup (&optional arg) | |
9494 "Call `org-timestamp-up' or `org-priority-up'." | |
9495 (interactive "P") | |
9496 (cond | |
9497 ((org-at-timestamp-p) (org-timestamp-up arg)) | |
9498 (t (org-priority-up)))) | |
9499 | |
9500 (defun org-shiftdown (&optional arg) | |
9501 "Call `org-timestamp-down' or `org-priority-down'." | |
9502 (interactive "P") | |
9503 (cond | |
9504 ((org-at-timestamp-p) (org-timestamp-down arg)) | |
9505 (t (org-priority-down)))) | |
9506 | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9507 (defun org-copy-special () |
58792 | 9508 "Call either `org-table-copy' or `org-copy-subtree'." |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9509 (interactive) |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
9510 (call-interactively |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9511 (if (org-at-table-p) 'org-table-copy-region 'org-copy-subtree))) |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9512 |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9513 (defun org-cut-special () |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9514 "Call either `org-table-copy' or `org-cut-subtree'." |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9515 (interactive) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9516 (call-interactively |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9517 (if (org-at-table-p) 'org-table-cut-region 'org-cut-subtree))) |
58792 | 9518 |
9519 (defun org-paste-special (arg) | |
9520 "Call either `org-table-paste-rectangle' or `org-paste-subtree'." | |
9521 (interactive "P") | |
9522 (if (org-at-table-p) | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9523 (org-table-paste-rectangle) |
58792 | 9524 (org-paste-subtree arg))) |
9525 | |
9526 (defun org-ctrl-c-ctrl-c (&optional arg) | |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9527 "Call realign table, or recognize a table.el table, or update keywords. |
58792 | 9528 When the cursor is inside a table created by the table.el package, |
9529 activate that table. Otherwise, if the cursor is at a normal table | |
9530 created with org.el, re-align that table. This command works even if | |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
9531 the automatic table editor has been turned off. |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9532 If the cursor is in one of the special #+KEYWORD lines, this triggers |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9533 scanning the buffer for these lines and updating the information." |
58792 | 9534 (interactive "P") |
9535 (let ((org-enable-table-editor t)) | |
9536 (cond | |
9537 ((org-at-table.el-p) | |
9538 (require 'table) | |
9539 (beginning-of-line 1) | |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9540 (re-search-forward "|" (save-excursion (end-of-line 2) (point))) |
58792 | 9541 (table-recognize-table)) |
9542 ((org-at-table-p) | |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9543 (org-table-maybe-eval-formula) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9544 (if arg |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9545 (org-table-recalculate t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9546 (org-table-maybe-recalculate-line)) |
58792 | 9547 (org-table-align)) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9548 ((save-excursion (beginning-of-line 1) (looking-at "#\\+\\([A-Z]+\\)")) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9549 (cond |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9550 ((equal (match-string 1) "TBLFM") |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9551 ;; Recalculate the table before this line |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9552 (save-excursion |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9553 (beginning-of-line 1) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9554 (skip-chars-backward " \r\n\t") |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9555 (if (org-at-table-p) (org-table-recalculate t)))) |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9556 (t |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9557 (let ((org-inhibit-startup t)) (org-mode))))) |
58792 | 9558 ((org-region-active-p) |
9559 (org-table-convert-region (region-beginning) (region-end) arg)) | |
9560 ((and (region-beginning) (region-end)) | |
9561 (if (y-or-n-p "Convert inactive region to table? ") | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9562 (org-table-convert-region (region-beginning) (region-end) arg) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9563 (error "Abort"))) |
63431
fd4b70bc23a4
(org-promote, org-evaluate-time-range, org-agenda-next-date-line,
Juanma Barranquero <lekktu@gmail.com>
parents:
63367
diff
changeset
|
9564 (t (error "No table at point, and no region to make one"))))) |
58792 | 9565 |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9566 (defun org-return () |
58792 | 9567 "Call `org-table-next-row' or `newline'." |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9568 (interactive) |
58792 | 9569 (cond |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9570 ((org-at-table-p) |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9571 (org-table-justify-field-maybe) |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9572 (org-table-next-row)) |
58792 | 9573 (t (newline)))) |
9574 | |
59539
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9575 (defun org-meta-return (&optional arg) |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9576 "Call `org-insert-heading' or `org-table-wrap-region'." |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9577 (interactive "P") |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9578 (cond |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9579 ((org-at-table-p) |
998101ef8562
2005-01-14 Carsten Dominik <dominik@science.uva.nl>
Carsten Dominik <dominik@science.uva.nl>
parents:
58841
diff
changeset
|
9580 (org-table-wrap-region arg)) |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9581 (t (org-insert-heading)))) |
58792 | 9582 |
9583 ;;; Menu entries | |
9584 | |
9585 ;; Define the Org-mode menus | |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9586 (easy-menu-define org-tbl-menu org-mode-map "Tbl menu" |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9587 '("Tbl" |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9588 ["Align" org-ctrl-c-ctrl-c (org-at-table-p)] |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9589 ["Next Field" org-cycle (org-at-table-p)] |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9590 ["Previous Field" org-shifttab (org-at-table-p)] |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9591 ["Next Row" org-return (org-at-table-p)] |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9592 "--" |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9593 ["Blank Field" org-table-blank-field (org-at-table-p)] |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9594 ["Copy Field from Above" org-table-copy-down (org-at-table-p)] |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9595 "--" |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9596 ("Column" |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9597 ["Move Column Left" org-metaleft (org-at-table-p)] |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9598 ["Move Column Right" org-metaright (org-at-table-p)] |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9599 ["Delete Column" org-shiftmetaleft (org-at-table-p)] |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9600 ["Insert Column" org-shiftmetaright (org-at-table-p)]) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9601 ("Row" |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9602 ["Move Row Up" org-metaup (org-at-table-p)] |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9603 ["Move Row Down" org-metadown (org-at-table-p)] |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9604 ["Delete Row" org-shiftmetaup (org-at-table-p)] |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9605 ["Insert Row" org-shiftmetadown (org-at-table-p)] |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9606 "--" |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9607 ["Insert Hline" org-table-insert-hline (org-at-table-p)]) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9608 ("Rectangle" |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9609 ["Copy Rectangle" org-copy-special (org-at-table-p)] |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9610 ["Cut Rectangle" org-cut-special (org-at-table-p)] |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9611 ["Paste Rectangle" org-paste-special (org-at-table-p)] |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9612 ["Fill Rectangle" org-table-wrap-region (org-at-table-p)]) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9613 "--" |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9614 ("Calculate" |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
9615 ["Set Column Formula" org-table-eval-formula (org-at-table-p)] |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
9616 ["Set Named Field Formula" (org-table-eval-formula '(4)) :active (org-at-table-p) :keys "C-u C-c ="] |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
9617 ["Edit Formulas" org-table-edit-formulas (org-at-table-p)] |
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
9618 "--" |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9619 ["Recalculate line" org-table-recalculate (org-at-table-p)] |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9620 ["Recalculate all" (lambda () (interactive) (org-table-recalculate '(4))) :active (org-at-table-p) :keys "C-u C-c *"] |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9621 ["Toggle Recalculate Mark" org-table-rotate-recalc-marks (org-at-table-p)] |
64515
3f75dfc753c0
(org-table-column-names, org-table-column-name-regexp)
Carsten Dominik <dominik@science.uva.nl>
parents:
64084
diff
changeset
|
9622 "--" |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
9623 ["Sum Column/Rectangle" org-table-sum |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9624 (or (org-at-table-p) (org-region-active-p))] |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9625 ["Which Column?" org-table-current-column (org-at-table-p)]) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9626 ["Debug Formulas" |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9627 (setq org-table-formula-debug (not org-table-formula-debug)) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9628 :style toggle :selected org-table-formula-debug] |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9629 "--" |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9630 ["Invisible Vlines" org-table-toggle-vline-visibility |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9631 :style toggle :selected (org-in-invisibility-spec-p '(org-table))] |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9632 "--" |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9633 ["Create" org-table-create (and (not (org-at-table-p)) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9634 org-enable-table-editor)] |
63832
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9635 ["Convert Region" org-ctrl-c-ctrl-c (not (org-at-table-p 'any))] |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9636 ["Import from File" org-table-import (not (org-at-table-p))] |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9637 ["Export to File" org-table-export (org-at-table-p)] |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9638 "--" |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9639 ["Create/Convert from/to table.el" org-table-create-with-table.el t])) |
d367f23e6db1
(orgtbl-setup): New function, for delayed
Carsten Dominik <dominik@science.uva.nl>
parents:
63431
diff
changeset
|
9640 |
58792 | 9641 (easy-menu-define org-org-menu org-mode-map "Org menu" |
9642 '("Org" | |
9643 ["Cycle Visibility" org-cycle (or (bobp) (outline-on-heading-p))] | |
9644 ["Sparse Tree" org-occur t] | |
9645 ["Show All" show-all t] | |
9646 "--" | |
9647 ["New Heading" org-insert-heading t] | |
9648 ("Navigate Headings" | |
9649 ["Up" outline-up-heading t] | |
9650 ["Next" outline-next-visible-heading t] | |
9651 ["Previous" outline-previous-visible-heading t] | |
9652 ["Next Same Level" outline-forward-same-level t] | |
9653 ["Previous Same Level" outline-backward-same-level t] | |
9654 "--" | |
9655 ["Jump" org-goto t]) | |
9656 ("Edit Structure" | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
9657 ["Move Subtree Up" org-shiftmetaup (not (org-at-table-p))] |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
9658 ["Move Subtree Down" org-shiftmetadown (not (org-at-table-p))] |
58792 | 9659 "--" |
9660 ["Copy Subtree" org-copy-special (not (org-at-table-p))] | |
9661 ["Cut Subtree" org-cut-special (not (org-at-table-p))] | |
9662 ["Paste Subtree" org-paste-special (not (org-at-table-p))] | |
9663 "--" | |
9664 ["Promote Heading" org-metaleft (not (org-at-table-p))] | |
9665 ["Promote Subtree" org-shiftmetaleft (not (org-at-table-p))] | |
9666 ["Demote Heading" org-metaright (not (org-at-table-p))] | |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
9667 ["Demote Subtree" org-shiftmetaright (not (org-at-table-p))] |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
9668 "--" |
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
9669 ["Archive Subtree" org-archive-subtree t]) |
58792 | 9670 "--" |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
9671 ("TODO Lists" |
58792 | 9672 ["TODO/DONE/-" org-todo t] |
9673 ["Show TODO Tree" org-show-todo-tree t] | |
9674 "--" | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
9675 ["Set Priority" org-priority t] |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
9676 ["Priority Up" org-shiftup t] |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
9677 ["Priority Down" org-shiftdown t]) |
58792 | 9678 ("Dates and Scheduling" |
9679 ["Timestamp" org-time-stamp t] | |
9680 ("Change Date" | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
9681 ["1 Day Later" org-timestamp-up-day t] |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
9682 ["1 Day Earlier" org-timestamp-down-day t] |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
9683 ["1 ... Later" org-shiftup t] |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
9684 ["1 ... Earlier" org-shiftdown t]) |
58792 | 9685 ["Compute Time Range" org-evaluate-time-range t] |
9686 ["Schedule Item" org-schedule t] | |
9687 ["Deadline" org-deadline t] | |
9688 "--" | |
9689 ["Goto Calendar" org-goto-calendar t] | |
9690 ["Date from Calendar" org-date-from-calendar t]) | |
9691 "--" | |
9692 ("Timeline/Agenda" | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
9693 ["Show TODO Tree this File" org-show-todo-tree t] |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
9694 ["Check Deadlines this File" org-check-deadlines t] |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
9695 ["Timeline Current File" org-timeline t] |
58792 | 9696 "--" |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
9697 ["Agenda" org-agenda t]) |
58792 | 9698 ("File List for Agenda") |
9699 "--" | |
9700 ("Hyperlinks" | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
9701 ["Store Link (Global)" org-store-link t] |
58792 | 9702 ["Insert Link" org-insert-link t] |
9703 ["Follow Link" org-open-at-point t]) | |
9704 "--" | |
9705 ("Export" | |
9706 ["ASCII" org-export-as-ascii t] | |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
9707 ["Extract Visible Text" org-export-copy-visible t] |
58792 | 9708 ["HTML" org-export-as-html t] |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
9709 ["HTML and Open" org-export-as-html-and-open t] |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
9710 ; ["OPML" org-export-as-opml nil] |
58792 | 9711 "--" |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
9712 ["Option Template" org-insert-export-options-template t] |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
9713 ["Toggle Fixed Width" org-toggle-fixed-width-section t]) |
58792 | 9714 "--" |
9715 ("Documentation" | |
9716 ["Show Version" org-version t] | |
9717 ["Info Documentation" org-info t]) | |
9718 ("Customize" | |
9719 ["Browse Org Group" org-customize t] | |
9720 "--" | |
9721 ["Build Full Customize Menu" org-create-customize-menu | |
9722 (fboundp 'customize-menu-create)]) | |
9723 )) | |
9724 | |
9725 (defun org-info (&optional node) | |
9726 "Read documentation for Org-mode in the info system. | |
9727 With optional NODE, go directly to that node." | |
9728 (interactive) | |
9729 (require 'info) | |
9730 (Info-goto-node (format "(org)%s" (or node "")))) | |
9731 | |
9732 (defun org-install-agenda-files-menu () | |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
9733 (easy-menu-change |
58792 | 9734 '("Org") "File List for Agenda" |
9735 (append | |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
9736 (list |
61560
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
9737 ["Edit File List" (customize-variable 'org-agenda-files) t] |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
9738 ["Add Current File to List" org-add-file t] |
a54fc673c31c
(org-agenda-date-prompt): Renamed from
Carsten Dominik <dominik@science.uva.nl>
parents:
61312
diff
changeset
|
9739 ["Remove Current File from List" org-remove-file t] |
58792 | 9740 "--") |
9741 (mapcar 'org-file-menu-entry org-agenda-files)))) | |
9742 | |
9743 ;;; Documentation | |
9744 | |
9745 (defun org-customize () | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9746 "Call the customize function with org as argument." |
58792 | 9747 (interactive) |
9748 (customize-browse 'org)) | |
9749 | |
9750 (defun org-create-customize-menu () | |
9751 "Create a full customization menu for Org-mode, insert it into the menu." | |
9752 (interactive) | |
9753 (if (fboundp 'customize-menu-create) | |
9754 (progn | |
9755 (easy-menu-change | |
9756 '("Org") "Customize" | |
9757 `(["Browse Org group" org-customize t] | |
9758 "--" | |
9759 ,(customize-menu-create 'org) | |
9760 ["Set" Custom-set t] | |
9761 ["Save" Custom-save t] | |
9762 ["Reset to Current" Custom-reset-current t] | |
9763 ["Reset to Saved" Custom-reset-saved t] | |
9764 ["Reset to Standard Settings" Custom-reset-standard t])) | |
9765 (message "\"Org\"-menu now contains full customization menu")) | |
9766 (error "Cannot expand menu (outdated version of cus-edit.el)"))) | |
9767 | |
9768 ;;; Miscellaneous stuff | |
9769 | |
9770 (defun org-move-line-down (arg) | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9771 "Move the current line down. With prefix argument, move it past ARG lines." |
58792 | 9772 (interactive "p") |
9773 (let ((col (current-column)) | |
9774 beg end pos) | |
9775 (beginning-of-line 1) (setq beg (point)) | |
9776 (beginning-of-line 2) (setq end (point)) | |
9777 (beginning-of-line (+ 1 arg)) | |
9778 (setq pos (move-marker (make-marker) (point))) | |
9779 (insert (delete-and-extract-region beg end)) | |
9780 (goto-char pos) | |
9781 (move-to-column col))) | |
9782 | |
9783 (defun org-move-line-up (arg) | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9784 "Move the current line up. With prefix argument, move it past ARG lines." |
58792 | 9785 (interactive "p") |
9786 (let ((col (current-column)) | |
9787 beg end pos) | |
9788 (beginning-of-line 1) (setq beg (point)) | |
9789 (beginning-of-line 2) (setq end (point)) | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9790 (beginning-of-line (- arg)) |
58792 | 9791 (setq pos (move-marker (make-marker) (point))) |
9792 (insert (delete-and-extract-region beg end)) | |
9793 (goto-char pos) | |
9794 (move-to-column col))) | |
9795 | |
9796 ;; Functions needed for Emacs/XEmacs region compatibility | |
9797 | |
9798 (defun org-region-active-p () | |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9799 "Is `transient-mark-mode' on and the region active? |
58792 | 9800 Works on both Emacs and XEmacs." |
9801 (if org-ignore-region | |
9802 nil | |
9803 (if org-xemacs-p | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9804 (and zmacs-regions (region-active-p)) |
58792 | 9805 (and transient-mark-mode mark-active)))) |
9806 | |
9807 (defun org-add-to-invisibility-spec (arg) | |
9808 "Add elements to `buffer-invisibility-spec'. | |
9809 See documentation for `buffer-invisibility-spec' for the kind of elements | |
9810 that can be added." | |
9811 (cond | |
9812 ((fboundp 'add-to-invisibility-spec) | |
9813 (add-to-invisibility-spec arg)) | |
9814 ((or (null buffer-invisibility-spec) (eq buffer-invisibility-spec t)) | |
9815 (setq buffer-invisibility-spec (list arg))) | |
9816 (t | |
9817 (setq buffer-invisibility-spec | |
9818 (cons arg buffer-invisibility-spec))))) | |
9819 | |
9820 (defun org-remove-from-invisibility-spec (arg) | |
9821 "Remove elements from `buffer-invisibility-spec'." | |
9822 (if (fboundp 'remove-from-invisibility-spec) | |
9823 (remove-from-invisibility-spec arg) | |
9824 (if (consp buffer-invisibility-spec) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9825 (setq buffer-invisibility-spec |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9826 (delete arg buffer-invisibility-spec))))) |
58792 | 9827 |
9828 (defun org-in-invisibility-spec-p (arg) | |
9829 "Is ARG a member of `buffer-invisibility-spec'?." | |
9830 (if (consp buffer-invisibility-spec) | |
9831 (member arg buffer-invisibility-spec) | |
9832 nil)) | |
9833 | |
9834 (defun org-image-file-name-regexp () | |
9835 "Return regexp matching the file names of images." | |
9836 (if (fboundp 'image-file-name-regexp) | |
9837 (image-file-name-regexp) | |
9838 (let ((image-file-name-extensions | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9839 '("png" "jpeg" "jpg" "gif" "tiff" "tif" |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9840 "xbm" "xpm" "pbm" "pgm" "ppm"))) |
58792 | 9841 (concat "\\." |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9842 (regexp-opt (nconc (mapcar 'upcase |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9843 image-file-name-extensions) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9844 image-file-name-extensions) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9845 t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9846 "\\'")))) |
58792 | 9847 |
9848 ;; Functions needed for compatibility with old outline.el | |
9849 | |
9850 ;; The following functions capture almost the entire compatibility code | |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
9851 ;; between the different versions of outline-mode. The only other place |
58792 | 9852 ;; where this is important are the font-lock-keywords. Search for |
9853 ;; `org-noutline-p' to find it. | |
9854 | |
9855 ;; C-a should go to the beginning of a *visible* line, also in the | |
9856 ;; new outline.el. I guess this should be patched into Emacs? | |
9857 (defun org-beginning-of-line () | |
9858 "Go to the beginning of the current line. If that is invisible, continue | |
9859 to a visible line beginning. This makes the function of C-a more intuitive." | |
9860 (interactive) | |
9861 (beginning-of-line 1) | |
9862 (if (bobp) | |
9863 nil | |
9864 (backward-char 1) | |
9865 (if (org-invisible-p) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9866 (while (and (not (bobp)) (org-invisible-p)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9867 (backward-char 1) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9868 (beginning-of-line 1)) |
58792 | 9869 (forward-char 1)))) |
9870 (when org-noutline-p | |
9871 (define-key org-mode-map "\C-a" 'org-beginning-of-line)) | |
9872 | |
9873 (defun org-invisible-p () | |
9874 "Check if point is at a character currently not visible." | |
9875 (if org-noutline-p | |
9876 ;; Early versions of noutline don't have `outline-invisible-p'. | |
9877 (if (fboundp 'outline-invisible-p) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9878 (outline-invisible-p) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9879 (get-char-property (point) 'invisible)) |
58792 | 9880 (save-excursion |
9881 (skip-chars-backward "^\r\n") | |
62546
153ddc124932
(org-agenda-toggle-time-grid): New command.
Carsten Dominik <dominik@science.uva.nl>
parents:
62087
diff
changeset
|
9882 (equal (char-before) ?\r)))) |
58792 | 9883 |
9884 (defun org-back-to-heading (&optional invisible-ok) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9885 "Move to previous heading line, or beg of this line if it's a heading. |
58792 | 9886 Only visible heading lines are considered, unless INVISIBLE-OK is non-nil." |
9887 (if org-noutline-p | |
9888 (outline-back-to-heading invisible-ok) | |
9889 (if (looking-at outline-regexp) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9890 t |
63359
add99bfc904a
(org-CUA-compatible): New option.
Carsten Dominik <dominik@science.uva.nl>
parents:
63225
diff
changeset
|
9891 (if (re-search-backward (concat (if invisible-ok "\\([\r\n]\\|^\\)" "^") |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9892 outline-regexp) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9893 nil t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9894 (if invisible-ok |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9895 (progn (goto-char (match-end 1)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9896 (looking-at outline-regexp))) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9897 (error "Before first heading"))))) |
58792 | 9898 |
9899 (defun org-on-heading-p (&optional invisible-ok) | |
9900 "Return t if point is on a (visible) heading line. | |
9901 If INVISIBLE-OK is non-nil, an invisible heading line is ok too." | |
9902 (if org-noutline-p | |
9903 (outline-on-heading-p 'invisible-ok) | |
9904 (save-excursion | |
9905 (skip-chars-backward "^\n\r") | |
9906 (and (looking-at outline-regexp) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9907 (or invisible-ok |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9908 (bobp) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9909 (equal (char-before) ?\n)))))) |
58792 | 9910 |
9911 (defun org-up-heading-all (arg) | |
9912 "Move to the heading line of which the present line is a subheading. | |
9913 This function considers both visible and invisible heading lines. | |
9914 With argument, move up ARG levels." | |
9915 (if org-noutline-p | |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
9916 (if (fboundp 'outline-up-heading-all) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9917 (outline-up-heading-all arg) ; emacs 21 version of outline.el |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9918 (outline-up-heading arg t)) ; emacs 22 version of outline.el |
58792 | 9919 (org-back-to-heading t) |
9920 (looking-at outline-regexp) | |
9921 (if (<= (- (match-end 0) (match-beginning 0)) arg) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9922 (error "Cannot move up %d levels" arg) |
58792 | 9923 (re-search-backward |
9924 (concat "[\n\r]" (regexp-quote | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9925 (make-string (- (match-end 0) (match-beginning 0) arg) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9926 ?*)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9927 "[^*]")) |
58792 | 9928 (forward-char 1)))) |
9929 | |
9930 (defun org-show-hidden-entry () | |
9931 "Show an entry where even the heading is hidden." | |
9932 (save-excursion | |
9933 (if (not org-noutline-p) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9934 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9935 (org-back-to-heading t) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9936 (org-flag-heading nil))) |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9937 (org-show-entry))) |
58792 | 9938 |
9939 (defun org-check-occur-regexp (regexp) | |
9940 "If REGEXP starts with \"^\", modify it to check for \\r as well. | |
9941 Of course, only for the old outline mode." | |
9942 (if org-noutline-p | |
9943 regexp | |
9944 (if (string-match "^\\^" regexp) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9945 (concat "[\n\r]" (substring regexp 1)) |
58792 | 9946 regexp))) |
9947 | |
9948 (defun org-flag-heading (flag &optional entry) | |
62076
4f2150e05f24
(org-get-entries-from-diary): Remove unused vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61924
diff
changeset
|
9949 "Flag the current heading. FLAG non-nil means make invisible. |
58792 | 9950 When ENTRY is non-nil, show the entire entry." |
9951 (save-excursion | |
9952 (org-back-to-heading t) | |
9953 (if (not org-noutline-p) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9954 ;; Make the current headline visible |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9955 (outline-flag-region (max 1 (1- (point))) (point) (if flag ?\r ?\n))) |
58792 | 9956 ;; Check if we should show the entire entry |
9957 (if entry | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9958 (progn |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9959 (org-show-entry) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9960 (save-excursion ;; FIXME: Is this the fix for points in the -| |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9961 ;; middle of text? | |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9962 (and (outline-next-heading) ;; | |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9963 (org-flag-heading nil)))) ; show the next heading _| |
58792 | 9964 (outline-flag-region (max 1 (1- (point))) |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9965 (save-excursion (outline-end-of-heading) (point)) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9966 (if org-noutline-p |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9967 flag |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
9968 (if flag ?\r ?\n)))))) |
58792 | 9969 |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9970 (defun org-show-subtree () |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9971 "Show everything after this heading at deeper levels." |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
9972 (outline-flag-region |
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
9973 (point) |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9974 (save-excursion |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9975 (outline-end-of-subtree) (outline-next-heading) (point)) |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9976 (if org-noutline-p nil ?\n))) |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9977 |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9978 (defun org-show-entry () |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9979 "Show the body directly following this heading. |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9980 Show the heading too, if it is currently invisible." |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9981 (interactive) |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9982 (save-excursion |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9983 (org-back-to-heading t) |
63902
0b526dc24ccb
(org-agenda-start-on-weekday, org-calendar-to-agenda-key,
Juanma Barranquero <lekktu@gmail.com>
parents:
63832
diff
changeset
|
9984 (outline-flag-region |
61924
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9985 (1- (point)) |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9986 (save-excursion |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9987 (re-search-forward (concat "[\r\n]\\(" outline-regexp "\\)") nil 'move) |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9988 (or (match-beginning 1) (point-max))) |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9989 (if org-noutline-p nil ?\n)))) |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9990 |
d29accb0274a
Many small changes to keep the byte compiler happy. Furthermore:
Carsten Dominik <dominik@science.uva.nl>
parents:
61582
diff
changeset
|
9991 |
58792 | 9992 (defun org-make-options-regexp (kwds) |
9993 "Make a regular expression for keyword lines." | |
9994 (concat | |
9995 (if org-noutline-p "^" "[\n\r]") | |
9996 "#?[ \t]*\\+\\(" | |
9997 (mapconcat 'regexp-quote kwds "\\|") | |
9998 "\\):[ \t]*" | |
9999 (if org-noutline-p "\\(.+\\)" "\\([^\n\r]+\\)"))) | |
10000 | |
10001 ;; Advise the bookmark-jump function to make jump position visible | |
10002 ;; Wrapped into eval-after-load to avoid loading advice unnecessarily | |
10003 (eval-after-load "bookmark" | |
10004 '(defadvice bookmark-jump (after org-make-visible activate) | |
10005 "Make the position visible." | |
10006 (and (eq major-mode 'org-mode) | |
64080
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
10007 (org-invisible-p) |
d5372215b17d
Leading space replaced by TABS.
Carsten Dominik <dominik@science.uva.nl>
parents:
64078
diff
changeset
|
10008 (org-show-hierarchy-above)))) |
58792 | 10009 |
10010 ;;; Finish up | |
10011 | |
10012 (provide 'org) | |
10013 | |
10014 (run-hooks 'org-load-hook) | |
10015 | |
63367 | 10016 ;; arch-tag: e77da1a7-acc7-4336-b19e-efa25af3f9fd |
58792 | 10017 ;;; org.el ends here |