1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-12-11 09:20:51 +00:00

* org.el (org-deadline-announce): Face removed.

(org-level-faces, org-n-levels): Converted to constant.
        (org-compatible-face): New function.
        (org-hide, org-level-1, org-level-2, org-level-3, org-level-4)
        (org-level-5, org-level-6, org-level-7, org-level-8)
        (org-special-keyword, org-warning, org-headline-done,
        org-link)
        (org-date, org-tag, org-todo, org-done, org-table,
        org-formula)
        (org-scheduled-today, org-scheduled-previously,
        org-time-grid):
        Face definition revised for better color tty support.
        (org-bold-re, org-italic-re, org-underline-re): New constants.
        (org-set-font-lock-defaults): Use the new constants.
        (org-agenda-highlight-todo): New function.
        (org-agenda-todo): Fixed bug with point at end of line.
        (org-agenda-change-all-lines, org-finalize-agenda-entries):
        Fontify TODO keywords.
        (org-insert-link): Preserve relative path in ../ links.
        (org-export-as-html): Convert links pointing to .org files
        into
        links that will work beteen the exported HTML files.
        (org-todo-list): Fix bug when arg=0.
        (org-insert-heading): More fine-tuning.
This commit is contained in:
Carsten Dominik 2006-04-20 11:44:52 +00:00
parent 570fab6c29
commit d943b3c6ed

View File

