diff options
author | Paul Sexton <psexton@xnet.co.nz> | 2011-05-13 22:45:26 +1200 |
---|---|---|
committer | Paul Sexton <psexton@xnet.co.nz> | 2011-05-13 22:45:26 +1200 |
commit | ab075bb45219111f2fa77f744b91be3cfbe48222 (patch) | |
tree | f3004592ddf943472ab3b2acdc1636545e8e23d7 | |
parent | df1a730e2531c898643cc3abdacd0b794e0b240b (diff) | |
parent | d6aba4db77654481e424de206ec7047244df0f3b (diff) | |
download | org-mode-ab075bb45219111f2fa77f744b91be3cfbe48222.tar.gz |
Merge branch 'master' of orgmode.org:org-mode
-rw-r--r-- | doc/org.texi | 12 | ||||
-rw-r--r-- | lisp/org-agenda.el | 14 | ||||
-rw-r--r-- | lisp/org-clock.el | 20 | ||||
-rw-r--r-- | lisp/org-table.el | 75 |
4 files changed, 91 insertions, 30 deletions
diff --git a/doc/org.texi b/doc/org.texi index 3988838..aa34cd3 100644 --- a/doc/org.texi +++ b/doc/org.texi @@ -2064,7 +2064,10 @@ increment. This key is also used by shift-selection and related modes Edit the current field in a separate window. This is useful for fields that are not fully visible (@pxref{Column width and alignment}). When called with a @kbd{C-u} prefix, just make the full field visible, so that it can be -edited in place. +edited in place. When called with two @kbd{C-u} prefixes, make the editor +window follow the cursor through the table and always show the current +field. The follow mode exits automatically when the cursor leaves the table, +or when you repeat this command with @kbd{C-u C-u C-c `}. @c @item M-x org-table-import Import a file as a table. The table should be TAB or whitespace @@ -8819,7 +8822,7 @@ the object with @code{\ref@{tab:basic-data@}}: Optionally, the caption can take the form: @example -#+CAPTION: [Caption for list of figures]{Caption for table (or link).} +#+CAPTION: [Caption for list of figures]@{Caption for table (or link).@} @end example @cindex inlined images, markup rules @@ -11153,6 +11156,11 @@ for the title of the file, @code{%a} stands for the author of the file and a sitemap entry's date is to be formated. This property bypasses @code{org-publish-sitemap-date-format} which defaults to @code{%Y-%m-%d}. +@item @code{:sitemap-sans-extension} +@tab When non-nil, remove filenames' extensions from the generated sitemap. +Useful to have cool URIs (see @uref{http://www.w3.org/Provider/Style/URI}). +Defaults to @code{nil}. + @end multitable @node Generating an index, , Sitemap, Configuration diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el index 84e3247..65f37d4 100644 --- a/lisp/org-agenda.el +++ b/lisp/org-agenda.el @@ -4959,7 +4959,7 @@ See also the user option `org-agenda-clock-consistency-checks'." (plist-get pl :gap-ok-around))) (def-face (or (plist-get pl :default-face) '((:background "DarkRed") (:foreground "white")))) - issue) + issue face m te ts dt ov) (goto-char (point-min)) (while (re-search-forward " Clocked: +(-\\|\\([0-9]+:[0-9]+\\))" nil t) (setq issue nil face def-face) @@ -5046,12 +5046,12 @@ See also the user option `org-agenda-clock-consistency-checks'." ;; Wrap it to after midnight. (setq min2 (+ min2 1440))) ;; Now check if any of the OK times is in the gap - (mapcar (lambda (x) - ;; Wrap the time to after midnight if necessary - (if (< x min1) (setq x (+ x 1440))) - ;; Check if in interval - (and (<= min1 x) (>= min2 x) (throw 'exit t))) - ok-list) + (mapc (lambda (x) + ;; Wrap the time to after midnight if necessary + (if (< x min1) (setq x (+ x 1440))) + ;; Check if in interval + (and (<= min1 x) (>= min2 x) (throw 'exit t))) + ok-list) ;; Nope, this gap is not OK nil))) diff --git a/lisp/org-clock.el b/lisp/org-clock.el index efeb72f..6acbab8 100644 --- a/lisp/org-clock.el +++ b/lisp/org-clock.el @@ -976,6 +976,16 @@ so long." 60.0)))) org-clock-user-idle-start))))) +(defvar org-clock-current-task nil + "Task currently clocked in.") +(defun org-clock-set-current () + "Set `org-clock-current-task' to the task currently clocked in." + (setq org-clock-current-task (nth 4 (org-heading-components)))) + +(defun org-clock-delete-current () + "Reset `org-clock-current-task' to nil." + (setq org-clock-current-task nil)) + (defun org-clock-in (&optional select start-time) "Start the clock on the current item. If necessary, clock-out of the currently active clock. @@ -1157,16 +1167,6 @@ the clocking selection, associated with the letter `d'." (message "Clock starts at %s - %s" ts msg-extra) (run-hooks 'org-clock-in-hook))))))) -(defvar org-clock-current-task nil - "Task currently clocked in.") -(defun org-clock-set-current () - "Set `org-clock-current-task' to the task currently clocked in." - (setq org-clock-current-task (nth 4 (org-heading-components)))) - -(defun org-clock-delete-current () - "Reset `org-clock-current-task' to nil." - (setq org-clock-current-task nil)) - (defun org-clock-mark-default-task () "Mark current task as default task." (interactive) diff --git a/lisp/org-table.el b/lisp/org-table.el index 58aa835..0f71d57 100644 --- a/lisp/org-table.el +++ b/lisp/org-table.el @@ -162,6 +162,16 @@ Only relevant when `org-enable-table-editor' is equal to `optimized'." :group 'org-table-editing :type 'boolean) +(defcustom org-table-exit-follow-field-mode-when-leaving-table t + "Non-nil means automatically exit the follow mode. +When nil, the follow mode will stay on and be active in any table +the cursor enters. Since the table follow filed mode messes with the +window configuration, it is not recommended to set this variable to nil, +except maybe locally in a special file that has mostly tables with long +fields." + :group 'org-table + :type 'boolean) + (defcustom org-table-fix-formulas-confirm nil "Whether the user should confirm when Org fixes formulas." :group 'org-table-editing @@ -1045,7 +1055,7 @@ copying. In the case of a timestamp, increment by one day." (org-move-to-column col)) (error "No non-empty field found")))) -(defun org-table-check-inside-data-field () +(defun org-table-check-inside-data-field (&optional noerror) "Is point inside a table data field? I.e. not on a hline or before the first or after the last column? This actually throws an error, so it aborts the current command." @@ -1053,7 +1063,10 @@ This actually throws an error, so it aborts the current command." (= (org-table-current-column) 0) (org-at-table-hline-p) (looking-at "[ \t]*$")) - (error "Not in table data field"))) + (if noerror + nil + (error "Not in table data field")) + t)) (defvar org-table-clip nil "Clipboard for table regions.") @@ -1776,21 +1789,32 @@ This is mainly useful for fields that contain hidden parts. When called with a \\[universal-argument] prefix, just make the full field visible so that it can be edited in place." (interactive "P") - (if arg - (let ((b (save-excursion (skip-chars-backward "^|") (point))) - (e (save-excursion (skip-chars-forward "^|\r\n") (point)))) - (remove-text-properties b e '(org-cwidth t invisible t - display t intangible t)) - (if (and (boundp 'font-lock-mode) font-lock-mode) - (font-lock-fontify-block))) + (cond + ((equal arg '(16)) + (org-table-follow-field-mode (if org-table-follow-field-mode -1 1))) + (arg + (let ((b (save-excursion (skip-chars-backward "^|") (point))) + (e (save-excursion (skip-chars-forward "^|\r\n") (point)))) + (remove-text-properties b e '(org-cwidth t invisible t + display t intangible t)) + (if (and (boundp 'font-lock-mode) font-lock-mode) + (font-lock-fontify-block)))) + (t (let ((pos (move-marker (make-marker) (point))) (field (org-table-get-field)) (cw (current-window-configuration)) p) - (org-switch-to-buffer-other-window "*Org tmp*") + (goto-char pos) + (org-switch-to-buffer-other-window "*Org Table Edit Field*") + (when (and (local-variable-p 'org-field-marker) + (markerp org-field-marker)) + (move-marker org-field-marker nil)) (erase-buffer) (insert "#\n# Edit field and finish with C-c C-c\n#\n") (let ((org-inhibit-startup t)) (org-mode)) + (auto-fill-mode -1) + (setq truncate-lines nil) + (setq word-wrap t) (goto-char (setq p (point-max))) (insert (org-trim field)) (remove-text-properties p (point-max) @@ -1800,7 +1824,7 @@ it can be edited in place." (org-set-local 'org-finish-function 'org-table-finish-edit-field) (org-set-local 'org-window-configuration cw) (org-set-local 'org-field-marker pos) - (message "Edit and finish with C-c C-c")))) + (message "Edit and finish with C-c C-c"))))) (defun org-table-finish-edit-field () "Finish editing a table data field. @@ -1825,6 +1849,35 @@ the table and kill the editing buffer." (org-table-align) (message "New field value inserted"))) +(define-minor-mode org-table-follow-field-mode + "Minor mode to make the table field editor window follow the cursor. +When this mode is active, the field editor window will always show the +current field. The mode exits automatically when the cursor leaves the +table (but see `org-table-exit-follow-field-mode-when-leaving-table')." + nil " TblFollow" nil + (if org-table-follow-field-mode + (org-add-hook 'post-command-hook 'org-table-follow-fields-with-editor + 'append 'local) + (remove-hook 'post-command-hook 'org-table-follow-fields-with-editor 'local) + (let* ((buf (get-buffer "*Org Table Edit Field*")) + (win (and buf (get-buffer-window buf)))) + (when win (delete-window win)) + (when buf + (with-current-buffer buf + (move-marker org-field-marker nil)) + (kill-buffer buf))))) + +(defun org-table-follow-fields-with-editor () + (if (and org-table-exit-follow-field-mode-when-leaving-table + (not (org-at-table-p))) + ;; We have left the table, exit the follow mode + (org-table-follow-field-mode -1) + (when (org-table-check-inside-data-field 'noerror) + (let ((win (selected-window))) + (org-table-edit-field nil) + (org-fit-window-to-buffer) + (select-window win))))) + (defvar org-timecnt) ; dynamically scoped parameter (defun org-table-sum (&optional beg end nlast) |