| 
					
				 | 
			
			
				@@ -355,9 +355,7 @@ An entry can be toggled between QUOTE and normal with 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   :type 'string) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 (defconst org-repeat-re 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;  (concat "\\(?:\\<\\(?:" org-scheduled-string "\\|" org-deadline-string "\\)" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-;	  " +<[0-9]\\{4\\}-[0-9][0-9]-[0-9][0-9] [^>\n]*\\)\\(\\+[0-9]+[dwmy]\\)") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  "<[0-9]\\{4\\}-[0-9][0-9]-[0-9][0-9] [^>\n]*\\(\\+[0-9]+[dwmy]\\)" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  "<[0-9]\\{4\\}-[0-9][0-9]-[0-9][0-9] [^>\n]*\\([.+]?\\+[0-9]+[dwmy]\\)" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   "Regular expression for specifying repeated events. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 After a match, group 1 contains the repeat expression.") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -5287,9 +5285,10 @@ This should be called after the variable `org-link-types' has changed." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   "Regular expression for fast time stamp matching.") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 (defconst org-ts-regexp-both "[[<]\\([0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\} [^\r\n>]*?\\)[]>]" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   "Regular expression for fast time stamp matching.") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-(defconst org-ts-regexp0 "\\(\\([0-9]\\{4\\}\\)-\\([0-9]\\{2\\}\\)-\\([0-9]\\{2\\}\\)\\([^]0-9>\r\n]*\\)\\(\\([0-9]\\{2\\}\\):\\([0-9]\\{2\\}\\)\\)?\\)" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+(defconst org-ts-regexp0 "\\(\\([0-9]\\{4\\}\\)-\\([0-9]\\{2\\}\\)-\\([0-9]\\{2\\}\\) *\\([^]-+0-9>\r\n ]*\\)\\( \\([0-9]\\{2\\}\\):\\([0-9]\\{2\\}\\)\\)?\\)" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   "Regular expression matching time strings for analysis. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-This one does not require the space after the date.") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+This one does not require the space after the date, so it can be used 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+on a string that terminates immediately after the date.") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 (defconst org-ts-regexp1 "\\(\\([0-9]\\{4\\}\\)-\\([0-9]\\{2\\}\\)-\\([0-9]\\{2\\}\\) +\\([^]-+0-9>\r\n ]*\\)\\( \\([0-9]\\{2\\}\\):\\([0-9]\\{2\\}\\)\\)?\\)" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   "Regular expression matching time strings for analysis.") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 (defconst org-ts-regexp2 (concat "<" org-ts-regexp1 "[^>\n]\\{0,16\\}>") 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -15022,7 +15021,8 @@ This function is run automatically after each state change to a DONE state." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	 (msg "Entry repeats: ") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	 (org-log-done nil) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	 (org-todo-log-states nil) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 re type n what ts) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 (nshiftmax 10) (nshift 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 re type n what ts mb0 time) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     (when repeat 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       (if (eq org-log-repeat t) (setq org-log-repeat 'state)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       (org-todo (if (eq interpret 'type) last-state head)) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -15042,11 +15042,36 @@ This function is run automatically after each state change to a DONE state." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	      re (save-excursion (outline-next-heading) (point)) t) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	(setq type (if (match-end 1) org-scheduled-string 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		     (if (match-end 3) org-deadline-string "Plain:")) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	      ts (match-string (if (match-end 2) 2 (if (match-end 4) 4 0)))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	(when (string-match "\\([-+]?[0-9]+\\)\\([dwmy]\\)" ts) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	  (setq	n (string-to-number (match-string 1 ts)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		what (match-string 2 ts)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	      ts (match-string (if (match-end 2) 2 (if (match-end 4) 4 0))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	      mb0 (match-beginning 0)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	(when (string-match "\\([.+]\\)?\\(\\+[0-9]+\\)\\([dwmy]\\)" ts) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	  (setq	n (string-to-number (match-string 2 ts)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		what (match-string 3 ts)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	  (if (equal what "w") (setq n (* n 7) what "d")) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	  ;; Preparation, see if we need to modify the start date for the change 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	  (when (match-end 1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	    (setq time (save-match-data (org-time-string-to-time ts))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	    (cond 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	     ((equal (match-string 1 ts) ".") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	      ;; Shift starting date to today 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	      (org-timestamp-change 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	       (- (time-to-days (current-time)) (time-to-days time)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	       'day)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	     ((equal (match-string 1 ts) "+") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	      (while (< (time-to-days time) (time-to-days (current-time))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		(when (= (incf nshift) nshiftmax) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		  (or (y-or-n-p (message "%d repeater intervals were not enough to shift date past today.  Continue? " nshift)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		      (error "Abort")))		       
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		(org-timestamp-change n (cdr (assoc what whata))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		(sit-for .0001) ;; so we can watch the date shifting 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		(org-at-timestamp-p t) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		(setq ts (match-string 1)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		(setq time (save-match-data (org-time-string-to-time ts)))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	      (org-timestamp-change (- n) (cdr (assoc what whata))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	      ;; rematch, so that we have everything in place for the real shift 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	      (org-at-timestamp-p t) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	      (setq ts (match-string 1)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	      (string-match "\\([.+]\\)?\\(\\+[0-9]+\\)\\([dwmy]\\)" ts)))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	  (org-timestamp-change n (cdr (assoc what whata))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	  (setq msg (concat msg type org-last-changed-timestamp " ")))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       (setq org-log-post-message msg) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -18219,7 +18244,7 @@ The command returns the inserted time stamp." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	 t1 w1 with-hm tf time str w2 (off 0)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     (save-match-data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       (setq t1 (org-parse-time-string ts t)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      (if (string-match "\\(-[0-9]+:[0-9]+\\)?\\( \\+[0-9]+[dwmy]\\)?\\'" ts) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (if (string-match "\\(-[0-9]+:[0-9]+\\)?\\( [.+]?\\+[0-9]+[dwmy]\\)?\\'" ts) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	  (setq off (- (match-end 0) (match-beginning 0))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     (setq end (- end off)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     (setq w1 (- end beg) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -18699,7 +18724,7 @@ in the timestamp determines what will be changed." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	    ts (match-string 0)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       (replace-match "") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       (if (string-match 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	   "\\(\\(-[012][0-9]:[0-5][0-9]\\)?\\( +[-+][0-9]+[dwmy]\\)*\\)[]>]" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	   "\\(\\(-[012][0-9]:[0-5][0-9]\\)?\\( +[.+]?[-+][0-9]+[dwmy]\\)*\\)[]>]" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	   ts) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	  (setq extra (match-string 1 ts))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       (if (string-match "^.\\{10\\}.*?[0-9]+:[0-9][0-9]" ts) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -23329,15 +23354,16 @@ the tags of the current headline come last." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	(goto-char (or pos (point))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	(save-match-data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	  (condition-case nil 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	      (org-back-to-heading t) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	      (while (not (equal lastpos (point))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		(setq lastpos (point)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		(if (looking-at (org-re "[^\r\n]+?:\\([[:alnum:]_@:]+\\):[ \t]*$")) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		    (setq tags (append (org-split-string 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					(org-match-string-no-properties 1) ":") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				       tags))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	      (or org-use-tag-inheritance (error "")) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	      (org-up-heading-all 1)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	      (progn 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		(org-back-to-heading t) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		(while (not (equal lastpos (point))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		  (setq lastpos (point)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		  (if (looking-at (org-re "[^\r\n]+?:\\([[:alnum:]_@:]+\\):[ \t]*$")) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		      (setq tags (append (org-split-string 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					  (org-match-string-no-properties 1) ":") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					 tags))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		  (or org-use-tag-inheritance (error "")) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		  (org-up-heading-all 1))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	    (error nil)))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       tags))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -26102,6 +26128,7 @@ lang=\"%s\" xml:lang=\"%s\"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			  (make-string n ?x))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       (or to-buffer (progn (save-buffer) (kill-buffer (current-buffer)))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       (goto-char (point-min)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       (message "Exporting... done") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       (if (eq to-buffer 'string) 
			 |