@ -5,7 +5,7 @@
;; Author: Carsten Dominik <dominik at science dot uva dot nl> ;; Author: Carsten Dominik <dominik at science dot uva dot nl>
;; Keywords: outlines, hypermedia, calendar, wp ;; Keywords: outlines, hypermedia, calendar, wp
;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/ ;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/
;; Version: 4.24 ;; Version: 4.25
;; ;;
;; This file is part of GNU Emacs. ;; This file is part of GNU Emacs.
;; ;;
@ -81,6 +81,12 @@
;; ;;
;; Changes since version 4.00: ;; Changes since version 4.00:
;; --------------------------- ;; ---------------------------
;; Version 4.25
;; - Revision of the font-lock faces section, with better tty support.
;; - TODO keywords in Agenda buffer are fontified.
;; - Export converts links between .org files to links between .html files.
;; - Better support for bold/italic/underline emphasis.
;;
;; Version 4.24 ;; Version 4.24
;; - Bug fixes. ;; - Bug fixes.
;; ;;
@ -182,7 +188,7 @@
;;; Customization variables ;;; Customization variables
(defvar org-version "4.24" (defvar org-version "4.25"
"The version number of the file org.el.") "The version number of the file org.el.")
(defun org-version () (defun org-version ()
(interactive) (interactive)
@ -192,7 +198,7 @@
;; of outline.el. ;; of outline.el.
(defconst org-noutline-p (featurep 'noutline) (defconst org-noutline-p (featurep 'noutline)
"Are we using the new outline mode?") "Are we using the new outline mode?")
(defconst org-xemacs-p (featurep 'xemacs)) (defconst org-xemacs-p (featurep 'xemacs)) ;; FIXME: used by external code?
(defconst org-format-transports-properties-p (defconst org-format-transports-properties-p
(let ((x "a")) (let ((x "a"))
(add-text-properties 0 1 '(test t) x) (add-text-properties 0 1 '(test t) x)
@ -1829,6 +1835,18 @@ you can \"misuse\" it to add arbitrary text to the header."
:group 'org-export-html :group 'org-export-html
:type 'string) :type 'string)
(defcustom org-export-html-link-org-files-as-html t
"Non-nil means, make file links to `file.org' point to `file.html'.
When org-mode is exporting an org-mode file to HTML, links to
non-html files are directly put into a href tag in HTML.
However, links to other Org-mode files (recognized by the
extension `.org.) should become links to the corresponding html
file, assuming that the linked org-mode file will also be
converted to HTML.
When nil, the links still point to the plain `.org' file."
:group 'org-export-html
:type 'boolean)
(defcustom org-export-html-inline-images t (defcustom org-export-html-inline-images t
"Non-nil means, inline images into exported HTML pages. "Non-nil means, inline images into exported HTML pages.
The link will still be to the original location of the image file. The link will still be to the original location of the image file.
@ -1942,205 +1960,246 @@ Changing this variable requires a restart of Emacs to take effect."
:tag "Org Faces" :tag "Org Faces"
:group 'org-font-lock) :group 'org-font-lock)
(defun org-compatible-face (specs)
"Make a compatible face specification.
XEmacs and Emacs 21 do not know about the `min-colors' attribute.
For them we convert a (min-colors 8) entry to a `tty' entry and move it
to the top of the list. The `min-colors' attribute will be removed from
any other entries, and any resulting duplicates will be removed entirely."
(if (or (featurep 'xemacs) (< emacs-major-version 22))
(let (r e a)
(while (setq e (pop specs))
(cond
((memq (car e) '(t default)) (push e r))
((setq a (member '(min-colors 8) (car e)))
(nconc r (list (cons (cons '(type tty) (delq (car a) (car e)))
(cdr e)))))
((setq a (assq 'min-colors (car e)))
(setq e (cons (delq a (car e)) (cdr e)))
(or (assoc (car e) r) (push e r)))
(t (or (assoc (car e) r) (push e r)))))
(nreverse r))
specs))
(defface org-hide (defface org-hide
'( '((((background light)) (:foreground "white"))
(((type tty) (class color)) (:foreground "white")) (((background dark)) (:foreground "black")))
(((class color) (background light)) (:foreground "white")) "Face used to hide leading stars in headlines.
(((class color) (background dark)) (:foreground "black")) The forground color of this face should be equal to the background
(t (:inverse-video nil))) color of the frame."
"Face used for level 1 headlines."
:group 'org-faces) :group 'org-faces)
(defface org-level-1 ;; font-lock-function-name-face (defface org-level-1 ;; font-lock-function-name-face
'((((type tty) (class color)) (:foreground "blue" :weight bold)) (org-compatible-face
(((class color) (background light)) (:foreground "Blue")) '((((class color) (min-colors 88) (background light)) (:foreground "Blue1"))
(((class color) (background dark)) (:foreground "LightSkyBlue")) (((class color) (min-colors 88) (background dark)) (:foreground "LightSkyBlue"))
(t (:inverse-video t :bold t))) (((class color) (min-colors 16) (background light)) (:foreground "Blue"))
(((class color) (min-colors 16) (background dark)) (:foreground "LightSkyBlue"))
(((class color) (min-colors 8)) (:foreground "blue" :bold t))
(t (:bold t))))
"Face used for level 1 headlines." "Face used for level 1 headlines."
:group 'org-faces) :group 'org-faces)
(defface org-level-2 ;; font-lock-variable-name-face (defface org-level-2 ;; font-lock-variable-name-face
'((((type tty) (class color)) (:foreground "yellow" :weight light)) (org-compatible-face
(((class color) (background light)) (:foreground "DarkGoldenrod")) '((((class color) (min-colors 16) (background light)) (:foreground "DarkGoldenrod"))
(((class color) (background dark)) (:foreground "LightGoldenrod")) (((class color) (min-colors 16) (background dark)) (:foreground "LightGoldenrod"))
(t (:bold t :italic t))) (((class color) (min-colors 8) (background light)) (:foreground "yellow"))
(((class color) (min-colors 8) (background dark)) (:foreground "yellow" :bold t))
(t (:bold t))))
"Face used for level 2 headlines." "Face used for level 2 headlines."
:group 'org-faces) :group 'org-faces)
(defface org-level-3 ;; font-lock-keyword-face (defface org-level-3 ;; font-lock-keyword-face
'((((type tty) (class color)) (:foreground "cyan" :weight bold)) (org-compatible-face
(((class color) (background light)) (:foreground "Purple")) '((((class color) (min-colors 88) (background light)) (:foreground "Purple"))
(((class color) (background dark)) (:foreground "Cyan")) (((class color) (min-colors 88) (background dark)) (:foreground "Cyan1"))
(t (:bold t))) (((class color) (min-colors 16) (background light)) (:foreground "Purple"))
(((class color) (min-colors 16) (background dark)) (:foreground "Cyan"))
(((class color) (min-colors 8) (background light)) (:foreground "purple" :bold t))
(((class color) (min-colors 8) (background dark)) (:foreground "cyan" :bold t))
(t (:bold t))))
"Face used for level 3 headlines." "Face used for level 3 headlines."
:group 'org-faces) :group 'org-faces)
(defface org-level-4 ;; font-lock-comment-face (defface org-level-4 ;; font-lock-comment-face
'((((type tty pc) (class color) (background light)) (:foreground "red")) (org-compatible-face
(((type tty pc) (class color) (background dark)) (:foreground "red1")) '((((class color) (min-colors 88) (background light)) (:foreground "Firebrick"))
(((class color) (background light)) (:foreground "Firebrick")) (((class color) (min-colors 88) (background dark)) (:foreground "chocolate1"))
(((class color) (background dark)) (:foreground "chocolate1")) (((class color) (min-colors 16) (background light)) (:foreground "red"))
(t (:bold t :italic t))) (((class color) (min-colors 16) (background dark)) (:foreground "red1"))
(((class color) (min-colors 8) (background light)) (:foreground "red" :bold t))
(((class color) (min-colors 8) (background dark)) (:foreground "red" :bold t))
(t (:bold t))))
"Face used for level 4 headlines." "Face used for level 4 headlines."
:group 'org-faces) :group 'org-faces)
(defface org-level-5 ;; font-lock-type-face (defface org-level-5 ;; font-lock-type-face
'((((type tty) (class color)) (:foreground "green")) (org-compatible-face
(((class color) (background light)) (:foreground "ForestGreen")) '((((class color) (min-colors 16) (background light)) (:foreground "ForestGreen"))
(((class color) (background dark)) (:foreground "PaleGreen")) (((class color) (min-colors 16) (background dark)) (:foreground "PaleGreen"))
(t (:bold t :underline t))) (((class color) (min-colors 8)) (:foreground "green"))))
"Face used for level 5 headlines." "Face used for level 5 headlines."
:group 'org-faces) :group 'org-faces)
(defface org-level-6 ;; font-lock-constant-face (defface org-level-6 ;; font-lock-constant-face
'((((type tty) (class color)) (:foreground "magenta")) (org-compatible-face
(((class color) (background light)) (:foreground "CadetBlue")) '((((class color) (min-colors 16) (background light)) (:foreground "CadetBlue"))
(((class color) (background dark)) (:foreground "Aquamarine")) (((class color) (min-colors 16) (background dark)) (:foreground "Aquamarine"))
(t (:bold t :underline t))) (((class color) (min-colors 8)) (:foreground "magenta"))))
"Face used for level 6 headlines." "Face used for level 6 headlines."
:group 'org-faces) :group 'org-faces)
(defface org-level-7 ;; font-lock-builtin-face (defface org-level-7 ;; font-lock-builtin-face
'((((type tty) (class color)) (:foreground "blue" :weight light)) (org-compatible-face
(((class color) (background light)) (:foreground "Orchid")) '((((class color) (min-colors 16) (background light)) (:foreground "Orchid"))
(((class color) (background dark)) (:foreground "LightSteelBlue")) (((class color) (min-colors 16) (background dark)) (:foreground "LightSteelBlue"))
(t (:bold t))) (((class color) (min-colors 8)) (:foreground "blue")))) ;; FIXME: for dark bg?
"Face used for level 7 headlines." "Face used for level 7 headlines."
:group 'org-faces) :group 'org-faces)
(defface org-level-8 ;; font-lock-string-face (defface org-level-8 ;; font-lock-string-face
'((((type tty) (class color)) (:foreground "green")) (org-compatible-face
(((class color) (background light)) (:foreground "RosyBrown")) '((((class color) (min-colors 16) (background light)) (:foreground "RosyBrown"))
(((class color) (background dark)) (:foreground "LightSalmon")) (((class color) (min-colors 16) (background dark)) (:foreground "LightSalmon"))
(t (:italic t))) (((class color) (min-colors 8)) (:foreground "green"))))
"Face used for level 8 headlines." "Face used for level 8 headlines."
:group 'org-faces) :group 'org-faces)
(defface org-special-keyword ;; font-lock-string-face (defface org-special-keyword ;; font-lock-string-face
'((((type tty) (class color)) (:foreground "green")) (org-compatible-face
(((class color) (background light)) (:foreground "RosyBrown")) '((((class color) (min-colors 16) (background light)) (:foreground "RosyBrown"))
(((class color) (background dark)) (:foreground "LightSalmon")) (((class color) (min-colors 16) (background dark)) (:foreground "LightSalmon"))
(t (:italic t))) (t (:italic t))))
"Face used for special keywords." "Face used for special keywords."
:group 'org-faces) :group 'org-faces)
(defface org-warning ;; font-lock-warning-face (defface org-warning ;; font-lock-warning-face
'((((type tty) (class color)) (:foreground "red")) (org-compatible-face
(((class color) (background light)) (:foreground "Red" :bold t)) '((((class color) (min-colors 16) (background light)) (:foreground "Red1" :bold t))
(((class color) (background dark)) (:foreground "Red1" :bold t)) (((class color) (min-colors 16) (background dark)) (:foreground "Pink" :bold t))
; (((class color) (background dark)) (:foreground "Pink" :bold t)) (((class color) (min-colors 8) (background light)) (:foreground "red" :bold t))
(t (:inverse-video t :bold t))) (((class color) (min-colors 8) (background dark)) (:foreground "red" :bold t))
(t (:bold t))))
"Face for deadlines and TODO keywords." "Face for deadlines and TODO keywords."
:group 'org-faces) :group 'org-faces)
(defface org-headline-done ;; font-lock-string-face (defface org-headline-done ;; font-lock-string-face
'((((type tty) (class color)) (:foreground "green")) (org-compatible-face
(((class color) (background light)) (:foreground "RosyBrown")) '((((class color) (min-colors 16) (background light)) (:foreground "RosyBrown"))
(((class color) (background dark)) (:foreground "LightSalmon")) (((class color) (min-colors 16) (background dark)) (:foreground "LightSalmon"))
(t (:italic t))) (((class color) (min-colors 8) (background light)) (:bold nil))))
"Face used to indicate that a headline is DONE. See also the variable "Face used to indicate that a headline is DONE.
`org-fontify-done-headline'." This face is only used if `org-fontify-done-headline' is set."
:group 'org-faces)
;; Inheritance does not work for xemacs. So we just copy...
(defface org-deadline-announce
'((((type tty) (class color)) (:foreground "blue" :weight bold))
(((class color) (background light)) (:foreground "Blue"))
(((class color) (background dark)) (:foreground "LightSkyBlue"))
(t (:inverse-video t :bold t)))
"Face for upcoming deadlines."
:group 'org-faces)
(defface org-scheduled-today
'((((type tty) (class color)) (:foreground "green"))
(((class color) (background light)) (:foreground "DarkGreen"))
(((class color) (background dark)) (:foreground "PaleGreen"))
(t (:bold t :underline t)))
"Face for items scheduled for a certain day."
:group 'org-faces)
(defface org-scheduled-previously
'((((type tty pc) (class color) (background light)) (:foreground "red"))
(((type tty pc) (class color) (background dark)) (:foreground "red1"))
(((class color) (background light)) (:foreground "Firebrick"))
(((class color) (background dark)) (:foreground "chocolate1"))
(t (:bold t :italic t)))
"Face for items scheduled previously, and not yet done."
:group 'org-faces)
(defface org-formula
'((((type tty pc) (class color) (background light)) (:foreground "red"))
(((type tty pc) (class color) (background dark)) (:foreground "red1"))
(((class color) (background light)) (:foreground "Firebrick"))
(((class color) (background dark)) (:foreground "chocolate1"))
(t (:bold t :italic t)))
"Face for formulas."
:group 'org-faces) :group 'org-faces)
(defface org-link (defface org-link
'((((type tty) (class color)) (:foreground "cyan" :weight bold)) '((((class color) (background light)) (:foreground "Purple" :underline t))
(((class color) (background light)) (:foreground "Purple" :underline t))
(((class color) (background dark)) (:foreground "Cyan" :underline t)) (((class color) (background dark)) (:foreground "Cyan" :underline t))
(t (:bold t))) (t (:underline t)))
"Face for links." "Face for links."
:group 'org-faces) :group 'org-faces)
(defface org-date (defface org-date
'((((type tty) (class color)) (:foreground "cyan" :weight bold)) '((((class color) (background light)) (:foreground "Purple" :underline t))
(((class color) (background light)) (:foreground "Purple" :underline t))
(((class color) (background dark)) (:foreground "Cyan" :underline t)) (((class color) (background dark)) (:foreground "Cyan" :underline t))
(t (:bold t))) (t (:underline t)))
"Face for links." "Face for links."
:group 'org-faces) :group 'org-faces)
(defface org-tag (defface org-tag
'((((type tty) (class color)) (:weight bold)) '((t (:bold t)))
(((class color) (background light)) (:weight bold))
(((class color) (background dark)) (:weight bold))
(t (:bold t)))
"Face for tags." "Face for tags."
:group 'org-faces) :group 'org-faces)
(defface org-todo ;; font-lock-warning-face (defface org-todo ;; font-lock-warning-face
'((((type tty) (class color)) (:foreground "red")) (org-compatible-face
(((class color) (background light)) (:foreground "Red" :bold t)) '((((class color) (min-colors 16) (background light)) (:foreground "Red1" :bold t))
(((class color) (background dark)) (:foreground "Red1" :bold t)) (((class color) (min-colors 16) (background dark)) (:foreground "Pink" :bold t))
; (((class color) (background dark)) (:foreground "Pink" :bold t)) (((class color) (min-colors 8) (background light)) (:foreground "red" :bold t))
(t (:inverse-video t :bold t))) (((class color) (min-colors 8) (background dark)) (:foreground "red" :bold t))
(t (:inverse-video t :bold t))))
"Face for TODO keywords." "Face for TODO keywords."
:group 'org-faces) :group 'org-faces)
(defface org-done ;; font-lock-type-face (defface org-done ;; font-lock-type-face
'((((type tty) (class color)) (:foreground "green")) (org-compatible-face
(((class color) (background light)) (:foreground "ForestGreen" :bold t)) '((((class color) (min-colors 16) (background light)) (:foreground "ForestGreen"))
(((class color) (background dark)) (:foreground "PaleGreen" :bold t)) (((class color) (min-colors 16) (background dark)) (:foreground "PaleGreen"))
(t (:bold t :underline t))) (((class color) (min-colors 8)) (:foreground "green"))
(t (:bold t))))
"Face used for DONE." "Face used for DONE."
:group 'org-faces) :group 'org-faces)
(defface org-table ;; font-lock-function-name-face (defface org-table ;; font-lock-function-name-face
'((((type tty) (class color)) (:foreground "blue" :weight bold)) (org-compatible-face
(((class color) (background light)) (:foreground "Blue")) '((((class color) (min-colors 88) (background light)) (:foreground "Blue1"))
(((class color) (background dark)) (:foreground "LightSkyBlue")) (((class color) (min-colors 88) (background dark)) (:foreground "LightSkyBlue"))
(t (:inverse-video t :bold t))) (((class color) (min-colors 16) (background light)) (:foreground "Blue"))
(((class color) (min-colors 16) (background dark)) (:foreground "LightSkyBlue"))
(((class color) (min-colors 8) (background light)) (:foreground "blue"))
(((class color) (min-colors 8) (background dark)))))
"Face used for tables." "Face used for tables."
:group 'org-faces) :group 'org-faces)
(defface org-formula
(org-compatible-face
'((((class color) (min-colors 88) (background light)) (:foreground "Firebrick"))
(((class color) (min-colors 88) (background dark)) (:foreground "chocolate1"))
(((class color) (min-colors 8) (background light)) (:foreground "red"))
(((class color) (min-colors 8) (background dark)) (:foreground "red"))
(t (:bold t :italic t))))
"Face for formulas."
:group 'org-faces)
(defface org-scheduled-today
(org-compatible-face
'((((class color) (min-colors 88) (background light)) (:foreground "DarkGreen"))
(((class color) (min-colors 88) (background dark)) (:foreground "PaleGreen"))
(((class color) (min-colors 8)) (:foreground "green"))
(t (:bold t :italic t))))
"Face for items scheduled for a certain day."
:group 'org-faces)
(defface org-scheduled-previously
(org-compatible-face
'((((class color) (min-colors 88) (background light)) (:foreground "Firebrick"))
(((class color) (min-colors 88) (background dark)) (:foreground "chocolate1"))
(((class color) (min-colors 8) (background light)) (:foreground "red"))
(((class color) (min-colors 8) (background dark)) (:foreground "red" :bold t))
(t (:bold t))))
"Face for items scheduled previously, and not yet done."
:group 'org-faces)
(defface org-time-grid ;; font-lock-variable-name-face (defface org-time-grid ;; font-lock-variable-name-face
'((((type tty) (class color)) (:foreground "yellow" :weight light)) (org-compatible-face
(((class color) (background light)) (:foreground "DarkGoldenrod")) '((((class color) (min-colors 16) (background light)) (:foreground "DarkGoldenrod"))
(((class color) (background dark)) (:foreground "LightGoldenrod")) (((class color) (min-colors 16) (background dark)) (:foreground "LightGoldenrod"))
(t (:bold t :italic t))) (((class color) (min-colors 8)) (:foreground "yellow" :weight light)))) ; FIXME: turn off???
"Face used for time grids." "Face used for time grids."
:group 'org-faces) :group 'org-faces)
(defvar org-level-faces (defconst org-level-faces
'(org-level-1 org-level-2 org-level-3 org-level-4 '(org-level-1 org-level-2 org-level-3 org-level-4
org-level-5 org-level-6 org-level-7 org-level-8 org-level-5 org-level-6 org-level-7 org-level-8
)) ))
(defvar org-n-levels (length org-level-faces)) (defconst org-n-levels (length org-level-faces))
(defconst org-bold-re
(if (featurep 'xemacs)
"\\([ ]\\|^\\)\\(\\*\\(\\w[a-zA-Z0-9-_ ]*?\\w\\)\\*\\)\\([ ,.]\\|$\\)"
"\\([ ]\\|^\\)\\(\\*\\(\\w[[:word:] -_]*?\\w\\)\\*\\)\\([ ,.]\\|$\\)")
"Regular expression for bold emphasis.")
(defconst org-italic-re
(if (featurep 'xemacs)
"\\([ ]\\|^\\)\\(/\\(\\w[a-zA-Z0-9-_ ]*?\\w\\)/\\)\\([ ,.]\\|$\\)"
"\\([ ]\\|^\\)\\(/\\(\\w[[:word:] -_]*?\\w\\)/\\)\\([ ,.]\\|$\\)")
"Regular expression for italic emphasis.")
(defconst org-underline-re
(if (featurep 'xemacs)
"\\([ ]\\|^\\)\\(_\\(\\w[a-zA-Z0-9-_ ]*?\\w\\)_\\)\\([ ,.]\\|$\\)"
"\\([ ]\\|^\\)\\(_\\(\\w[[:word:] -_]*?\\w\\)_\\)\\([ ,.]\\|$\\)")
"Regular expression for underline emphasis.")
;; Variables for pre-computed regular expressions, all buffer local ;; Variables for pre-computed regular expressions, all buffer local
(defvar org-done-string nil (defvar org-done-string nil
@ -2215,6 +2274,7 @@ Changing this variable requires a restart of Emacs to take effect."
(setq int 'type (setq int 'type
kwds (append kwds (org-split-string value splitre)))) kwds (append kwds (org-split-string value splitre))))
((equal key "STARTUP") ((equal key "STARTUP")
(debug)
(let ((opts (org-split-string value splitre)) (let ((opts (org-split-string value splitre))
(set '(("fold" org-startup-folded t) (set '(("fold" org-startup-folded t)
("overview" org-startup-folded t) ("overview" org-startup-folded t)
@ -2728,9 +2788,12 @@ between words."
(list (concat "\\<" org-deadline-string) '(0 'org-special-keyword t)) (list (concat "\\<" org-deadline-string) '(0 'org-special-keyword t))
(list (concat "\\<" org-scheduled-string) '(0 'org-special-keyword t)) (list (concat "\\<" org-scheduled-string) '(0 'org-special-keyword t))
(list (concat "\\<" org-closed-string) '(0 'org-special-keyword t)) (list (concat "\\<" org-closed-string) '(0 'org-special-keyword t))
(if em '("\\(\\W\\|^\\)\\(\\*\\w+\\*\\)\\(\\W\\|$\\)" 2 'bold prepend)) ; (if em '("\\(\\W\\|^\\)\\(\\*\\w+\\*\\)\\(\\W\\|$\\)" 2 'bold prepend))
(if em '("\\(\\W\\|^\\)\\(/\\w+/\\)\\(\\W\\|$\\)" 2 'italic prepend)) ; (if em '("\\(\\W\\|^\\)\\(/\\w+/\\)\\(\\W\\|$\\)" 2 'italic prepend))
(if em '("\\(\\W\\|^\\)\\(_\\w+_\\)\\(\\W\\|$\\)" 2 'underline prepend)) ; (if em '("\\(\\W\\|^\\)\\(_\\w+_\\)\\(\\W\\|$\\)" 2 'underline prepend))
(if em (list org-bold-re 2 ''bold 'prepend))
(if em (list org-italic-re 2 ''italic 'prepend))
(if em (list org-underline-re 2 ''underline 'prepend))
(list (concat "^\\*+[ \t]*\\<\\(" org-comment-string (list (concat "^\\*+[ \t]*\\<\\(" org-comment-string
"\\|" org-quote-string "\\)\\>") "\\|" org-quote-string "\\)\\>")
'(1 'org-special-keyword t)) '(1 'org-special-keyword t))
@ -3109,13 +3172,14 @@ or nil."
(error (outline-next-heading))) (error (outline-next-heading)))
(prog1 (match-string 0) (prog1 (match-string 0)
(funcall outline-level))))) (funcall outline-level)))))
(if (and (bolp) (cond
((and (org-on-heading-p) (bolp)
(save-excursion (backward-char 1) (not (org-invisible-p)))) (save-excursion (backward-char 1) (not (org-invisible-p))))
(open-line 1) (open-line 1))
(newline)) ((bolp) nil)
(t (newline)))
(insert head) (insert head)
(if (looking-at "[ \t]*") (just-one-space)
(replace-match " "))
(run-hooks 'org-insert-heading-hook)))) (run-hooks 'org-insert-heading-hook))))
(defun org-insert-item () (defun org-insert-item ()
@ -3128,8 +3192,20 @@ Return t when things worked, nil when we are not in an item."
(org-at-item-p) (org-at-item-p)
t) t)
(error nil))) (error nil)))
(unless (bolp) (newline)) (let* ((bul (match-string 0))
(insert (match-string 0)) (eow (save-excursion (beginning-of-line 1) (looking-at "[ \t]*")
(match-end 0)))
(eowcol (save-excursion (goto-char eow) (current-column))))
(cond
((and (org-at-item-p) (<= (point) eow))
;; before the bullet
(beginning-of-line 1)
(open-line 1))
((<= (point) eow)
(beginning-of-line 1))
(t (newline)))
(insert bul)
(just-one-space))
(org-maybe-renumber-ordered-list) (org-maybe-renumber-ordered-list)
t)) t))
@ -5335,7 +5411,8 @@ for a keyword. A numeric prefix directly selects the Nth keyword in
(completion-ignore-case t) (completion-ignore-case t)
(org-select-this-todo-keyword (org-select-this-todo-keyword
(if (stringp arg) arg (if (stringp arg) arg
(and arg (integerp arg) (nth (1- arg) org-todo-keywords)))) (and arg (integerp arg) (> arg 0)
(nth (1- arg) org-todo-keywords))))
rtn rtnall files file pos) rtn rtnall files file pos)
(when (equal arg '(4)) (when (equal arg '(4))
(setq org-select-this-todo-keyword (setq org-select-this-todo-keyword
@ -5935,6 +6012,7 @@ the documentation of `org-diary'."
"Return the TODO information for agenda display." "Return the TODO information for agenda display."
(let* ((props (list 'face nil (let* ((props (list 'face nil
'done-face 'org-done 'done-face 'org-done
'org-not-done-regexp org-not-done-regexp
'mouse-face 'highlight 'mouse-face 'highlight
'keymap org-agenda-keymap 'keymap org-agenda-keymap
'help-echo 'help-echo
@ -5975,6 +6053,7 @@ the documentation of `org-diary'."
(defun org-agenda-get-timestamps () (defun org-agenda-get-timestamps ()
"Return the date stamp information for agenda display." "Return the date stamp information for agenda display."
(let* ((props (list 'face nil (let* ((props (list 'face nil
'org-not-done-regexp org-not-done-regexp
'mouse-face 'highlight 'mouse-face 'highlight
'keymap org-agenda-keymap 'keymap org-agenda-keymap
'help-echo 'help-echo
@ -6040,6 +6119,7 @@ the documentation of `org-diary'."
(defun org-agenda-get-closed () (defun org-agenda-get-closed ()
"Return the logged TODO entries for agenda display." "Return the logged TODO entries for agenda display."
(let* ((props (list 'mouse-face 'highlight (let* ((props (list 'mouse-face 'highlight
'org-not-done-regexp org-not-done-regexp
'keymap org-agenda-keymap 'keymap org-agenda-keymap
'help-echo 'help-echo
(format "mouse-2 or RET jump to org file %s" (format "mouse-2 or RET jump to org file %s"
@ -6091,6 +6171,7 @@ the documentation of `org-diary'."
"Return the deadline information for agenda display." "Return the deadline information for agenda display."
(let* ((wdays org-deadline-warning-days) (let* ((wdays org-deadline-warning-days)
(props (list 'mouse-face 'highlight (props (list 'mouse-face 'highlight
'org-not-done-regexp org-not-done-regexp
'keymap org-agenda-keymap 'keymap org-agenda-keymap
'help-echo 'help-echo
(format "mouse-2 or RET jump to org file %s" (format "mouse-2 or RET jump to org file %s"
@ -6146,6 +6227,7 @@ the documentation of `org-diary'."
(defun org-agenda-get-scheduled () (defun org-agenda-get-scheduled ()
"Return the scheduled information for agenda display." "Return the scheduled information for agenda display."
(let* ((props (list 'face 'org-scheduled-previously (let* ((props (list 'face 'org-scheduled-previously
'org-not-done-regexp org-not-done-regexp
'undone-face 'org-scheduled-previously 'undone-face 'org-scheduled-previously
'done-face 'org-done 'done-face 'org-done
'mouse-face 'highlight 'mouse-face 'highlight
@ -6195,6 +6277,7 @@ the documentation of `org-diary'."
(defun org-agenda-get-blocks () (defun org-agenda-get-blocks ()
"Return the date-range information for agenda display." "Return the date-range information for agenda display."
(let* ((props (list 'face nil (let* ((props (list 'face nil
'org-not-done-regexp org-not-done-regexp
'mouse-face 'highlight 'mouse-face 'highlight
'keymap org-agenda-keymap 'keymap org-agenda-keymap
'help-echo 'help-echo
@ -6430,8 +6513,25 @@ HH:MM."
(defun org-finalize-agenda-entries (list) (defun org-finalize-agenda-entries (list)
"Sort and concatenate the agenda items." "Sort and concatenate the agenda items."
(setq list (mapcar 'org-agenda-highlight-todo list))
(mapconcat 'identity (sort list 'org-entries-lessp) "\n")) (mapconcat 'identity (sort list 'org-entries-lessp) "\n"))
(defun org-agenda-highlight-todo (x)
(let (re)
(if (eq x 'line)
(save-excursion
(beginning-of-line 1)
(setq re (get-text-property (point) 'org-not-done-regexp))
(goto-char (+ (point) (get-text-property (point) 'prefix-length)))
(and (looking-at (concat "[ \t]*" re))
(add-text-properties (match-beginning 0) (match-end 0)
'(face org-todo))))
(setq re (get-text-property 0 'org-not-done-regexp x))
(and re (string-match re x)
(add-text-properties (match-beginning 0) (match-end 0)
'(face org-todo) x))
x)))
(defsubst org-cmp-priority (a b) (defsubst org-cmp-priority (a b)
"Compare the priorities of string A and B." "Compare the priorities of string A and B."
(let ((pa (or (get-text-property 1 'priority a) 0)) (let ((pa (or (get-text-property 1 'priority a) 0))
@ -6582,7 +6682,7 @@ the same tree node, and the headline of the tree node in the Org-mode file."
(and (outline-next-heading) (and (outline-next-heading)
(org-flag-heading nil))) ; show the next heading (org-flag-heading nil))) ; show the next heading
(org-todo arg) (org-todo arg)
(forward-char 1) (and (bolp) (forward-char 1))
(setq newhead (org-get-heading)) (setq newhead (org-get-heading))
(save-excursion (save-excursion
(org-back-to-heading) (org-back-to-heading)
@ -6622,12 +6722,13 @@ the new TODO state."
(replace-match new t t) (replace-match new t t)
(beginning-of-line 1) (beginning-of-line 1)
(add-text-properties (point-at-bol) (point-at-eol) props) (add-text-properties (point-at-bol) (point-at-eol) props)
(if fixface (when fixface
(add-text-properties (add-text-properties
(point-at-bol) (point-at-eol) (point-at-bol) (point-at-eol)
(list 'face (list 'face
(if org-last-todo-state-is-todo (if org-last-todo-state-is-todo
undone-face done-face)))) undone-face done-face)))
(org-agenda-highlight-todo 'line))
(beginning-of-line 1)) (beginning-of-line 1))
(error "Line update did not work"))) (error "Line update did not work")))
(beginning-of-line 0))))) (beginning-of-line 0)))))
@ -7804,7 +7905,11 @@ If the file does not exist, an error is thrown."
(setq cmd 'emacs)))) (setq cmd 'emacs))))
(cond (cond
((and (stringp cmd) (not (string-match "^\\s-*$" cmd))) ((and (stringp cmd) (not (string-match "^\\s-*$" cmd)))
(setq cmd (format cmd (concat "\"" file "\""))) ; (setq cmd (format cmd (concat "\"" file "\"")))
;; FIXME: normalize use of quotes
(if (string-match "['\"]%s['\"]" cmd)
(setq cmd (replace-match "'%s'" t t cmd)))
(setq cmd (format cmd file))
(save-window-excursion (save-window-excursion
(shell-command (concat cmd " &")))) (shell-command (concat cmd " &"))))
((or (stringp cmd) ((or (stringp cmd)
@ -8198,12 +8303,16 @@ is in the current directory or below."
(complete-file (complete-file
;; Completing read for file names. ;; Completing read for file names.
(setq file (read-file-name "File: ")) (setq file (read-file-name "File: "))
(let ((pwd (file-name-as-directory (expand-file-name ".")))) (let ((pwd (file-name-as-directory (expand-file-name ".")))
(pwd1 (file-name-as-directory (abbreviate-file-name
(expand-file-name ".")))))
(cond (cond
((equal complete-file '(16)) ((equal complete-file '(16))
(setq link (org-make-link (setq link (org-make-link
"file:" "file:"
(abbreviate-file-name (expand-file-name file))))) (abbreviate-file-name (expand-file-name file)))))
((string-match (concat "^" (regexp-quote pwd1) "\\(.+\\)") file)
(setq link (org-make-link "file:" (match-string 1 file))))
((string-match (concat "^" (regexp-quote pwd) "\\(.+\\)") ((string-match (concat "^" (regexp-quote pwd) "\\(.+\\)")
(expand-file-name file)) (expand-file-name file))
(setq link (org-make-link (setq link (org-make-link
@ -11796,14 +11905,27 @@ headlines. The default is 3. Lower levels will become bulleted lists."
;; FILE link ;; FILE link
(let* ((filename path) (let* ((filename path)
(abs-p (file-name-absolute-p filename)) (abs-p (file-name-absolute-p filename))
(thefile (if abs-p (expand-file-name filename) filename)) thefile file-is-image-p search)
(thefile (save-match-data
(if (string-match ":[0-9]+$" thefile)
(replace-match "" t t thefile)
thefile)))
(file-is-image-p
(save-match-data (save-match-data
(string-match (org-image-file-name-regexp) thefile)))) (if (string-match "::\\(.*\\)" filename)
(setq search (match-string 1 filename)
filename (replace-match "" nil nil filename)))
(setq file-is-image-p
(string-match (org-image-file-name-regexp) filename))
(setq thefile (if abs-p (expand-file-name filename) filename))
(when (and org-export-html-link-org-files-as-html
(string-match "\\.org$" thefile))
(setq thefile (concat (substring thefile 0
(match-beginning 0))
".html"))
(if (and search
;; make sure this is can be used as target search
(not (string-match "^[0-9]*$" search))
(not (string-match "^\\*" search))
(not (string-match "^/.*/$" search)))
(setq thefile (concat thefile "#"
(org-solidify-link-text
(org-link-unescape search)))))))
(setq rpl (if (and org-export-html-inline-images (setq rpl (if (and org-export-html-inline-images
file-is-image-p) file-is-image-p)
(concat "<img src=\"" thefile "\"/>") (concat "<img src=\"" thefile "\"/>")
@ -12156,15 +12278,24 @@ stacked delimiters is N. Escaping delimiters is not possible."
(setq string (replace-match (match-string 1 string) t t string)))) (setq string (replace-match (match-string 1 string) t t string))))
string) string)
;(defun org-export-html-convert-emphasize (string)
; (let (c (s 0))
; (while (string-match "\\(\\W\\|^\\)\\([*/_]\\)\\(\\w+\\)\\2\\(\\W\\|$\\)" string s)
; (setq c (cdr (assoc (match-string 2 string)
; '(("*" . "b") ("/" . "i") ("_" . "u"))))
; s (+ (match-end 0) 3)
; string (replace-match
; (concat "\\1<" c ">\\3</" c ">\\4") t nil string)))
; string))
(defun org-export-html-convert-emphasize (string) (defun org-export-html-convert-emphasize (string)
(let (c (s 0)) (while (string-match org-italic-re string)
(while (string-match "\\(\\W\\|^\\)\\([*/_]\\)\\(\\w+\\)\\2\\(\\W\\|$\\)" string s) (setq string (replace-match "\\1<i>\\3</i>\\4" t nil string)))
(setq c (cdr (assoc (match-string 2 string) (while (string-match org-bold-re string)
'(("*" . "b") ("/" . "i") ("_" . "u")))) (setq string (replace-match "\\1<b>\\3</b>\\4" t nil string)))
s (+ (match-end 0) 3) (while (string-match org-underline-re string)
string (replace-match (setq string (replace-match "\\1<u>\\3</u>\\4" t nil string)))
(concat "\\1<" c ">\\3</" c ">\\4") t nil string))) string)
string))
(defun org-parse-key-lines () (defun org-parse-key-lines ()
"Find the special key lines with the information for exporters." "Find the special key lines with the information for exporters."