orgstruct++-mode: Make more visible in docs, parse item body
orgstruct++-mode is an enhanced version of orgstruct mode that also imports all indentation and paragraph settings into the major mode. Furthermore, it now allows to use M-RET and M-S-RET in items after the first line. The latter change was a request by Austin Frank.
This commit is contained in:
parent
94ec7c98b1
commit
9989e5f030
|
@ -1,3 +1,8 @@
|
||||||
|
2009-02-22 Carsten Dominik <carsten.dominik@gmail.com>
|
||||||
|
|
||||||
|
* org.texi (Orgstruct mode): Describe `orgstruct++-mode'.
|
||||||
|
(Drawers): Mention the LOGBOOK drawer.
|
||||||
|
|
||||||
2009-02-20 Carsten Dominik <carsten.dominik@gmail.com>
|
2009-02-20 Carsten Dominik <carsten.dominik@gmail.com>
|
||||||
|
|
||||||
* org.texi (Export options, Sectioning structure): Document the
|
* org.texi (Export options, Sectioning structure): Document the
|
||||||
|
|
26
doc/org.texi
26
doc/org.texi
|
@ -372,7 +372,7 @@ Interaction with other packages
|
||||||
|
|
||||||
Hacking
|
Hacking
|
||||||
|
|
||||||
* Hooks:: Who to reach into Org's internals
|
* Hooks:: How to reach into Org's internals
|
||||||
* Add-on packages:: Available extensions
|
* Add-on packages:: Available extensions
|
||||||
* Adding hyperlink types:: New custom link types
|
* Adding hyperlink types:: New custom link types
|
||||||
* Context-sensitive commands:: How to add functioality to such commands
|
* Context-sensitive commands:: How to add functioality to such commands
|
||||||
|
@ -1505,22 +1505,24 @@ you can use the usual commands to follow these links.
|
||||||
@cindex minor mode for structure editing
|
@cindex minor mode for structure editing
|
||||||
|
|
||||||
If you like the intuitive way the Org mode structure editing and list
|
If you like the intuitive way the Org mode structure editing and list
|
||||||
formatting works, you might want to use these commands in other modes
|
formatting works, you might want to use these commands in other modes like
|
||||||
like Text mode or Mail mode as well. The minor mode Orgstruct mode
|
Text mode or Mail mode as well. The minor mode @code{orgstruct-mode} makes
|
||||||
makes this possible. You can always toggle the mode with @kbd{M-x
|
this possible. Toggle the mode with @kbd{M-x orgstruct-mode}, or
|
||||||
orgstruct-mode}. To turn it on by default, for example in Mail mode,
|
turn it on by default, for example in Mail mode, with one of:
|
||||||
use
|
|
||||||
|
|
||||||
@lisp
|
@lisp
|
||||||
(add-hook 'mail-mode-hook 'turn-on-orgstruct)
|
(add-hook 'mail-mode-hook 'turn-on-orgstruct)
|
||||||
|
(add-hook 'mail-mode-hook 'turn-on-orgstruct++)
|
||||||
@end lisp
|
@end lisp
|
||||||
|
|
||||||
When this mode is active and the cursor is on a line that looks to
|
When this mode is active and the cursor is on a line that looks to Org like a
|
||||||
Org like a headline of the first line of a list item, most
|
headline of the first line of a list item, most structure editing commands
|
||||||
structure editing commands will work, even if the same keys normally
|
will work, even if the same keys normally have different functionality in the
|
||||||
have different functionality in the major mode you are using. If the
|
major mode you are using. If the cursor is not in one of those special
|
||||||
cursor is not in one of those special lines, Orgstruct mode lurks
|
lines, Orgstruct mode lurks silently in the shadow. When you use
|
||||||
silently in the shadow.
|
@code{orgstruct++-mode}, Org will also export indentation and autofill
|
||||||
|
settings into that mode, and detect item context after the first line of an
|
||||||
|
item.
|
||||||
|
|
||||||
@node Tables, Hyperlinks, Document Structure, Top
|
@node Tables, Hyperlinks, Document Structure, Top
|
||||||
@chapter Tables
|
@chapter Tables
|
||||||
|
|
|
@ -1,3 +1,13 @@
|
||||||
|
2009-02-22 Carsten Dominik <carsten.dominik@gmail.com>
|
||||||
|
|
||||||
|
* org.el (orgstruct++-mode): New function.
|
||||||
|
(turn-on-orgstruct++): Call `orgstruct++-mode'.
|
||||||
|
(org-context-p): Allow detecting item context after the first line
|
||||||
|
of an item.
|
||||||
|
(orgstruct-make-binding): Detect if item-body context should be
|
||||||
|
seen.
|
||||||
|
(orgstruct-is-++): New variable.
|
||||||
|
|
||||||
2009-02-21 Carsten Dominik <carsten.dominik@gmail.com>
|
2009-02-21 Carsten Dominik <carsten.dominik@gmail.com>
|
||||||
|
|
||||||
* org.el (org-reload): New command.
|
* org.el (org-reload): New command.
|
||||||
|
|
53
lisp/org.el
53
lisp/org.el
|
@ -6267,22 +6267,38 @@ C-c C-c Set tags / toggle checkbox"
|
||||||
"Unconditionally turn on `orgstruct-mode'."
|
"Unconditionally turn on `orgstruct-mode'."
|
||||||
(orgstruct-mode 1))
|
(orgstruct-mode 1))
|
||||||
|
|
||||||
|
(defun orgstruct++-mode (&optional arg)
|
||||||
|
"Toggle `orgstruct-mode', the enhanced version of it.
|
||||||
|
In addition to setting orgstruct-mode, this also exports all indentation and
|
||||||
|
autofilling variables from org-mode into the buffer. It will also
|
||||||
|
recognize item context in multiline items.
|
||||||
|
Note that turning off orgstruct-mode will *not* remove the
|
||||||
|
indentation/paragraph settings. This can only be done by refreshing the
|
||||||
|
major mode, for example with \[normal-mode]."
|
||||||
|
(interactive "P")
|
||||||
|
(setq arg (prefix-numeric-value (or arg (if orgstruct-mode -1 1))))
|
||||||
|
(if (< arg 1)
|
||||||
|
(orgstruct-mode -1)
|
||||||
|
(orgstruct-mode 1)
|
||||||
|
(let (var val)
|
||||||
|
(mapc
|
||||||
|
(lambda (x)
|
||||||
|
(when (string-match
|
||||||
|
"^\\(paragraph-\\|auto-fill\\|fill-paragraph\\|adaptive-fill\\|indent-\\)"
|
||||||
|
(symbol-name (car x)))
|
||||||
|
(setq var (car x) val (nth 1 x))
|
||||||
|
(org-set-local var (if (eq (car-safe val) 'quote) (nth 1 val) val))))
|
||||||
|
org-local-vars)
|
||||||
|
(org-set-local 'orgstruct-is-++ t))))
|
||||||
|
|
||||||
|
(defvar orgstruct-is-++ nil
|
||||||
|
"Is orgstruct-mode in ++ version in the current-buffer?")
|
||||||
|
(make-variable-buffer-local 'orgstruct-is-++)
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defun turn-on-orgstruct++ ()
|
(defun turn-on-orgstruct++ ()
|
||||||
"Unconditionally turn on `orgstruct-mode', and force org-mode indentations.
|
"Unconditionally turn on `orgstruct++-mode'."
|
||||||
In addition to setting orgstruct-mode, this also exports all indentation and
|
(orgstruct++-mode 1))
|
||||||
autofilling variables from org-mode into the buffer. Note that turning
|
|
||||||
off orgstruct-mode will *not* remove these additional settings."
|
|
||||||
(orgstruct-mode 1)
|
|
||||||
(let (var val)
|
|
||||||
(mapc
|
|
||||||
(lambda (x)
|
|
||||||
(when (string-match
|
|
||||||
"^\\(paragraph-\\|auto-fill\\|fill-paragraph\\|adaptive-fill\\|indent-\\)"
|
|
||||||
(symbol-name (car x)))
|
|
||||||
(setq var (car x) val (nth 1 x))
|
|
||||||
(org-set-local var (if (eq (car-safe val) 'quote) (nth 1 val) val))))
|
|
||||||
org-local-vars)))
|
|
||||||
|
|
||||||
(defun orgstruct-error ()
|
(defun orgstruct-error ()
|
||||||
"Error when there is no default binding for a structure key."
|
"Error when there is no default binding for a structure key."
|
||||||
|
@ -6355,7 +6371,10 @@ to execute outside of tables."
|
||||||
"'.")
|
"'.")
|
||||||
'(interactive "p")
|
'(interactive "p")
|
||||||
(list 'if
|
(list 'if
|
||||||
'(org-context-p 'headline 'item)
|
`(org-context-p 'headline 'item
|
||||||
|
(and orgstruct-is-++
|
||||||
|
,(and (memq fun '(org-insert-heading org-insert-todo-heading)) t)
|
||||||
|
'item-body))
|
||||||
(list 'org-run-like-in-org-mode (list 'quote fun))
|
(list 'org-run-like-in-org-mode (list 'quote fun))
|
||||||
(list 'let '(orgstruct-mode)
|
(list 'let '(orgstruct-mode)
|
||||||
(list 'call-interactively
|
(list 'call-interactively
|
||||||
|
@ -6376,7 +6395,9 @@ Possible values in the list of contexts are `table', `headline', and `item'."
|
||||||
;;????????? (looking-at "\\*+"))
|
;;????????? (looking-at "\\*+"))
|
||||||
(looking-at outline-regexp))
|
(looking-at outline-regexp))
|
||||||
(and (memq 'item contexts)
|
(and (memq 'item contexts)
|
||||||
(looking-at "[ \t]*\\([-+*] \\|[0-9]+[.)] \\)")))
|
(looking-at "[ \t]*\\([-+*] \\|[0-9]+[.)] \\)"))
|
||||||
|
(and (memq 'item-body contexts)
|
||||||
|
(org-in-item-p)))
|
||||||
(goto-char pos))))
|
(goto-char pos))))
|
||||||
|
|
||||||
(defun org-get-local-variables ()
|
(defun org-get-local-variables ()
|
||||||
|
|
Loading…
Reference in New Issue