Browse Source

Merge branch 'holidays-fixes'

Bastien Guerry 13 years ago
parent
commit
3ca3b1e693
4 changed files with 56 additions and 65 deletions
  1. 2 2
      lisp/org-clock.el
  2. 21 32
      lisp/org-exp.el
  3. 5 4
      lisp/org-html.el
  4. 28 27
      lisp/org.el

+ 2 - 2
lisp/org-clock.el

@@ -1798,8 +1798,8 @@ will be easy to remove."
     (org-move-to-column c)
     (org-move-to-column c)
     (unless (eolp) (skip-chars-backward "^ \t"))
     (unless (eolp) (skip-chars-backward "^ \t"))
     (skip-chars-backward " \t")
     (skip-chars-backward " \t")
-    (setq ov (make-overlay (1- (point)) (point-at-eol))
-	  tx (concat (buffer-substring (1- (point)) (point))
+    (setq ov (make-overlay (point-at-bol) (point-at-eol))
+    	  tx (concat (buffer-substring (point-at-bol) (point))
 		     (make-string (+ off (max 0 (- c (current-column)))) ?.)
 		     (make-string (+ off (max 0 (- c (current-column)))) ?.)
 		     (org-add-props (if org-time-clocksum-use-fractional
 		     (org-add-props (if org-time-clocksum-use-fractional
 					(format fmt
 					(format fmt

+ 21 - 32
lisp/org-exp.el

@@ -1,4 +1,4 @@
-;;; org-exp.el --- ASCII, HTML, XOXO and iCalendar export for Org-mode
+;;; org-exp.el --- Export internals for Org-mode
 
 
 ;; Copyright (C) 2004-2012 Free Software Foundation, Inc.
 ;; Copyright (C) 2004-2012 Free Software Foundation, Inc.
 
 
@@ -1318,11 +1318,8 @@ on this string to produce the exported version."
       ;; Remove or replace comments
       ;; Remove or replace comments
       (org-export-handle-comments (plist-get parameters :comments))
       (org-export-handle-comments (plist-get parameters :comments))
 
 
-      ;; Remove #+TBLFM and #+TBLNAME lines
-      (org-export-handle-table-metalines)
-
-      ;; Remove #+results and #+name lines
-      (org-export-res/src-name-cleanup)
+      ;; Remove #+TBLFM #+TBLNAME #+NAME #+RESULTS lines
+      (org-export-handle-metalines)
 
 
       ;; Run the final hook
       ;; Run the final hook
       (run-hooks 'org-export-preprocess-final-hook)
       (run-hooks 'org-export-preprocess-final-hook)
@@ -2009,9 +2006,11 @@ When it is nil, all comments will be removed."
 	  (replace-match "")
 	  (replace-match "")
 	  (goto-char (max (point-min) (1- pos))))))))
 	  (goto-char (max (point-min) (1- pos))))))))
 
 
-(defun org-export-handle-table-metalines ()
-  "Remove table specific metalines #+TBLNAME: and #+TBLFM:."
-  (let ((re "^[ \t]*#\\+tbl\\(name\\|fm\\):\\(.*\n?\\)")
+(defun org-export-handle-metalines ()
+  "Remove tables and source blocks metalines.
+This function should only be called after all block processing
+has taken place."
+  (let ((re "^[ \t]*#\\+\\(tbl\\(?:name\\|fm\\)\\|results\\(?:\\[[a-z0-9]+\\]\\)?\\|name\\):\\(.*\n?\\)")
 	(case-fold-search t)
 	(case-fold-search t)
 	pos)
 	pos)
     (goto-char (point-min))
     (goto-char (point-min))
@@ -2024,18 +2023,6 @@ When it is nil, all comments will be removed."
 	(replace-match "")
 	(replace-match "")
 	(goto-char (max (point-min) (1- pos)))))))
 	(goto-char (max (point-min) (1- pos)))))))
 
 
