Mercurial > emacs
diff lisp/org/org-remember.el @ 98644:e1cc41b9282d
2008-10-12 Carsten Dominik <carsten.dominik@gmail.com>
* org.el (org-edit-fixed-width-region): Exclude final newline from
picture area.
* org-export-latex.el (org-export-latex-subcontent): Add labels to
sections, to make internal links work.
(org-export-latex-fontify-headline): Do not remove all text
properties, to make sure that target properties survive this
process.
* org-exp.el (org-export-preprocess-string): Change sequence of
modifications, to make sure links are prepared before the LaTeX
conversions do happen.
* org-attach.el (org-attach-delete-all): Renamed from
`org-attch-delete'. Add a security query before deleting the
entire directory. New optional argument FORCE can overrule the
security query.
(org-attach-delete-one): New command.
* org-attach.el (org-attach-file-list): Fix bug with directory.
* org.el (org-apps-regexp-alist): New function.
(org-file-apps): Add auto-mode to the default value.
(org-open-file): Use the new structure of org-file-apps.
* org-attach.el (org-attach): Support the new keys.
(org-attach-method): New option.
* org-bbdb.el (org-bbdb-anniversaries): Fix but with 29 Feb/1
March.
* org.el (org-remove-uniherited-tags): Fix reverse interpretation
of the list value o `org-use-tag-inheritance'.
* org-attach.el (org-attach-auto-tag): New option.
(org-attach-tag, org-attach-untag): New functions.
(org-attach-attach, org-attach-new, org-attach-sync): Call
`org-attach-tag'.
(org-attach-delete): Call `org-attach-untag'.
* org-attach.el: New file.
* org-table.el (orgtbl-self-insert-command): Make this work for
the keypad as well.
* org.el (org-add-log-setup): Limit searc for drawers to entry
text, not to subtree.
* org-clock.el (org-clock-heading-for-remember): New variable.
(org-clock-in): Set `org-clock-heading-for-remember'.
2008-10-12 James TD Smith <ahktenzero@mohorovi.cc>
* org-remember.el (org-remember-apply-template): Add new
expansions: %k, %K for currently clocked task and a link to the
currently clocked task, and %< to file notes in the currently
clocked task.
2008-10-12 Carsten Dominik <dominik@science.uva.nl>
* org-export-latex.el (org-export-latex-make-header): Also insert
the content of the property :latex-header-extra.
* org-exp.el (org-infile-export-plist): Put the content of
#+LATEX_HEADER: into the property :latex-header-extra.
* org-colview.el (org-columns-get-format-and-top-level): Remove
resetting the marker.
* org-colview-xemacs.el (org-columns-get-format-and-top-level):
Remove resetting the marker.
* org.el (org-entry-property-inherited-from): Improve docstring.
(org-entry-get-with-inheritance): Reset marker before starting the
search.
* org-exp.el (org-infile-export-plist): Allow multiple STYLE lines.
* org.el (org-entry-get-multivalued-property)
(org-entry-protect-space, org-entry-restore-space): New
functions.
(org-file-apps-defaults-macosx): Let postscript files be opened by
preview.
(org-time-stamp-inactive): Call `org-time-stamp'.
(org-time-stamp): New argument `inactive'. Also edit inacive
stamps. Convert time stamp type.
(org-open-file): Interpret the `default' value for the `command'
in `org-file-apps'.
* org-id.el (org-id-int-to-b36-one-digit)
(org-id-b36-to-int-one-digit, org-id-int-to-b36)
(org-id-b36-to-int, org-id-time-to-b36): Modified from b62 to
b36.
* org-id.el (org-id-reverse-string): New function.
(org-id-new): Use `org-id-reverse-string' to make sure the
beginning chars of the ID are mutating fast. This allows to use a
directory structure to spread things better.
(org-id-prefix): Changed default to nil.
* org-list.el (org-move-item-down, org-move-item-up): Remember and
restore the column of the cursor position.
* org-remember.el (org-remember-apply-template): Remove properties
from `initial'.
* org-wl.el (org-wl-open): Remove useless call to
`wl-thread-open-all'.
* org-remember.el (org-remember-handler): Fix bug with `bottom'
location.
* org-bbdb.el (org-bbdb-anniversaries): Require bbdb in
`org-bbdb-anniversaries'.
* org.el (org-get-next-sibling, org-forward-same-level): New
functions, similar to the outline versions, but invisible headings
are OK.
2008-10-12 Bastien Guerry <bzg@altern.org>
* org.el (org-auto-repeat-maybe): Insert a space between
the timestamp's type and the timestamp itself.
2008-10-12 Carsten Dominik <dominik@science.uva.nl>
* org-table.el (org-table-sum): Do not format the result with %g,
it does rounding when there are too many digits.
* org.el (org-map-entries): Protect the keyword-selecting variables.
2008-10-12 Bastien Guerry <bzg@altern.org>
* org-agenda.el (org-agenda-to-appt): Make sure the function check
against all agenda files.
2008-10-12 Carsten Dominik <dominik@science.uva.nl>
* org-list.el: New file, aggregating list functions from org.el
and org-export-latex.el.
* org.el (org-edit-src-region-extra): New option.
* org-agenda.el (org-agenda-to-appt): Fix bug with appointment
time before 1am.
2008-10-12 Bastien Guerry <bzg@altern.org>
* org-export-latex.el (org-export-latex-keywords-maybe): Bug fix.
2008-10-12 James TA Smith <ahktenzero@mohorovi.cc>
* org-plot.el (org-plot/gnuplot): Make tables starting with a
hline work correctly.
(org-plot/gnuplot-script): Put commas at the end of each script
line.
* org.el (org-get-refile-targets): Replace links with their
descriptions
(org-imenu-get-tree): Replace links with their descriptions.
* org-remember.el (org-remember-apply-template): Add a new
expansion for adding properties to remember items.
* org.el (org-add-log-setup): Skip over drawers (properties,
clocks etc) when adding notes.
* org-agenda.el (org-agenda-get-closed): show durations of clocked
items as well as the start and end times.
* org-compat.el (org-get-x-clipboard-compat): Add a compat
function for fetching the X clipboard on XEmacs and GNU Emacs 21.
* org-remember.el (org-get-x-clipboard): Use the compat
function to get clipboard values when x-selection-value is
unavailable. Use substring-no-properties instead of
set-text-properties to remove text properties from the clipboard
value.
* lisp/org-clock.el (org-update-mode-line): Support limiting the
modeline clock string, and display the full todo value in the
tooltip. Set a local keymap so mouse-3 on the clock string goes to
the currently clocked task.
(org-clock-string-limit): Add a custom value for the maximum
length of the clock string in the modeline.
(org-clock-mode-map): Add a keymap for the modeline string
2008-10-12 Carsten Dominik <dominik@science.uva.nl>
* org-compat.el (org-propertize): New function.
2008-10-12 Bastien Guerry <bzg@altern.org>
* org-export-latex.el (org-export-latex-tables): protect exported
tables from further special chars conversion.
(org-export-latex-preprocess): Preserve LaTeX environments.
(org-list-parse-list): Parse descriptive lists.
(org-list-to-generic, org-list-to-latex, org-list-to-html)
(org-list-to-texinfo): Export descriptive lists.
(org-quote-chars): Remove.
(org-export-latex-keywords-maybe): Use `replace-regexp-in-string'.
(org-export-latex-list-beginning-re): Rename to
`org-list-beginning-re'
(org-list-item-begin): Rename to `org-list-item-beginning'
2008-10-12 Carsten Dominik <dominik@science.uva.nl>
* org.el (org-refile): Allow refiling to the last entry in the
buffer.
(org-get-tags-at): Fix bug when inheritance is turned off.
* org.el (org-indent-line-function): No longer check for src
regions, this is too much overhead.
* org-agenda.el (org-agenda-highlight-todo): Fix bugs with keyword
matching.
* org.el (org-scan-tags): Make sure that tags matching is not case
sensitive. TODO keyword matching is case sensitive, however, to
avoid confusion with similar words that are not meant to be
keywords.
* org.el (org-get-local-tags-at): New function.
(org-get-local-tags): New function.
* org-exp.el (org-export-get-categories): New function.
* org-agenda.el (org-sorting-choice)
(org-agenda-sorting-strategy, org-agenda-get-todos)
(org-agenda-get-timestamps, org-agenda-get-deadlines)
(org-agenda-get-scheduled, org-agenda-get-blocks)
(org-entries-lessp): Implement sorting by TODO state.
(org-cmp-todo-state): New defsubst.
* org-colview.el (org-colview-construct-allowed-dates): New
function.
(org-columns-next-allowed-value): Use
`org-colview-construct-allowed-dates'.
* org-colview-xemacs.el (org-colview-construct-allowed-dates): New
function.
(org-columns-next-allowed-value): Use
`org-colview-construct-allowed-dates'.
* org.el (org-protect-slash): New function.
(org-get-refile-targets): Use `org-protect-slash'.
* org-agenda.el (org-global-tags-completion-table): New variable.
* org-exp.el (org-export-handle-export-tags): New function.
(org-export-preprocess-string): Call
`org-export-handle-export-tags'.
* org-plot.el: New file.
* org-publish.el (org-publish-expand-components): Function removed.
(org-publish-expand-projects): Allow components to have components.
* org.el (org-indent-line-function): Do not indent in regions that
are external source code.
(org-yank-and-fold-if-subtree): New function.
* org-agenda.el (org-agenda-todayp): New function.
(org-agenda-get-deadlines, org-agenda-get-scheduled): Use
`org-agenda-todayp'.
* org.el (org-insert-heading-respect-content)
(org-insert-todo-heading-respect-content): New commands.
(org-insert-heading-respect-content): New option.
(org-insert-heading): Respect `org-insert-heading-respect-content'.
* org-clock.el (org-clock-find-position): Make sure the note after
the clock line gets moved into the new clock drawer.
* org-id.el (org-id-new): New option.
* org-table.el (org-table-copy-down): Avoid overflow during
increment. Use prefix argument 0 to temporarily disable the
increment.
* org-exp.el (org-export-as-html): Do not turn on the major mode
if the buffer will be killed anyway.
(org-get-current-options): Exclude the #+TEXT field.
(org-export-as-html): Make sure text before the first headline is
a paragraph.
* org-publish.el (org-publish-org-to): Tell the exporter that this
buffer will be killed, so it is not necessary to do major mode
initialization.
* org-archive.el (org-archive-to-archive-sibling): Show empty
lines after folding the archive sibling.
* org.el (org-log-note-extra): New variable.
2008-10-12 Bastien Guerry <bzg@altern.org>
* org.el (org-additional-option-like-keywords): Added keywords for
the _QUOTE, _VERSE and _SRC environments.
* org-export-latex.el (org-export-latex-preprocess): Fix bug when
exporting _QUOTE and _VERSE environments.
2008-10-12 Carsten Dominik <dominik@science.uva.nl>
* org-agenda.el (org-agenda-filter-by-tag): New command.
* org-exp.el (org-get-current-options): Remove angular brackets
from the date entry.
* org.el (org-edit-fixed-width-region): New function.
(org-edit-fixed-width-region): Also try
`org-edit-fixed-width-region'.
(org-edit-fixed-width-region-mode): New option.
(org-activate-code): Only interprete lines starting with colon
plus a space as example lines.
* org-remember.el (org-remember-templates): Add nil instead of
empty strings to fix the length of remember templates.
* org-table.el (org-calc-default-modes): Fix the time format for
calc, from 12 hour to 24 hour clock.
* org-agenda.el (org-agenda-get-deadlines)
(org-agenda-get-scheduled): Avoid `time-of-day' extraction for
entries that are pre-warnings of deadlines or reminders.
* org.el (org-sort-entries-or-items): Make numeric and alpha
comparisons ignore any TODO keyword and priority cookie.
* org-remember.el (org-remember-handler): Reinterpretation of the
prefix argument.
* org-agenda.el (org-agenda-get-scheduled): Use new
`org-scheduled' face.
* org-faces.el (org-scheduled): New face.
* org-wl.el (org-wl-open): Remove incorrect declaration.
* org-gnus.el (org-gnus-store-link): Support for :to information
in gnus links.
* org-exp.el (org-export-as-html): Fixed typo in creator
information.
(org-export-protect-examples): New parameter indent. Insert extra
spaces only when this parameter is specified.
(org-export-preprocess-string): Call `org-export-protect-examples'
with an indentation parameter when exporting to ASCII.
* org-remember.el (org-remember-templates)
(org-remember-apply-template): Allow the file component to be a
function.
* org.el (org-goto-local-search-headings): Renamed from
`org-goto-local-search-forward-headings'. Added the possibility
to search backwards.
* org-export-latex.el (org-export-latex): New customization
group.
* org-agenda.el (org-write-agenda): Erase buffer for txt export.
* org-exp.el (org-html-do-expand): Allow {} to terminate
tex macro
* org.el (org-buffer-list): Select buffers based on major mode,
not on file name.
* org-agenda.el (org-agenda-align-tags): Fix bug with malformed
face property.
* org-colview.el (org-columns-display-here): Use
`org-columns-modify-value-for-display-function'.
* org-colview-xemacs.el (org-columns-display-here): Use
`org-columns-modify-value-for-display-function'.
* org.el (org-columns-modify-value-for-display-function): New option.
* org-publish.el (org-publish-file): Make sure the directory match
for the publishing directory works correctly.
* org-agenda.el (org-agenda-execute-calendar-command)
(org-agenda-diary-entry): Additional optional argument.
author | Carsten Dominik <dominik@science.uva.nl> |
---|---|
date | Sun, 12 Oct 2008 06:12:44 +0000 |
parents | adc2dffbdfc3 |
children | 8fa7ef477c04 |
line wrap: on
line diff
--- a/lisp/org/org-remember.el Sun Oct 12 04:47:51 2008 +0000 +++ b/lisp/org/org-remember.el Sun Oct 12 06:12:44 2008 +0000 @@ -5,7 +5,7 @@ ;; Author: Carsten Dominik <carsten at orgmode dot org> ;; Keywords: outlines, hypermedia, calendar, wp ;; Homepage: http://orgmode.org -;; Version: 6.06b +;; Version: 6.09a ;; ;; This file is part of GNU Emacs. ;; @@ -34,15 +34,17 @@ (require 'cl)) (require 'org) +(declare-function remember-mode "remember" ()) (declare-function remember "remember" (&optional initial)) (declare-function remember-buffer-desc "remember" ()) (declare-function remember-finalize "remember" ()) (defvar remember-save-after-remembering) -(defvar remember-data-file) (defvar remember-register) (defvar remember-buffer) (defvar remember-handler-functions) (defvar remember-annotation-functions) +(defvar org-clock-heading) +(defvar org-clock-heading-for-remember) (defgroup org-remember nil "Options concerning interaction with remember.el." @@ -133,8 +135,11 @@ %x content of the X clipboard %^C Interactive selection of which kill or clip to use %^L Like %^C, but insert as link + %k title of currently clocked task + %K link to currently clocked task %^g prompt for tags, with completion on tags in target file %^G prompt for tags, with completion all tags in all agenda files + %^{prop}p Prompt the user for a value for property `prop' %:keyword specific information for certain link types, see below %[pathname] insert the contents of the file given by `pathname' %(sexp) evaluate elisp `(sexp)' and replace with the result @@ -164,8 +169,8 @@ :get (lambda (var) ; Make sure all entries have at least 5 elements (mapcar (lambda (x) (if (not (stringp (car x))) (setq x (cons "" x))) - (cond ((= (length x) 4) (append x '(""))) - ((= (length x) 3) (append x '("" ""))) + (cond ((= (length x) 4) (append x '(nil))) + ((= (length x) 3) (append x '(nil nil))) (t x))) (default-value var))) :type '(repeat @@ -176,6 +181,7 @@ (string :tag "Template") (choice :tag "Destination file" (file :tag "Specify") + (function :tag "Function") (const :tag "Use `org-default-notes-file'" nil)) (choice :tag "Destin. headline" (string :tag "Specify") @@ -207,8 +213,8 @@ ;;;###autoload (defun org-remember-insinuate () - "Setup remember.el for use wiht Org-mode." - (require 'remember) + "Setup remember.el for use with Org-mode." + (org-require-remember) (setq remember-annotation-functions '(org-remember-annotation)) (setq remember-handler-functions '(org-remember-handler)) (add-hook 'remember-mode-hook 'org-remember-apply-template)) @@ -300,26 +306,33 @@ (cddr (assoc char templates))))) (defun org-get-x-clipboard (value) - "Get the value of the x clibboard, in a way that also works with XEmacs." + "Get the value of the x clibboard, compatible with XEmacs, and GNU Emacs 21." (if (eq window-system 'x) - (let ((x (if org-xemacs-p - (org-no-warnings (get-selection-no-error value)) - (and (fboundp 'x-selection-value) - (x-selection-value value))))) - (and (> (length x) 0) (set-text-properties 0 (length x) nil x) x)))) + (let ((x (org-get-x-clipboard-compat value))) + (if x (org-no-properties x))))) ;;;###autoload (defun org-remember-apply-template (&optional use-char skip-interactive) "Initialize *remember* buffer with template, invoke `org-mode'. This function should be placed into `remember-mode-hook' and in fact requires to be run from that hook to function properly." + (when (and (boundp 'initial) (stringp initial)) + (setq initial (org-no-properties initial)) + (remove-text-properties 0 (length initial) '(read-only t) initial)) (if org-remember-templates (let* ((entry (org-select-remember-template use-char)) (ct (or org-overriding-default-time (org-current-time))) + (dct (decode-time ct)) + (ct1 + (if (< (nth 2 dct) org-extend-today-until) + (encode-time 0 59 23 (1- (nth 3 dct)) (nth 4 dct) (nth 5 dct)) + ct)) (tpl (car entry)) (plist-p (if org-store-link-plist t nil)) - (file (if (and (nth 1 entry) (stringp (nth 1 entry)) - (string-match "\\S-" (nth 1 entry))) + (file (if (and (nth 1 entry) + (or (and (stringp (nth 1 entry)) + (string-match "\\S-" (nth 1 entry))) + (functionp (nth 1 entry)))) (nth 1 entry) org-default-notes-file)) (headline (nth 2 entry)) @@ -346,11 +359,24 @@ (replace-match "[\\1[%^{Link description}]]" nil nil v-a) v-a)) (v-n user-full-name) + (v-k (if (marker-buffer org-clock-marker) + (substring-no-properties org-clock-heading))) + (v-K (if (marker-buffer org-clock-marker) + (org-make-link-string + (buffer-file-name (marker-buffer org-clock-marker)) + org-clock-heading))) + v-I (org-startup-folded nil) + (org-inhibit-startup t) org-time-was-given org-end-time-was-given x prompt completions char time pos default histvar) + + (when (functionp file) + (setq file (funcall file))) (when (and file (not (file-name-absolute-p file))) (setq file (expand-file-name file org-directory))) + + (setq org-store-link-plist (append (list :annotation v-a :initial v-i) org-store-link-plist)) @@ -358,20 +384,23 @@ (erase-buffer) (insert (substitute-command-keys (format -"## Filing location: Select interactively, default, or last used: +"## %s \"%s\" -> \"* %s\" +## C-u C-c C-c like C-c C-c, and immediately visit note at target location +## C-0 C-c C-c \"%s\" -> \"* %s\" ## %s to select file and header location interactively. -## %s \"%s\" -> \"* %s\" -## C-u C-u C-c C-c \"%s\" -> \"* %s\" +## C-2 C-c C-c as child of the currently clocked item ## To switch templates, use `\\[org-remember]'. To abort use `C-c C-k'.\n\n" - (if org-remember-store-without-prompt " C-u C-c C-c" " C-c C-c") - (if org-remember-store-without-prompt " C-c C-c" " C-u C-c C-c") + (if org-remember-store-without-prompt " C-c C-c" " C-1 C-c C-c") (abbreviate-file-name (or file org-default-notes-file)) (or headline "") (or (car org-remember-previous-location) "???") - (or (cdr org-remember-previous-location) "???")))) - (insert tpl) (goto-char (point-min)) + (or (cdr org-remember-previous-location) "???") + (if org-remember-store-without-prompt "C-1 C-c C-c" " C-c C-c")))) + (insert tpl) + (goto-char (point-min)) + ;; Simple %-escapes - (while (re-search-forward "%\\([tTuUaiAcx]\\)" nil t) + (while (re-search-forward "%\\([tTuUaiAcxkKI]\\)" nil t) (when (and initial (equal (match-string 0) "%i")) (save-match-data (let* ((lead (buffer-substring @@ -417,7 +446,7 @@ (replace-match x t t)))) ;; Turn on org-mode in the remember buffer, set local variables - (org-mode) + (let ((org-inhibit-startup t)) (org-mode)) (org-set-local 'org-finish-function 'org-remember-finalize) (if (and file (string-match "\\S-" file) (not (file-directory-p file))) (org-set-local 'org-default-notes-file file)) @@ -425,7 +454,7 @@ (org-set-local 'org-remember-default-headline headline)) ;; Interactive template entries (goto-char (point-min)) - (while (re-search-forward "%^\\({\\([^}]*\\)}\\)?\\([gGtTuUCL]\\)?" nil t) + (while (re-search-forward "%^\\({\\([^}]*\\)}\\)?\\([gGtTuUCLp]\\)?" nil t) (setq char (if (match-end 3) (match-string 3)) prompt (if (match-end 2) (match-string 2))) (goto-char (match-beginning 0)) @@ -470,6 +499,22 @@ (car clipboards) '(clipboards . 1) (car clipboards)))))) + ((equal char "p") + (let* + ((prop (substring-no-properties prompt)) + (allowed (with-current-buffer + (get-buffer (file-name-nondirectory file)) + (org-property-get-allowed-values nil prop 'table))) + (existing (with-current-buffer + (get-buffer (file-name-nondirectory file)) + (mapcar 'list (org-property-values prop)))) + (propprompt (concat "Value for " prop ": ")) + (val (if allowed + (org-completing-read propprompt allowed nil + 'req-match) + (org-completing-read propprompt existing nil nil + "" nil "")))) + (org-set-property prop val))) (char ;; These are the date/time related ones (setq org-time-was-given (equal (upcase char) char)) @@ -488,7 +533,7 @@ (if (re-search-forward "%\\?" nil t) (replace-match "") (and (re-search-forward "^[^#\n]" nil t) (backward-char 1)))) - (org-mode) + (let ((org-inhibit-startup t)) (org-mode)) (org-set-local 'org-finish-function 'org-remember-finalize)) (when (save-excursion (goto-char (point-min)) @@ -556,6 +601,7 @@ Lisp programs can set ORG-FORCE-REMEMBER-TEMPLATE-CHAR to a character associated with a template in `org-remember-templates'." (interactive "P") + (org-require-remember) (cond ((equal goto '(4)) (org-go-to-remember-target)) ((equal goto '(16)) (org-remember-goto-last-stored)) @@ -617,39 +663,38 @@ ;;;###autoload (defun org-remember-handler () "Store stuff from remember.el into an org file. -First prompts for an org file. If the user just presses return, the value -of `org-default-notes-file' is used. -Then the command offers the headings tree of the selected file in order to -file the text at a specific location. -You can either immediately press RET to get the note appended to the -file, or you can use vertical cursor motion and visibility cycling (TAB) to -find a better place. Then press RET or <left> or <right> in insert the note. +When the template has specified a file and a headline, the entry is filed +there, or in the location defined by `org-default-notes-file' and +`org-remember-default-headline'. + +If no defaults have been defined, or if the current prefix argument +is 1 (so you must use `C-1 C-c C-c' to exit remember), an interactive +process is used to select the target location. + +When the prefix is 0 (i.e. when remember is exited with `C-0 C-c C-c'), +the entry is filed to the same location as the previous note. -Key Cursor position Note gets inserted ------------------------------------------------------------------------------ -RET buffer-start as level 1 heading at end of file -RET on headline as sublevel of the heading at cursor -RET no heading at cursor position, level taken from context. - Or use prefix arg to specify level manually. -<left> on headline as same level, before current heading -<right> on headline as same level, after current heading +When the prefix is 2 (i.e. when remember is exited with `C-2 C-c C-c'), +the entry is fild as a subentry of the entry where the clock is +currently running. -So the fastest way to store the note is to press RET RET to append it to -the default file. This way your current train of thought is not -interrupted, in accordance with the principles of remember.el. -You can also get the fast execution without prompting by using -C-u C-c C-c to exit the remember buffer. See also the variable -`org-remember-store-without-prompt'. +When `C-u' has been used as prefix argument, the note is stored and emacs +moves point to the new location of the note, so that editing can be +continued there (smilar to inserting \"%&\" into the tempate). -Before being stored away, the function ensures that the text has a -headline, i.e. a first line that starts with a \"*\". If not, a headline -is constructed from the current date and some additional data. +Before storing the note, the function ensures that the text has an +org-mode-style headline, i.e. a first line that starts with +a \"*\". If not, a headline is constructed from the current date and +some additional data. If the variable `org-adapt-indentation' is non-nil, the entire text is also indented so that it starts in the same column as the headline \(i.e. after the stars). See also the variable `org-reverse-note-order'." + (when (and (equal current-prefix-arg 2) + (not (marker-buffer org-clock-marker))) + (error "No runing clock")) (when (org-bound-and-true-p org-jump-to-target-location) (let* ((end (min (point-max) (1+ (point)))) (beg (point))) @@ -666,15 +711,17 @@ (catch 'quit (if org-note-abort (throw 'quit nil)) (let* ((visitp (org-bound-and-true-p org-jump-to-target-location)) - (fastp (org-xor (equal current-prefix-arg '(4)) + (previousp (and (member current-prefix-arg '((16) 0)) + org-remember-previous-location)) + (clockp (equal current-prefix-arg 2)) + (fastp (org-xor (equal current-prefix-arg 1) org-remember-store-without-prompt)) (file (cond (fastp org-default-notes-file) ((and (eq org-remember-interactive-interface 'refile) org-refile-targets) org-default-notes-file) - ((not (and (equal current-prefix-arg '(16)) - org-remember-previous-location)) + ((not previousp) (org-get-org-file)))) (heading org-remember-default-headline) (visiting (and file (org-find-base-buffer-visiting file))) @@ -682,10 +729,16 @@ (org-startup-align-all-tables nil) (org-goto-start-pos 1) spos exitcmd level reversed txt) - (if (and (equal current-prefix-arg '(16)) org-remember-previous-location) - (setq file (car org-remember-previous-location) - heading (cdr org-remember-previous-location) - fastp t)) + (when (equal current-prefix-arg '(4)) + (setq visitp t)) + (when previousp + (setq file (car org-remember-previous-location) + heading (cdr org-remember-previous-location) + fastp t)) + (when clockp + (setq file (buffer-file-name (marker-buffer org-clock-marker)) + heading org-clock-heading-for-remember + fastp t)) (setq current-prefix-arg nil) ;; Modify text so that it becomes a nice subtree which can be inserted ;; into an org tree. @@ -739,7 +792,6 @@ (setq org-goto-start-pos (or (match-beginning 0) (point-min)))) ((eq heading 'bottom) (goto-char (point-max)) - (re-search-backward "^\\* " nil t) (or (bolp) (newline)) (setq org-goto-start-pos (point))) ((and (stringp heading) (string-match "\\S-" heading)) @@ -761,7 +813,7 @@ (cond ((and fastp (memq heading '(top bottom))) (setq spos org-goto-start-pos - exitcmd (if (eq heading 'top) 'left 'right))) + exitcmd (if (eq heading 'top) 'left nil))) (fastp (setq spos org-goto-start-pos exitcmd 'return)) ((eq org-remember-interactive-interface 'outline) @@ -816,6 +868,12 @@ (move-marker org-remember-last-stored-marker (point))) (t (error "This should not happen")))) + ((eq heading 'bottom) + (org-paste-subtree 1 txt) + (and org-auto-align-tags (org-set-tags nil t)) + (bookmark-set "org-remember-last-stored") + (move-marker org-remember-last-stored-marker (point))) + ((and (bobp) (not reversed)) ;; Put it at the end, one level below level 1 (save-restriction @@ -857,11 +915,41 @@ t) ;; return t to indicate that we took care of this note. - (defun org-do-remember (&optional initial) "Call remember." (remember initial)) +(defun org-require-remember () + "Make sure remember is loaded, or install our own emergency version of it." + (condition-case nil + (require 'remember) + (error + ;; Lets install our own micro version of remember + (defvar remember-register ?R) + (defvar remember-mode-hook nil) + (defvar remember-handler-functions nil) + (defvar remember-buffer "*Remember*") + (defvar remember-save-after-remembering t) + (defvar remember-annotation-functions '(buffer-file-name)) + (defun remember-finalize () + (run-hook-with-args-until-success 'remember-handler-functions) + (when (equal remember-buffer (buffer-name)) + (kill-buffer (current-buffer)) + (jump-to-register remember-register))) + (defun remember-mode () + (fundamental-mode) + (setq mode-name "Remember") + (run-hooks 'remember-mode-hook)) + (defun remember (&optional initial) + (window-configuration-to-register remember-register) + (let* ((annotation (run-hook-with-args-until-success + 'remember-annotation-functions))) + (switch-to-buffer-other-window (get-buffer-create remember-buffer)) + (remember-mode))) + (defun remember-buffer-desc () + (buffer-substring (point-min) (save-excursion (goto-char (point-min)) + (point-at-eol))))))) + (provide 'org-remember) ;; arch-tag: 497f30d0-4bc3-4097-8622-2d27ac5f2698