[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/lisp/textmodes/org.el
From: |
Carsten Dominik |
Subject: |
[Emacs-diffs] Changes to emacs/lisp/textmodes/org.el |
Date: |
Tue, 30 Aug 2005 08:06:16 -0400 |
Index: emacs/lisp/textmodes/org.el
diff -c emacs/lisp/textmodes/org.el:1.33 emacs/lisp/textmodes/org.el:1.34
*** emacs/lisp/textmodes/org.el:1.33 Sat Aug 6 17:41:14 2005
--- emacs/lisp/textmodes/org.el Tue Aug 30 12:06:14 2005
***************
*** 1,12 ****
! ;; org.el --- Outline-based notes management and organizer
;; Carstens outline-mode for keeping track of everything.
!
! ;; Copyright (C) 2004, 2005 Free Software Foundation, Inc.
;;
;; Author: Carsten Dominik <dominik at science dot uva dot nl>
;; Keywords: outlines, hypermedia, calendar
;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/
! ;; Version: 3.14
;;
;; This file is part of GNU Emacs.
;;
--- 1,11 ----
! ;;; org.el --- Outline-based notes management and organizer
;; Carstens outline-mode for keeping track of everything.
! ;; Copyright (c) 2004, 2005 Free Software Foundation
;;
;; Author: Carsten Dominik <dominik at science dot uva dot nl>
;; Keywords: outlines, hypermedia, calendar
;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/
! ;; Version: 3.15
;;
;; This file is part of GNU Emacs.
;;
***************
*** 81,86 ****
--- 80,92 ----
;;
;; Changes:
;; -------
+ ;; Version 3.15
+ ;; - QUOTE keyword at the beginning of an entry causes fixed-width export
+ ;; of unmodified entry text. `C-c :' toggles this keyword.
+ ;; - New face `org-special-keyword' which is used for COMMENT, QUOTE,
+ ;; DEADLINE and SCHEDULED, and priority cookies. Default is only a weak
+ ;; color, to reduce the amount of aggressive color in the buffer.
+ ;;
;; Version 3.14
;; - Formulas for individual fields in table.
;; - Automatic recalculation in calculating tables.
***************
*** 189,195 ****
;;; Customization variables
! (defvar org-version "3.14"
"The version number of the file org.el.")
(defun org-version ()
(interactive)
--- 195,201 ----
;;; Customization variables
! (defvar org-version "3.15"
"The version number of the file org.el.")
(defun org-version ()
(interactive)
***************
*** 388,393 ****
--- 394,408 ----
:group 'org-keywords
:type 'string)
+ (defcustom org-quote-string "QUOTE"
+ "Entries starting with this keyword will be exported in fixed-width font.
+ Quoting applies only to the text in the entry following the headline, and does
+ not extend beyond the next headline, even if that is lower level.
+ An entry can be toggled between QUOTE and normal with
+ \\[org-toggle-fixed-width-section]"
+ :group 'org-keywords
+ :type 'string)
+
(defcustom org-after-todo-state-change-hook nil
"Hook which is run after the state of a TODO item was changed.
The new state (a string with a todo keyword, or nil) is available in the
***************
*** 1593,1598 ****
--- 1608,1621 ----
"Face used for level 8 headlines."
:group 'org-faces)
+ (defface org-special-keyword ;; font-lock-string-face
+ '((((type tty) (class color)) (:foreground "green"))
+ (((class color) (background light)) (:foreground "RosyBrown"))
+ (((class color) (background dark)) (:foreground "LightSalmon"))
+ (t (:italic t)))
+ "Face used for level 8 headlines."
+ :group 'org-faces)
+
(defface org-warning ;; font-lock-warning-face
'((((type tty) (class color)) (:foreground "red"))
(((class color) (background light)) (:foreground "Red" :bold t))
***************
*** 1919,1935 ****
'(org-activate-dates (0 'org-link))
(list (concat "^\\*+[ \t]*" org-not-done-regexp)
'(1 'org-warning t))
! (list (concat "\\[#[A-Z]\\]") '(0 'org-warning t))
! (list (concat "\\<" org-deadline-string) '(0 'org-warning t))
! (list (concat "\\<" org-scheduled-string) '(0 'org-warning t))
;; '("\\(\\s-\\|^\\)\\(\\*\\([a-zA-Z]+\\)\\*\\)\\([^a-zA-Z*]\\|$\\)"
;; (3 'bold))
;; '("\\(\\s-\\|^\\)\\(/\\([a-zA-Z]+\\)/\\)\\([^a-zA-Z*]\\|$\\)"
;; (3 'italic))
;; '("\\(\\s-\\|^\\)\\(_\\([a-zA-Z]+\\)_\\)\\([^a-zA-Z*]\\|$\\)"
;; (3 'underline))
! (list (concat "^\\*+[ \t]*\\<\\(" org-comment-string "\\)\\>")
! '(1 'org-warning t))
'("^#.*" (0 'font-lock-comment-face t))
(if org-fontify-done-headline
(list (concat "^[*]+ +\\<\\(" org-done-string "\\)\\(.*\\)\\>")
--- 1942,1963 ----
'(org-activate-dates (0 'org-link))
(list (concat "^\\*+[ \t]*" org-not-done-regexp)
'(1 'org-warning t))
! (list (concat "\\[#[A-Z]\\]") '(0 'org-special-keyword t))
! ; (list (concat "\\<" org-deadline-string) '(0 'org-warning t))
! ; (list (concat "\\<" org-scheduled-string) '(0 'org-warning t))
! (list (concat "\\<" org-deadline-string) '(0 'org-special-keyword t))
! (list (concat "\\<" org-scheduled-string) '(0 'org-special-keyword t))
;; '("\\(\\s-\\|^\\)\\(\\*\\([a-zA-Z]+\\)\\*\\)\\([^a-zA-Z*]\\|$\\)"
;; (3 'bold))
;; '("\\(\\s-\\|^\\)\\(/\\([a-zA-Z]+\\)/\\)\\([^a-zA-Z*]\\|$\\)"
;; (3 'italic))
;; '("\\(\\s-\\|^\\)\\(_\\([a-zA-Z]+\\)_\\)\\([^a-zA-Z*]\\|$\\)"
;; (3 'underline))
! ; (list (concat "^\\*+[ \t]*\\<\\(" org-comment-string "\\)\\>")
! ; '(1 'org-warning t))
! (list (concat "^\\*+[ \t]*\\<\\(" org-comment-string
! "\\|" org-quote-string "\\)\\>")
! '(1 'org-special-keyword t))
'("^#.*" (0 'font-lock-comment-face t))
(if org-fontify-done-headline
(list (concat "^[*]+ +\\<\\(" org-done-string "\\)\\(.*\\)\\>")
***************
*** 2216,2222 ****
(shrink-window-if-larger-than-buffer (get-buffer-window "*Help*"))
(setq buffer-read-only nil)
(erase-buffer)
! (insert-buffer buf)
(let ((org-startup-truncated t)
(org-startup-folded t)
(org-startup-with-deadline-check nil))
--- 2244,2250 ----
(shrink-window-if-larger-than-buffer (get-buffer-window "*Help*"))
(setq buffer-read-only nil)
(erase-buffer)
! (insert-buffer-substring buf)
(let ((org-startup-truncated t)
(org-startup-folded t)
(org-startup-with-deadline-check nil))
***************
*** 4013,4019 ****
(get-text-property (point) 'org-marker))
(org-agenda-show)))
! (defvar org-disable-diary nil) ;Dynamically-scoped param.
(defun org-get-entries-from-diary (date)
"Get the (Emacs Calendar) diary entries for DATE."
--- 4041,4047 ----
(get-text-property (point) 'org-marker))
(org-agenda-show)))
! (defvar org-disable-agenda-to-diary nil) ;Dynamically-scoped param.
(defun org-get-entries-from-diary (date)
"Get the (Emacs Calendar) diary entries for DATE."
***************
*** 4021,4028 ****
(diary-display-hook '(fancy-diary-display))
(list-diary-entries-hook
(cons 'org-diary-default-entry list-diary-entries-hook))
entries
! (org-disable-diary t))
(save-excursion
(save-window-excursion
(list-diary-entries date 1)))
--- 4049,4058 ----
(diary-display-hook '(fancy-diary-display))
(list-diary-entries-hook
(cons 'org-diary-default-entry list-diary-entries-hook))
+ (diary-file-name-prefix-function nil) ; turn this feature off
+ (diary-modify-entry-list-string-function
'org-modify-diary-entry-string)
entries
! (org-disable-agenda-to-diary t))
(save-excursion
(save-window-excursion
(list-diary-entries date 1)))
***************
*** 4076,4110 ****
(if (re-search-forward "^Org-mode dummy\n?" nil t)
(replace-match "")))
! ;; Advise the add-to-diary-list function to allow org to jump to
! ;; diary entries. Wrapped into eval-after-load to avoid loading
! ;; advice unnecessarily
(eval-after-load "diary-lib"
! '(defadvice add-to-diary-list (before org-mark-diary-entry activate)
! "Make the position visible."
! (if (and org-disable-diary ;; called from org-agenda
! (stringp string)
! (buffer-file-name))
! (add-text-properties
! 0 (length string)
! (list 'mouse-face 'highlight
! 'keymap org-agenda-keymap
! 'help-echo
! (format
! "mouse-2 or RET jump to diary file %s"
! (abbreviate-file-name (buffer-file-name)))
! 'org-agenda-diary-link t
! 'org-marker (org-agenda-new-marker (point-at-bol)))
! string))))
(defun org-diary-default-entry ()
"Add a dummy entry to the diary.
Needed to avoid empty dates which mess up holiday display."
;; Catch the error if dealing with the new add-to-diary-alist
! (condition-case nil
! (add-to-diary-list original-date "Org-mode dummy" "")
! (error
! (add-to-diary-list original-date "Org-mode dummy" "" nil))))
(defun org-add-file (&optional file)
"Add current file to the list of files in variable `org-agenda-files'.
--- 4106,4148 ----
(if (re-search-forward "^Org-mode dummy\n?" nil t)
(replace-match "")))
! ;; Make sure entries from the diary have the right text properties.
(eval-after-load "diary-lib"
! '(if (boundp 'diary-modify-entry-list-string-function)
! ;; We can rely on the hook, nothing to do
! nil
! ;; Hook not avaiable, must use advice to make this work
! (defadvice add-to-diary-list (before org-mark-diary-entry activate)
! "Make the position visible."
! (if (and org-disable-agenda-to-diary ;; called from org-agenda
! (stringp string)
! (buffer-file-name))
! (setq string (org-modify-diary-entry-string string))))))
!
! (defun org-modify-diary-entry-string (string)
! "Add text properties to string, allowing org-mode to act on it."
! (add-text-properties
! 0 (length string)
! (list 'mouse-face 'highlight
! 'keymap org-agenda-keymap
! 'help-echo
! (format
! "mouse-2 or RET jump to diary file %s"
! (abbreviate-file-name (buffer-file-name)))
! 'org-agenda-diary-link t
! 'org-marker (org-agenda-new-marker (point-at-bol)))
! string)
! string)
(defun org-diary-default-entry ()
"Add a dummy entry to the diary.
Needed to avoid empty dates which mess up holiday display."
;; Catch the error if dealing with the new add-to-diary-alist
! (when org-disable-agenda-to-diary
! (condition-case nil
! (add-to-diary-list original-date "Org-mode dummy" "")
! (error
! (add-to-diary-list original-date "Org-mode dummy" "" nil)))))
(defun org-add-file (&optional file)
"Add current file to the list of files in variable `org-agenda-files'.
***************
*** 4238,4248 ****
file rtn results)
;; If this is called during org-agenda, don't return any entries to
;; the calendar. Org Agenda will list these entries itself.
! (if org-disable-diary (setq files nil))
(while (setq file (pop files))
(setq rtn (apply 'org-agenda-get-day-entries file date args))
(setq results (append results rtn)))
! (concat (org-finalize-agenda-entries results) "\n")))
(defun org-agenda-get-day-entries (file date &rest args)
"Does the work for `org-diary' and `org-agenda'.
--- 4276,4287 ----
file rtn results)
;; If this is called during org-agenda, don't return any entries to
;; the calendar. Org Agenda will list these entries itself.
! (if org-disable-agenda-to-diary (setq files nil))
(while (setq file (pop files))
(setq rtn (apply 'org-agenda-get-day-entries file date args))
(setq results (append results rtn)))
! (if results
! (concat (org-finalize-agenda-entries results) "\n"))))
(defun org-agenda-get-day-entries (file date &rest args)
"Does the work for `org-diary' and `org-agenda'.
***************
*** 6270,6276 ****
(progn
(if (and org-table-copy-increment
(string-match "^[0-9]+$" txt))
! (setq txt (format "%d" (+ (string-to-int txt) 1))))
(insert txt)
(org-table-maybe-recalculate-line)
(org-table-align))
--- 6309,6315 ----
(progn
(if (and org-table-copy-increment
(string-match "^[0-9]+$" txt))
! (setq txt (format "%d" (+ (string-to-number txt) 1))))
(insert txt)
(org-table-maybe-recalculate-line)
(org-table-align))
***************
*** 6997,7005 ****
(t n))))
(defun org-table-get-vertical-vector (desc &optional tbeg col)
! "Get a calc vector from a column, according to descriptor DESC.
! Optional arguments TBEG and COL can give the beginning of the table
! and the current column, to avoid unnecessary parsing."
(save-excursion
(or tbeg (setq tbeg (org-table-begin)))
(or col (setq col (org-table-current-column)))
--- 7036,7044 ----
(t n))))
(defun org-table-get-vertical-vector (desc &optional tbeg col)
! "Get a calc vector from a column, accorting to desctiptor DESC.
! Optional arguments TBEG and COL can give the beginning of the table and
! the current column, to avoid unnecessary parsing."
(save-excursion
(or tbeg (setq tbeg (org-table-begin)))
(or col (setq col (org-table-current-column)))
***************
*** 7047,7053 ****
l ",") "]"))
((string-match "\\([0-9]+\\)" desc)
(beginning-of-line 1)
! (when (re-search-backward org-table-dataline-regexp tbeg t
(string-to-number (match-string 0 desc)))
(org-table-goto-column col)
(org-trim (org-table-get-field))))))))
--- 7086,7092 ----
l ",") "]"))
((string-match "\\([0-9]+\\)" desc)
(beginning-of-line 1)
! (when (re-search-backward org-table-dataline-regexp tbeg t
(string-to-number (match-string 0 desc)))
(org-table-goto-column col)
(org-trim (org-table-get-field))))))))
***************
*** 7143,7149 ****
ACTION can be `remove', `insert', `swap'. For `swap', two column numbers are
expected, for the other action only a single column number is needed."
(let ((list (org-table-get-stored-formulas))
! (nmax (length (org-split-string
(buffer-substring (point-at-bol) (point-at-eol))
"|")))
col col1 col2 scol si sc1 sc2)
--- 7182,7188 ----
ACTION can be `remove', `insert', `swap'. For `swap', two column numbers are
expected, for the other action only a single column number is needed."
(let ((list (org-table-get-stored-formulas))
! (nmax (length (org-split-string
(buffer-substring (point-at-bol) (point-at-eol))
"|")))
col col1 col2 scol si sc1 sc2)
***************
*** 7222,7228 ****
fields (org-split-string (match-string 2) " *| *"))
(save-excursion
(beginning-of-line (if (equal c "_") 2 0))
! (setq line (org-current-line) col 1)
(and (looking-at "^[ \t]*|[^|]*\\(|.*\\)")
(setq fields1 (org-split-string (match-string 1) " *| *"))))
(while (and fields1 (setq field (pop fields)))
--- 7261,7267 ----
fields (org-split-string (match-string 2) " *| *"))
(save-excursion
(beginning-of-line (if (equal c "_") 2 0))
! (setq line (org-current-line) col 1)
(and (looking-at "^[ \t]*|[^|]*\\(|.*\\)")
(setq fields1 (org-split-string (match-string 1) " *| *"))))
(while (and fields1 (setq field (pop fields)))
***************
*** 7440,7446 ****
;; Insert the references to fields in same row
(while (string-match "\\$\\([0-9]+\\)?" form)
(setq n (if (match-beginning 1)
! (string-to-int (match-string 1 form))
n0)
x (nth (1- n) fields))
(unless x (error "Invalid field specifier \"%s\""
--- 7479,7485 ----
;; Insert the references to fields in same row
(while (string-match "\\$\\([0-9]+\\)?" form)
(setq n (if (match-beginning 1)
! (string-to-number (match-string 1 form))
n0)
x (nth (1- n) fields))
(unless x (error "Invalid field specifier \"%s\""
***************
*** 7539,7545 ****
(setq eql eqlnum)
(while (setq entry (pop eql))
(goto-line org-last-recalc-line)
! (org-table-goto-column (string-to-int (car entry)) nil 'force)
(org-table-eval-formula nil (cdr entry) 'noalign 'nocst 'nostore))))
(goto-line thisline)
(org-table-goto-column thiscol)
--- 7578,7584 ----
(setq eql eqlnum)
(while (setq entry (pop eql))
(goto-line org-last-recalc-line)
! (org-table-goto-column (string-to-number (car entry)) nil 'force)
(org-table-eval-formula nil (cdr entry) 'noalign 'nocst 'nostore))))
(goto-line thisline)
(org-table-goto-column thiscol)
***************
*** 7622,7628 ****
(set (make-local-variable 'org-pos) pos)
(set (make-local-variable 'org-window-configuration) wc)
(use-local-map org-edit-formulas-map)
! (setq s "# Edit formulas and finish with `C-c C-c'.
# Use `C-u C-c C-c' to also appy them immediately to the entire table.
# Use `C-c ?' to get information about $name at point.
# To cancel editing, press `C-c C-q'.\n")
--- 7661,7667 ----
(set (make-local-variable 'org-pos) pos)
(set (make-local-variable 'org-window-configuration) wc)
(use-local-map org-edit-formulas-map)
! (setq s "# Edit formulas and finish with `C-c C-c'.
# Use `C-u C-c C-c' to also appy them immediately to the entire table.
# Use `C-c ?' to get information about $name at point.
# To cancel editing, press `C-c C-q'.\n")
***************
*** 7660,7666 ****
(switch-to-buffer-other-window (marker-buffer pos))
(goto-char pos)
(goto-char (org-table-begin))
! (if (re-search-forward (concat "^[ \t]*| *! *.*?| *\\(" var "\\) *|")
(org-table-end) t)
(progn
(goto-char (match-beginning 1))
--- 7699,7705 ----
(switch-to-buffer-other-window (marker-buffer pos))
(goto-char pos)
(goto-char (org-table-begin))
! (if (re-search-forward (concat "^[ \t]*| *! *.*?| *\\(" var "\\) *|")
(org-table-end) t)
(progn
(goto-char (match-beginning 1))
***************
*** 7715,7721 ****
(org-table-store-formulas eql)
(move-marker pos nil)
(kill-buffer "*Edit Formulas*")
! (if arg
(org-table-recalculate 'all)
(message "New formulas installed - press C-u C-c C-c to apply."))))
--- 7754,7760 ----
(org-table-store-formulas eql)
(move-marker pos nil)
(kill-buffer "*Edit Formulas*")
! (if arg
(org-table-recalculate 'all)
(message "New formulas installed - press C-u C-c C-c to apply."))))
***************
*** 7801,7807 ****
(and c (setq minor-mode-map-alist
(cons c (delq c minor-mode-map-alist)))))
(set (make-local-variable (quote org-table-may-need-update)) t)
! (make-local-hook (quote before-change-functions))
(add-hook 'before-change-functions 'org-before-change-function
nil 'local)
(set (make-local-variable 'org-old-auto-fill-inhibit-regexp)
--- 7840,7846 ----
(and c (setq minor-mode-map-alist
(cons c (delq c minor-mode-map-alist)))))
(set (make-local-variable (quote org-table-may-need-update)) t)
! (make-local-hook (quote before-change-functions)) ; needed for XEmacs
(add-hook 'before-change-functions 'org-before-change-function
nil 'local)
(set (make-local-variable 'org-old-auto-fill-inhibit-regexp)
***************
*** 8620,8633 ****
(insert s)))
(defun org-toggle-fixed-width-section (arg)
! "Toggle the fixed-width indicator at the beginning of lines in the region.
! If there is no active region, only acts on the current line.
! If the first non-white character in the first line of the region is a
! vertical bar \"|\", then the command removes the bar from all lines in
! the region. If the first character is not a bar, the command adds a
! bar to all lines, in the column given by the beginning of the region.
!
! If there is a numerical prefix ARG, create ARG new lines starting with \"|\"."
(interactive "P")
(let* ((cc 0)
(regionp (org-region-active-p))
--- 8659,8671 ----
(insert s)))
(defun org-toggle-fixed-width-section (arg)
! "Toggle the fixed-width export.
! If there is no active region, the QUOTE keyword at the current headline is
! inserted or removed. When present, it causes the text between this headline
! and the next to be exported as fixed-width text, and unmodified.
! If there is an active region, this command adds or removes a colon as the
! first character of this line. If the first character of a line is a colon,
! this line is also exported in fixed-width font."
(interactive "P")
(let* ((cc 0)
(regionp (org-region-active-p))
***************
*** 8636,8658 ****
(nlines (or arg (if (and beg end) (count-lines beg end) 1)))
(re "[ \t]*\\(:\\)")
off)
! (save-excursion
! (goto-char beg)
! (setq cc (current-column))
! (beginning-of-line 1)
! (setq off (looking-at re))
! (while (> nlines 0)
! (setq nlines (1- nlines))
! (beginning-of-line 1)
! (cond
! (arg
! (move-to-column cc t)
! (insert ":\n")
! (forward-line -1))
! ((and off (looking-at re))
! (replace-match "" t t nil 1))
! ((not off) (move-to-column cc t) (insert ":")))
! (forward-line 1)))))
(defun org-export-as-html-and-open (arg)
"Export the outline as HTML and immediately open it with a browser.
--- 8674,8706 ----
(nlines (or arg (if (and beg end) (count-lines beg end) 1)))
(re "[ \t]*\\(:\\)")
off)
! (if regionp
! (save-excursion
! (goto-char beg)
! (setq cc (current-column))
! (beginning-of-line 1)
! (setq off (looking-at re))
! (while (> nlines 0)
! (setq nlines (1- nlines))
! (beginning-of-line 1)
! (cond
! (arg
! (move-to-column cc t)
! (insert ":\n")
! (forward-line -1))
! ((and off (looking-at re))
! (replace-match "" t t nil 1))
! ((not off) (move-to-column cc t) (insert ":")))
! (forward-line 1)))
! (save-excursion
! (org-back-to-heading)
! (if (looking-at (concat outline-regexp
! "\\( +\\<" org-quote-string "\\>\\)"))
! (replace-match "" t t nil 1)
! (if (looking-at outline-regexp)
! (progn
! (goto-char (match-end 0))
! (insert " " org-quote-string))))))))
(defun org-export-as-html-and-open (arg)
"Export the outline as HTML and immediately open it with a browser.
***************
*** 8681,8708 ****
(setq-default org-deadline-line-regexp org-deadline-line-regexp)
(setq-default org-done-string org-done-string)
(let* ((region-p (org-region-active-p))
! (region
! (buffer-substring
! (if region-p (region-beginning) (point-min))
! (if region-p (region-end) (point-max))))
! (all_lines
! (org-skip-comments (org-split-string region "[\r\n]")))
! (lines (org-export-find-first-heading-line all_lines))
! (level 0) (line "") (origline "") txt todo
! (umax nil)
! (filename (concat (file-name-sans-extension (buffer-file-name))
! ".html"))
! (buffer (find-file-noselect filename))
! (levels-open (make-vector org-level-max nil))
! (date (format-time-string "%Y/%m/%d" (current-time)))
(time (format-time-string "%X" (current-time)))
! (author user-full-name)
(title (buffer-name))
! (options nil)
(email user-mail-address)
! (language org-export-default-language)
(text nil)
! (lang-words nil)
(head-count 0) cnt
(start 0)
table-open type
--- 8729,8758 ----
(setq-default org-deadline-line-regexp org-deadline-line-regexp)
(setq-default org-done-string org-done-string)
(let* ((region-p (org-region-active-p))
! (region
! (buffer-substring
! (if region-p (region-beginning) (point-min))
! (if region-p (region-end) (point-max))))
! (all_lines
! (org-skip-comments (org-split-string region "[\r\n]")))
! (lines (org-export-find-first-heading-line all_lines))
! (level 0) (line "") (origline "") txt todo
! (umax nil)
! (filename (concat (file-name-sans-extension (buffer-file-name))
! ".html"))
! (buffer (find-file-noselect filename))
! (levels-open (make-vector org-level-max nil))
! (date (format-time-string "%Y/%m/%d" (current-time)))
(time (format-time-string "%X" (current-time)))
! (author user-full-name)
(title (buffer-name))
! (options nil)
! (quote-re (concat "^\\*+[ \t]*" org-quote-string "\\>"))
! (inquote nil)
(email user-mail-address)
! (language org-export-default-language)
(text nil)
! (lang-words nil)
(head-count 0) cnt
(start 0)
table-open type
***************
*** 8716,8737 ****
;; Search for the export key lines
(org-parse-key-lines)
(setq lang-words (or (assoc language org-export-language-setup)
! (assoc "en" org-export-language-setup)))
;; Switch to the output buffer
(if (or hidden (not org-export-html-show-new-buffer))
! (set-buffer buffer)
(switch-to-buffer-other-window buffer))
(erase-buffer)
(fundamental-mode)
(let ((case-fold-search nil))
(if options (org-parse-export-options options))
(setq umax (if arg (prefix-numeric-value arg)
! org-export-headline-levels))
;; File header
(insert (format
! "<html lang=\"%s\"><head>
<title>%s</title>
<meta http-equiv=\"Content-Type\" content=\"text/html\">
<meta name=generator content=\"Org-mode\">
--- 8766,8787 ----
;; Search for the export key lines
(org-parse-key-lines)
(setq lang-words (or (assoc language org-export-language-setup)
! (assoc "en" org-export-language-setup)))
;; Switch to the output buffer
(if (or hidden (not org-export-html-show-new-buffer))
! (set-buffer buffer)
(switch-to-buffer-other-window buffer))
(erase-buffer)
(fundamental-mode)
(let ((case-fold-search nil))
(if options (org-parse-export-options options))
(setq umax (if arg (prefix-numeric-value arg)
! org-export-headline-levels))
;; File header
(insert (format
! "<html lang=\"%s\"><head>
<title>%s</title>
<meta http-equiv=\"Content-Type\" content=\"text/html\">
<meta name=generator content=\"Org-mode\">
***************
*** 8739,8753 ****
<meta name=author content=\"%s\">
</head><body>
"
! language (org-html-expand title) date time author))
(if title (insert (concat "<H1 align=\"center\">"
(org-html-expand title) "</H1>\n")))
(if author (insert (concat (nth 1 lang-words) ": " author "\n")))
(if email (insert (concat "<a href=\"mailto:" email "\"><"
! email "></a>\n")))
(if (or author email) (insert "<br>\n"))
(if (and date time) (insert (concat (nth 2 lang-words) ": "
! date " " time "<br>\n")))
(if text (insert (concat "<p>\n" (org-html-expand text))))
(if org-export-with-toc
(progn
--- 8789,8803 ----
<meta name=author content=\"%s\">
</head><body>
"
! language (org-html-expand title) date time author))
(if title (insert (concat "<H1 align=\"center\">"
(org-html-expand title) "</H1>\n")))
(if author (insert (concat (nth 1 lang-words) ": " author "\n")))
(if email (insert (concat "<a href=\"mailto:" email "\"><"
! email "></a>\n")))
(if (or author email) (insert "<br>\n"))
(if (and date time) (insert (concat (nth 2 lang-words) ": "
! date " " time "<br>\n")))
(if text (insert (concat "<p>\n" (org-html-expand text))))
(if org-export-with-toc
(progn
***************
*** 8802,8925 ****
))
(setq head-count 0)
(org-init-section-numbers)
(while (setq line (pop lines) origline line)
! ;; Protect the links
! (setq start 0)
! (while (string-match org-link-maybe-angles-regexp line start)
! (setq start (match-end 0))
! (setq line (replace-match
! (concat "\000" (match-string 1 line) "\000")
! t t line)))
!
! ;; replace "<" and ">" by "<" and ">"
! ;; handle @<..> HTML tags (replace "@>..<" by "<..>")
! (setq line (org-html-expand line))
!
! ;; Verbatim lines
! (if (and org-export-with-fixed-width
! (string-match "^[ \t]*:\\(.*\\)" line))
(progn
! (let ((l (match-string 1 line)))
! (while (string-match " " l)
! (setq l (replace-match " " t t l)))
! (insert "\n<span style='font-family:Courier'>"
! l "</span>"
! (if (and lines
! (not (string-match "^[ \t]+\\(:.*\\)"
! (car lines))))
! "<br>\n" "\n"))))
(setq start 0)
! (while (string-match org-protected-link-regexp line start)
! (setq start (- (match-end 0) 2))
! (setq type (match-string 1 line))
! (cond
! ((member type '("http" "https" "ftp" "mailto" "news"))
! ;; standard URL
! (setq line (replace-match
! ; "<a href=\"\\1:\\2\"><\\1:\\2></a>"
! "<a href=\"\\1:\\2\">\\1:\\2</a>"
! nil nil line)))
! ((string= type "file")
! ;; FILE link
! (let* ((filename (match-string 2 line))
! (abs-p (file-name-absolute-p filename))
! (thefile (if abs-p (expand-file-name filename) filename))
! (thefile (save-match-data
! (if (string-match ":[0-9]+$" thefile)
! (replace-match "" t t thefile)
! thefile)))
! (file-is-image-p
! (save-match-data
! (string-match (org-image-file-name-regexp) thefile))))
(setq line (replace-match
! (if (and org-export-html-inline-images
! file-is-image-p)
! (concat "<img src=\"" thefile "\"/>")
! (concat "<a href=\"" thefile "\">\\1:\\2</a>"))
! nil nil line))))
!
! ((member type '("bbdb" "vm" "wl" "rmail" "gnus" "shell"))
! (setq line (replace-match
! "<i><\\1:\\2></i>" nil nil line)))))
!
! ;; TODO items
! (if (and (string-match org-todo-line-regexp line)
! (match-beginning 2))
! (if (equal (match-string 2 line) org-done-string)
(setq line (replace-match
! "<span style='color:green'>\\2</span>"
! nil nil line 2))
! (setq line (replace-match "<span style='color:red'>\\2</span>"
! nil nil line 2))))
! ;; DEADLINES
! (if (string-match org-deadline-line-regexp line)
! (progn
! (if (save-match-data
! (string-match "<a href"
! (substring line 0 (match-beginning 0))))
! nil ; Don't do the replacement - it is inside a link
! (setq line (replace-match "<span style='color:red'>\\&</span>"
! nil nil line 1)))))
! (cond
! ((string-match "^\\(\\*+\\)[ \t]*\\(.*\\)" line)
! ;; This is a headline
! (setq level (- (match-end 1) (match-beginning 1))
! txt (match-string 2 line))
! (if (<= level umax) (setq head-count (+ head-count 1)))
! (org-html-level-start level txt umax
! (and org-export-with-toc (<= level umax))
! head-count))
!
! ((and org-export-with-tables
! (string-match "^\\([ \t]*\\)\\(|\\|\\+-+\\+\\)" line))
! (if (not table-open)
! ;; New table starts
! (setq table-open t table-buffer nil table-orig-buffer nil))
! ;; Accumulate lines
! (setq table-buffer (cons line table-buffer)
! table-orig-buffer (cons origline table-orig-buffer))
! (when (or (not lines)
! (not (string-match "^\\([ \t]*\\)\\(|\\|\\+-+\\+\\)"
! (car lines))))
! (setq table-open nil
! table-buffer (nreverse table-buffer)
! table-orig-buffer (nreverse table-orig-buffer))
! (insert (org-format-table-html table-buffer table-orig-buffer))))
! (t
! ;; Normal lines
! ;; Lines starting with "-", and empty lines make new paragraph.
! ;; FIXME: Should we add + and *?
! (if (string-match "^ *-\\|^[ \t]*$" line) (insert "<p>"))
! (insert line (if org-export-preserve-breaks "<br>\n" "\n"))))
! ))
! (if org-export-html-with-timestamp
! (insert org-export-html-html-helper-timestamp))
! (insert "</body>\n</html>\n")
! (normal-mode)
! (save-buffer)
! (goto-char (point-min)))))
(defun org-format-table-html (lines olines)
"Find out which HTML converter to use and return the HTML code."
--- 8852,8992 ----
))
(setq head-count 0)
(org-init-section-numbers)
+
(while (setq line (pop lines) origline line)
! ;; end of quote?
! (when (and inquote (string-match "^\\*+" line))
! (insert "</pre>\n")
! (setq inquote nil))
! ;; inquote
! (if inquote
(progn
! (insert line "\n")
! (setq line (org-html-expand line))) ;;????? FIXME: not needed?
!
! ;; Protect the links
(setq start 0)
! (while (string-match org-link-maybe-angles-regexp line start)
! (setq start (match-end 0))
! (setq line (replace-match
! (concat "\000" (match-string 1 line) "\000")
! t t line)))
!
! ;; replace "<" and ">" by "<" and ">"
! ;; handle @<..> HTML tags (replace "@>..<" by "<..>")
! (setq line (org-html-expand line))
!
! ;; Verbatim lines
! (if (and org-export-with-fixed-width
! (string-match "^[ \t]*:\\(.*\\)" line))
! (progn
! (let ((l (match-string 1 line)))
! (while (string-match " " l)
! (setq l (replace-match " " t t l)))
! (insert "\n<span style='font-family:Courier'>"
! l "</span>"
! (if (and lines
! (not (string-match "^[ \t]+\\(:.*\\)"
! (car lines))))
! "<br>\n" "\n"))))
!
! (setq start 0)
! (while (string-match org-protected-link-regexp line start)
! (setq start (- (match-end 0) 2))
! (setq type (match-string 1 line))
! (cond
! ((member type '("http" "https" "ftp" "mailto" "news"))
! ;; standard URL
(setq line (replace-match
! ; "<a
href=\"\\1:\\2\"><\\1:\\2></a>"
! "<a href=\"\\1:\\2\">\\1:\\2</a>"
! nil nil line)))
! ((string= type "file")
! ;; FILE link
! (let* ((filename (match-string 2 line))
! (abs-p (file-name-absolute-p filename))
! (thefile (if abs-p (expand-file-name filename) filename))
! (thefile (save-match-data
! (if (string-match ":[0-9]+$" thefile)
! (replace-match "" t t thefile)
! thefile)))
! (file-is-image-p
! (save-match-data
! (string-match (org-image-file-name-regexp) thefile))))
(setq line (replace-match
! (if (and org-export-html-inline-images
! file-is-image-p)
! (concat "<img src=\"" thefile "\"/>")
! (concat "<a href=\"" thefile "\">\\1:\\2</a>"))
! nil nil line))))
! ((member type '("bbdb" "vm" "wl" "rmail" "gnus" "shell"))
! (setq line (replace-match
! "<i><\\1:\\2></i>" nil nil line)))))
! ;; TODO items
! (if (and (string-match org-todo-line-regexp line)
! (match-beginning 2))
! (if (equal (match-string 2 line) org-done-string)
! (setq line (replace-match
! "<span style='color:green'>\\2</span>"
! nil nil line 2))
! (setq line (replace-match "<span style='color:red'>\\2</span>"
! nil nil line 2))))
!
! ;; DEADLINES
! (if (string-match org-deadline-line-regexp line)
! (progn
! (if (save-match-data
! (string-match "<a href"
! (substring line 0 (match-beginning 0))))
! nil ; Don't do the replacement - it is inside a link
! (setq line (replace-match "<span
style='color:red'>\\&</span>"
! nil nil line 1)))))
!
!
! (cond
! ((string-match "^\\(\\*+\\)[ \t]*\\(.*\\)" line)
! ;; This is a headline
! (setq level (- (match-end 1) (match-beginning 1))
! txt (match-string 2 line))
! (if (<= level umax) (setq head-count (+ head-count 1)))
! (org-html-level-start level txt umax
! (and org-export-with-toc (<= level umax))
! head-count)
! ;; QUOTES
! (when (string-match quote-re line)
! (insert "<pre>")
! (setq inquote t)))
!
! ((and org-export-with-tables
! (string-match "^\\([ \t]*\\)\\(|\\|\\+-+\\+\\)" line))
! (if (not table-open)
! ;; New table starts
! (setq table-open t table-buffer nil table-orig-buffer nil))
! ;; Accumulate lines
! (setq table-buffer (cons line table-buffer)
! table-orig-buffer (cons origline table-orig-buffer))
! (when (or (not lines)
! (not (string-match "^\\([ \t]*\\)\\(|\\|\\+-+\\+\\)"
! (car lines))))
! (setq table-open nil
! table-buffer (nreverse table-buffer)
! table-orig-buffer (nreverse table-orig-buffer))
! (insert (org-format-table-html table-buffer
table-orig-buffer))))
! (t
! ;; Normal lines
! ;; Lines starting with "-", and empty lines make new paragraph.
! ;; FIXME: Should we add + and *?
! (if (string-match "^ *-\\|^[ \t]*$" line) (insert "<p>"))
! (insert line (if org-export-preserve-breaks "<br>\n" "\n"))))
! )))
! (if org-export-html-with-timestamp
! (insert org-export-html-html-helper-timestamp))
! (insert "</body>\n</html>\n")
! (normal-mode)
! (save-buffer)
! (goto-char (point-min)))))
(defun org-format-table-html (lines olines)
"Find out which HTML converter to use and return the HTML code."
***************
*** 9229,9235 ****
(if (string-match "\\`[A-Z]\\'" number-string)
(aset org-section-numbers i
(- (string-to-char number-string) ?A -1))
! (aset org-section-numbers i (string-to-int number-string)))
(pop numbers))
(setq i (1- i)))))
--- 9296,9302 ----
(if (string-match "\\`[A-Z]\\'" number-string)
(aset org-section-numbers i
(- (string-to-char number-string) ?A -1))
! (aset org-section-numbers i (string-to-number number-string)))
(pop numbers))
(setq i (1- i)))))
***************
*** 9998,10011 ****
"\\):[ \t]*"
(if org-noutline-p "\\(.+\\)" "\\([^\n\r]+\\)")))
! ;; Advise the bookmark-jump function to make jump position visible
! ;; Wrapped into eval-after-load to avoid loading advice unnecessarily
(eval-after-load "bookmark"
! '(defadvice bookmark-jump (after org-make-visible activate)
! "Make the position visible."
! (and (eq major-mode 'org-mode)
! (org-invisible-p)
! (org-show-hierarchy-above))))
;;; Finish up
--- 10065,10087 ----
"\\):[ \t]*"
(if org-noutline-p "\\(.+\\)" "\\([^\n\r]+\\)")))
! ;; Make `bookmark-jump' show the jump location if it was hidden.
(eval-after-load "bookmark"
! '(if (boundp 'bookmark-after-jump-hook)
! ;; We can use the hook
! (add-hook 'bookmark-after-jump-hook 'org-bookmark-jump-unhide)
! ;; Hook not available, use advice
! (defadvice bookmark-jump (after org-make-visible activate)
! "Make the position visible."
! (org-bookmark-jump-unhide))))
!
! (defun org-bookmark-jump-unhide ()
! "Unhide the current position, to show the bookmark location."
! (and (eq major-mode 'org-mode)
! (or (org-invisible-p)
! (save-excursion (goto-char (max (point-min) (1- (point))))
! (org-invisible-p)))
! (org-show-hierarchy-above)))
;;; Finish up