-(defun org-export-res/src-name-cleanup ()
-  "Clean up #+results and #+name lines for export.
-This function should only be called after all block processing
-has taken place."
-  (interactive)
-  (save-excursion
-    (goto-char (point-min))
-    (let ((case-fold-search t))
-      (while (org-re-search-forward-unprotected
-	      "#\\+\\(name\\|results\\(\\[[a-z0-9]+\\]\\)?\\):" nil t)
-	(delete-region (match-beginning 0) (progn (forward-line) (point)))))))
-
 (defun org-export-mark-radio-links ()
 (defun org-export-mark-radio-links ()
   "Find all matches for radio targets and turn them into internal links."
   "Find all matches for radio targets and turn them into internal links."
   (let ((re-radio (and org-target-link-regexp
   (let ((re-radio (and org-target-link-regexp
@@ -3313,18 +3300,20 @@ If yes remove the column and the special lines."
 
 
 (defun org-export-cleanup-toc-line (s)
 (defun org-export-cleanup-toc-line (s)
   "Remove tags and timestamps from lines going into the toc."
   "Remove tags and timestamps from lines going into the toc."
-  (when (memq org-export-with-tags '(not-in-toc nil))
-    (if (string-match (org-re " +:[[:alnum:]_@#%:]+: *$") s)
+  (if (not s)
+      "" ; Return a string when argument is nil
+    (when (memq org-export-with-tags '(not-in-toc nil))
+      (if (string-match (org-re " +:[[:alnum:]_@#%:]+: *$") s)
+	  (setq s (replace-match "" t t s))))
+    (when org-export-remove-timestamps-from-toc
+      (while (string-match org-maybe-keyword-time-regexp s)
 	(setq s (replace-match "" t t s))))
 	(setq s (replace-match "" t t s))))
-  (when org-export-remove-timestamps-from-toc
-    (while (string-match org-maybe-keyword-time-regexp s)
-      (setq s (replace-match "" t t s))))
-  (while (string-match org-bracket-link-regexp s)
-    (setq s (replace-match (match-string (if (match-end 3) 3 1) s)
-			   t t s)))
-  (while (string-match "\\[\\([0-9]\\|fn:[^]]*\\)\\]" s)
-    (setq s (replace-match "" t t s)))
-  s)
+    (while (string-match org-bracket-link-regexp s)
+      (setq s (replace-match (match-string (if (match-end 3) 3 1) s)
+			     t t s)))
+    (while (string-match "\\[\\([0-9]\\|fn:[^]]*\\)\\]" s)
+      (setq s (replace-match "" t t s)))
+    s))
 
 
 
 
 (defun org-get-text-property-any (pos prop &optional object)
 (defun org-get-text-property-any (pos prop &optional object)

+ 5 - 4
lisp/org-html.el

@@ -1704,7 +1704,7 @@ PUB-DIR is set, use this as the publishing directory."
 	    ;; This is a headline
 	    ;; This is a headline
 	    (setq level (org-tr-level (- (match-end 1) (match-beginning 1)
 	    (setq level (org-tr-level (- (match-end 1) (match-beginning 1)
 					 level-offset))
 					 level-offset))
-		  txt (match-string 2 org-line))
+		  txt (or (match-string 2 org-line) ""))
 	    (if (string-match quote-re0 txt)
 	    (if (string-match quote-re0 txt)
 		(setq txt (replace-match "" t t txt)))
 		(setq txt (replace-match "" t t txt)))
 	    (if (<= level (max umax umax-toc))
 	    (if (<= level (max umax umax-toc))
@@ -2141,9 +2141,10 @@ for formatting.  This is required for the DocBook exporter."
       (if colgropen (setq html (cons (car html)
       (if colgropen (setq html (cons (car html)
 				     (cons "</colgroup>" (cdr html)))))
 				     (cons "</colgroup>" (cdr html)))))
       ;; Since the output of HTML table formatter can also be used in
       ;; Since the output of HTML table formatter can also be used in
-      ;; DocBook document, we want to always include the caption to make
-      ;; DocBook XML file valid.
-      (push (format "<caption>%s</caption>" (or caption "")) html)
+      ;; DocBook document, include empty captions for the DocBook
+      ;; export only so that it produces valid XML.
+      (when (or caption (eq org-export-current-backend 'docbook))
+	(push (format "<caption>%s</caption>" (or caption "")) html))
       (when label
       (when label
 	(setq html-table-tag (org-export-splice-attributes html-table-tag (format "id=\"%s\"" (org-solidify-link-text label)))))
 	(setq html-table-tag (org-export-splice-attributes html-table-tag (format "id=\"%s\"" (org-solidify-link-text label)))))
       (push html-table-tag html))
       (push html-table-tag html))

+ 28 - 27
lisp/org.el

@@ -5579,7 +5579,8 @@ by a #."
 	     (if (string-equal dc1 "+title:")
 	     (if (string-equal dc1 "+title:")
 		 '(font-lock-fontified t face org-document-title)
 		 '(font-lock-fontified t face org-document-title)
 	       '(font-lock-fontified t face org-document-info))))
 	       '(font-lock-fontified t face org-document-info))))
-	   ((or (member dc1 '("+begin:" "+end:" "+caption:" "+label:"
+	   ((or (equal dc1 "+results")
+		(member dc1 '("+begin:" "+end:" "+caption:" "+label:"
 			      "+orgtbl:" "+tblfm:" "+tblname:" "+results:"
 			      "+orgtbl:" "+tblfm:" "+tblname:" "+results:"
 			      "+call:" "+header:" "+headers:" "+name:"))
 			      "+call:" "+header:" "+headers:" "+name:"))
 		(and (match-end 4) (equal dc3 "+attr")))
 		(and (match-end 4) (equal dc3 "+attr")))
@@ -8697,7 +8698,8 @@ call CMD."
 
 
 (defun org-refresh-category-properties ()
 (defun org-refresh-category-properties ()
   "Refresh category text properties in the buffer."
   "Refresh category text properties in the buffer."
-  (let ((inhibit-read-only t)
+  (let ((case-fold-search t)
+	(inhibit-read-only t)
 	(def-cat (cond
 	(def-cat (cond
 		  ((null org-category)
 		  ((null org-category)
 		   (if buffer-file-name
 		   (if buffer-file-name
@@ -11157,20 +11159,20 @@ this is used for the GOTO interface."
 (defun org-find-dblock (name)
 (defun org-find-dblock (name)
   "Find the first dynamic block with name NAME in the buffer.
   "Find the first dynamic block with name NAME in the buffer.
 If not found, stay at current position and return nil."
 If not found, stay at current position and return nil."
-  (let (pos)
+  (let ((case-fold-search t) pos)
     (save-excursion
     (save-excursion
       (goto-char (point-min))
       (goto-char (point-min))
-      (setq pos (and (re-search-forward (concat "^[ \t]*#\\+BEGIN:[ \t]+" name "\\>")
-					nil t)
+      (setq pos (and (re-search-forward
+		      (concat "^[ \t]*#\\+\\(?:BEGIN\\|begin\\):[ \t]+" name "\\>") nil t)
 		     (match-beginning 0))))
 		     (match-beginning 0))))
     (if pos (goto-char pos))
     (if pos (goto-char pos))
     pos))
     pos))
 
 
 (defconst org-dblock-start-re
 (defconst org-dblock-start-re
-  "^[ \t]*#\\+BEGIN:[ \t]+\\(\\S-+\\)\\([ \t]+\\(.*\\)\\)?"
+  "^[ \t]*#\\+\\(?:BEGIN\\|begin\\):[ \t]+\\(\\S-+\\)\\([ \t]+\\(.*\\)\\)?"
   "Matches the start line of a dynamic block, with parameters.")
   "Matches the start line of a dynamic block, with parameters.")
 
 
-(defconst org-dblock-end-re "^[ \t]*#\\+END\\([: \t\r\n]\\|$\\)"
+(defconst org-dblock-end-re "^[ \t]*#\\+\\(?:END\\|end\\)\\([: \t\r\n]\\|$\\)"
   "Matches the end of a dynamic block.")
   "Matches the end of a dynamic block.")
 
 
 (defun org-create-dblock (plist)
 (defun org-create-dblock (plist)
@@ -11322,7 +11324,7 @@ This function can be used in a hook."
   '("TITLE:" "AUTHOR:" "EMAIL:" "DATE:"
   '("TITLE:" "AUTHOR:" "EMAIL:" "DATE:"
     "DESCRIPTION:" "KEYWORDS:" "LANGUAGE:" "OPTIONS:"
     "DESCRIPTION:" "KEYWORDS:" "LANGUAGE:" "OPTIONS:"
     "EXPORT_SELECT_TAGS:" "EXPORT_EXCLUDE_TAGS:"
     "EXPORT_SELECT_TAGS:" "EXPORT_EXCLUDE_TAGS:"
-    "LINK_UP:" "LINK_HOME:" "LINK:"
+    "LINK_UP:" "LINK_HOME:" "LINK:" "TODO:"
     "XSLT:" "CATEGORY:" "SEQ_TODO:" "TYP_TODO:"
     "XSLT:" "CATEGORY:" "SEQ_TODO:" "TYP_TODO:"
     "PRIORITIES:" "DRAWERS:" "STARTUP:" "TAGS:"
     "PRIORITIES:" "DRAWERS:" "STARTUP:" "TAGS:"
     "FILETAGS:" "ARCHIVE:"))
     "FILETAGS:" "ARCHIVE:"))
@@ -20351,21 +20353,22 @@ and :keyword."
       (push (list :table-table) clist)))
       (push (list :table-table) clist)))
     (goto-char p)
     (goto-char p)
 
 
-    ;; New the "medium" contexts: clocktables, source blocks
-    (cond ((org-in-clocktable-p)
-	   (push (list :clocktable
-		       (and (or (looking-at "#\\+BEGIN: clocktable")
-				(search-backward "#+BEGIN: clocktable" nil t))
-			    (match-beginning 0))
-		       (and (re-search-forward "#\\+END:?" nil t)
-			    (match-end 0))) clist))
-	  ((org-in-src-block-p)
-	   (push (list :src-block
-		       (and (or (looking-at "#\\+BEGIN_SRC")
-				(search-backward "#+BEGIN_SRC" nil t))
-			    (match-beginning 0))
-		       (and (search-forward "#+END_SRC" nil t)
-			    (match-beginning 0))) clist)))
+    (let ((case-fold-search t))
+      ;; New the "medium" contexts: clocktables, source blocks
+      (cond ((org-in-clocktable-p)
+	     (push (list :clocktable
+			 (and (or (looking-at "#\\+BEGIN: clocktable")
+				  (search-backward "#+BEGIN: clocktable" nil t))
+			      (match-beginning 0))
+			 (and (re-search-forward "#\\+END:?" nil t)
+			      (match-end 0))) clist))
+	    ((org-in-src-block-p)
+	     (push (list :src-block
+			 (and (or (looking-at "#\\+BEGIN_SRC")
+				  (search-backward "#+BEGIN_SRC" nil t))
+			      (match-beginning 0))
+			 (and (search-forward "#+END_SRC" nil t)
+			      (match-beginning 0))) clist))))
     (goto-char p)
     (goto-char p)
 
 
     ;; Now the small context
     ;; Now the small context
@@ -22059,12 +22062,10 @@ Show the heading too, if it is currently invisible."
 (defun org-make-options-regexp (kwds &optional extra)
 (defun org-make-options-regexp (kwds &optional extra)
   "Make a regular expression for keyword lines."
   "Make a regular expression for keyword lines."
   (concat
   (concat
-   "^"
-   "#?[ \t]*\\+\\("
+   "^#\\+\\("
    (mapconcat 'regexp-quote kwds "\\|")
    (mapconcat 'regexp-quote kwds "\\|")
    (if extra (concat "\\|" extra))
    (if extra (concat "\\|" extra))
-   "\\):[ \t]*"
-   "\\(.*\\)"))
+   "\\):[ \t]*\\(.*\\)"))
 
 
 ;; Make isearch reveal the necessary context
 ;; Make isearch reveal the necessary context
 (defun org-isearch-end ()
 (defun org-isearch-end ()