diff options
| author | Bastien Guerry <bzg@gnu.org> | 2013-02-07 08:11:59 +0100 | 
|---|---|---|
| committer | Bastien Guerry <bzg@gnu.org> | 2013-02-07 08:11:59 +0100 | 
| commit | d351707783bbc9b42168d14f566dd63a8ecd9a1c (patch) | |
| tree | 905c5ce57b8f5e2c2baa3112e3017f3ce58b8b58 | |
| parent | e364bc673cfb92194c7d4a034e3c65ea9137d7ff (diff) | |
| download | emacs-d351707783bbc9b42168d14f566dd63a8ecd9a1c.tar.gz | |
Merge Org 7.9.3e (commit b07a9bb).
| -rw-r--r-- | doc/misc/ChangeLog | 7 | ||||
| -rw-r--r-- | doc/misc/org.texi | 27 | ||||
| -rw-r--r-- | lisp/org/ChangeLog | 117 | ||||
| -rw-r--r-- | lisp/org/ob-python.el | 6 | ||||
| -rw-r--r-- | lisp/org/org-agenda.el | 109 | ||||
| -rw-r--r-- | lisp/org/org-bibtex.el | 2 | ||||
| -rw-r--r-- | lisp/org/org-clock.el | 163 | ||||
| -rw-r--r-- | lisp/org/org-element.el | 87 | ||||
| -rw-r--r-- | lisp/org/org-exp.el | 3 | ||||
| -rw-r--r-- | lisp/org/org-footnote.el | 3 | ||||
| -rw-r--r-- | lisp/org/org-html.el | 11 | ||||
| -rw-r--r-- | lisp/org/org-indent.el | 123 | ||||
| -rw-r--r-- | lisp/org/org-install.el | 10 | ||||
| -rw-r--r-- | lisp/org/org-list.el | 4 | ||||
| -rw-r--r-- | lisp/org/org-macs.el | 2 | ||||
| -rw-r--r-- | lisp/org/org-version.el | 4 | ||||
| -rw-r--r-- | lisp/org/org.el | 121 | 
17 files changed, 510 insertions, 289 deletions
| diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog index 49ef90d3da1..1b454741fc0 100644 --- a/doc/misc/ChangeLog +++ b/doc/misc/ChangeLog @@ -1,3 +1,10 @@ +2013-02-07  Bastien Guerry  <bzg@gnu.org> + +	* org.texi (References): Clarify an example. +	(Installation): Fix instructions. +	(Org-Plot): Fix link. +	(Checkboxes, Radio lists): Fix typos. +  2013-02-06  Glenn Morris  <rgm@gnu.org>  	* cl.texi (Equality Predicates): Mention memql. diff --git a/doc/misc/org.texi b/doc/misc/org.texi index d41d2848cc6..7b880fc386c 100644 --- a/doc/misc/org.texi +++ b/doc/misc/org.texi @@ -2,7 +2,7 @@  @c %**start of header  @setfilename ../../info/org  @settitle The Org Manual -@set VERSION 7.9.3d (GNU Emacs 24.3) +@set VERSION 7.9.3e (GNU Emacs 24.3)  @c Use proper quote and backtick for code sections in PDF output  @c Cf. Texinfo manual 14.2 @@ -903,17 +903,20 @@ $ git clone git://orgmode.org/org-mode.git  $ make autoloads  @end example -Note that @code{make autoloads} is mandatory: it defines Org's version and -Org's autoloaded functions, respectively in @file{org-version.el} and in +Note that in this case, @code{make autoloads} is mandatory: it defines Org's +version in @file{org-version.el} and Org's autoloads in  @file{org-loaddefs.el}.  Remember to add the correct load-path as described in the method above. -You can also compile and install Org from this git repository: check -@code{make help} to get the list of compilation/installation options. +You can also compile with @code{make}, generate the documentation with +@code{make doc}, create a local configuration with @code{make config} and +install Org with @code{make install}.  Please run @code{make help} to get +the list of compilation/installation options.  For more detailed explanations on Org's build system, please check the Org -Build System page on @uref{http://orgmode.org/worg/dev/org-build-system.html, Worg}. +Build System page on @uref{http://orgmode.org/worg/dev/org-build-system.html, +Worg}.  @node Activation, Feedback, Installation, Introduction  @section Activation @@ -2444,7 +2447,7 @@ $1..$3        @r{first three fields in the current row}  $P..$Q        @r{range, using column names (see under Advanced)}  $<<<..$>>     @r{start in third column, continue to the one but last}  @@2$1..@@4$3    @r{6 fields between these two fields (same as @code{A2..C4})} -@@-1$-2..@@-1   @r{3 numbers from the column to the left, 2 up to current row} +@@-1$-2..@@-1   @r{in the first row up, 3 fields from 2 columns on the left}  @@I..II        @r{between first and second hline, short for @code{@@I..@@II}}  @end example @@ -3023,9 +3026,9 @@ functions.  Org-Plot can produce 2D and 3D graphs of information stored in org tables  using @file{Gnuplot} @uref{http://www.gnuplot.info/} and @file{gnuplot-mode} -@uref{http://cars9.uchicago.edu/~ravel/software/gnuplot-mode.html}.  To see -this in action, ensure that you have both Gnuplot and Gnuplot mode installed -on your system, then call @code{org-plot/gnuplot} on the following table. +@uref{http://xafs.org/BruceRavel/GnuplotMode}.  To see this in action, ensure +that you have both Gnuplot and Gnuplot mode installed on your system, then +call @code{org-plot/gnuplot} on the following table.  @example  @group @@ -4486,7 +4489,7 @@ off a box while there are unchecked boxes above it.  @orgcmd{C-c C-c,org-toggle-checkbox}  Toggle checkbox status or (with prefix arg) checkbox presence at point.  With a single prefix argument, add an empty checkbox or remove the current -one@footnote{`C-u C-c C-c' on the @emph{first} item of a list with no checkbox +one@footnote{@kbd{C-u C-c C-c} on the @emph{first} item of a list with no checkbox  will add checkboxes to the rest of the list.}.  With a double prefix argument, set it to @samp{[-]}, which is  considered to be an intermediate state.  @orgcmd{C-c C-x C-b,org-toggle-checkbox} @@ -15987,7 +15990,7 @@ Here is a @LaTeX{} example.  Let's say that you have this in your  \end@{comment@}  @end example -Pressing `C-c C-c' on @code{a new house} and will insert the converted +Pressing @kbd{C-c C-c} on @code{a new house} and will insert the converted  @LaTeX{} list between the two marker lines.  @node Dynamic blocks, Special agenda views, Tables in arbitrary syntax, Hacking diff --git a/lisp/org/ChangeLog b/lisp/org/ChangeLog index b6d196ecf54..03a0560fea8 100644 --- a/lisp/org/ChangeLog +++ b/lisp/org/ChangeLog @@ -1,3 +1,120 @@ +2013-02-07  Bastien Guerry  <bzg@gnu.org> + +	* org-agenda.el (org-agenda-get-deadlines) +	(org-agenda-get-scheduled): Fix bug: use text properties for the +	headline text since we rely on properties to get e.g. the effort. + +	* org-exp.el (org-export-normalize-links): Don't match links +	within tags. + +	* org-html.el (org-export-html-preamble-format) +	(org-export-html-postamble-format): Mention that +	org-export-html-preamble/postamble need to be `t' in order for +	these variables to have any effect. + +	* org-html.el (org-html-handle-links): When the link description +	is an image and the attribute is "width", pass the attribute to +	the <img ...> tag. + +	* org.el (org-mode): Always honor `org-startup-indented', even +	when `org-inhibit-startup' is non-nil. + +	* org-indent.el (org-indent-mode): Don't check +	`org-inhibit-startup'. + +	* org.el (org-fontify-meta-lines-and-blocks-1): Don't try to add +	text properties outside of the buffer. + +	* org.el (org-agenda-inhibit-startup): Rename from +	`org-agenda-inhibit-startup-visibility-cycling'. +	(org-agenda-prepare-buffers): Bind `org-inhibit-startup' to +	`org-agenda-inhibit-startup'. + +	* org.el (org-mode): Don't initialize `org-beamer-mode' when +	`org-inhibit-startup' is non-nil. + +	* org-footnote.el (org-footnote-create-definition): Prevent +	`electric-indent-mode' from inserting the definition at the wrong +	place. + +	* org-agenda.el (org-agenda-no-heading-message): Delete. +	(org-agenda-get-timestamps, org-agenda-get-progress) +	(org-agenda-get-deadlines, org-agenda-get-scheduled) +	(org-agenda-get-blocks): Don't use +	`org-agenda-no-heading-message', skip the entry. + +	* org.el (org-agenda-inhibit-startup-visibility-cycling): New +	option. +	(org-agenda-prepare-buffers): Use it to speed up the agenda +	generation. + +	* org-agenda.el (org-agenda-skip): Fix bug by correctly skipping +	commented scheduled/deadline lines. + +	* org-clock.el (org-clock-in): Fix bug when fetching the effort +	value. + +	* ob-python.el (org-babel-python-command): Fix docstring. +	(org-babel-python-initiate-session-by-key): Fix bug: `run-python' +	from Emacs >24.1 requires a python command as an argument. + +	* org-element.el (org-element-at-point): Fix typo in docstring. + +	* org-agenda.el (org-agenda-get-deadlines): Fix bug: use +	`org-agenda-show-inherited-tags'. + +	* org-agenda.el (org-agenda-skip): Correctly handle commented out +	scheduled/deadline lines.  Refactor. + +	* org-install.el: Do not warn users. + +	* org.el (org-adaptive-fill-function): In message-mode, don't +	lines in the message header, nor table lines in the body. +	Correctly fill lines starting with `org-outline-regexp' in the +	body. + +	* org-agenda.el (org-agenda-open-link): Fix bug with opening all +	links. + +2013-02-07  Francesco Pizzolante  <fpz-djc/iPCCuDYQheJpep6IedvLeJWuRmrY@public.gmane.org>  (tiny change) + +	* org-clock.el (org-clock-sum): Protect with `org-unmodified'. + +	* org-macs.el (org-unmodified): Inhibit modification hooks. + +2013-02-07  John K. Luebs  <jkluebs@luebsphoto.com>  (tiny change) + +	* org.el (org-get-wdays): Handle matching a lead time specified in +	hours. + +2013-02-07  Muchenxuan Tong  <demon386@gmail.com>  (tiny change) + +	* org-agenda.el (org-agenda-quit): Delete indirect buffer's window +	only when it exists. + +2013-02-07  Nicolas Goaziou  <n.goaziou@gmail.com> + +	* org-element.el (org-element-macro-parser): Fix error when last +	argument ends with a protected comma. + +	* org-element.el (org-element-parse-buffer, org-element-map) +	(org-element-at-point, org-element-context): Be more verbose in +	docstrings.  Also fix typos. + +	* org-list.el (org-list-struct-fix-box): When a checkbox has to be +	resetted because of a non-nil ORDERED property value, make sure it +	had a checkbox already. + +2013-02-07  Tokuya Kameshima  <kametoku@gmail.com>  (tiny change) + +	* org-agenda.el (org-search-view): Fix checking +	`org-agenda-show-inherited-tags'. + +2013-02-07  racin  <racin@free.fr>  (tiny change) + +	* org-bibtex.el (org-bibtex-search): Don't throw an error when +	`org-bibtex-prefix' is nil. +  2013-01-13  Bastien Guerry  <bzg@gnu.org>  	* org-compat.el (org-condition-case-unless-debug): Delete. diff --git a/lisp/org/ob-python.el b/lisp/org/ob-python.el index 55dd1c7cdab..79cc53ea0fa 100644 --- a/lisp/org/ob-python.el +++ b/lisp/org/ob-python.el @@ -44,7 +44,7 @@  (defvar org-babel-default-header-args:python '())  (defvar org-babel-python-command "python" -  "Name of command for executing Python code.") +  "Name of the command for executing Python code.")  (defvar org-babel-python-mode (if (featurep 'xemacs) 'python-mode 'python)    "Preferred python mode for use in running python interactively. @@ -143,7 +143,9 @@ then create.  Return the initialized session."        (cond         ((and (eq 'python org-babel-python-mode)  	     (fboundp 'run-python)) ; python.el -	(run-python)) +	(if (version< "24.1" emacs-version) +	    (run-python org-babel-python-command) +	  (run-python)))         ((and (eq 'python-mode org-babel-python-mode)  	     (fboundp 'py-shell)) ; python-mode.el  	;; Make sure that py-which-bufname is initialized, as otherwise diff --git a/lisp/org/org-agenda.el b/lisp/org/org-agenda.el index ca8459ca33d..9b6dcaed8c2 100644 --- a/lisp/org/org-agenda.el +++ b/lisp/org/org-agenda.el @@ -530,7 +530,7 @@ This is a list of four items:     the project is considered to be not stuck.  If you specify \"*\" as     a tag, any tag will mark the project unstuck.  Note that this is about     the explicit presence of a tag somewhere in the subtree, inherited -   tags to not count here.  If inherited tags make a project not stuck, +   tags do not count here.  If inherited tags make a project not stuck,     use \"-TAG\" in the tags part of the matcher under (1.) above.  4. An arbitrary regular expression matching non-stuck projects. @@ -3728,19 +3728,18 @@ A good way to set it is through options in `org-agenda-custom-commands'.")  Also moves point to the end of the skipped region, so that search can  continue from there."    (let ((p (point-at-bol)) to) -    (when (org-in-src-block-p t) (throw :skip t)) -    (and org-agenda-skip-archived-trees (not org-agenda-archives-mode) -	 (get-text-property p :org-archived) -	 (org-end-of-subtree t) -	 (throw :skip t)) -    (and org-agenda-skip-comment-trees -	 (get-text-property p :org-comment) -	 (org-end-of-subtree t) -	 (throw :skip t)) -    (if (equal (char-after p) ?#) (throw :skip t)) -    (when (setq to (or (org-agenda-skip-eval org-agenda-skip-function-global) -		       (org-agenda-skip-eval org-agenda-skip-function))) -      (goto-char to) +    (when (or +	   (save-excursion (goto-char p) (looking-at comment-start-skip)) +	   (and org-agenda-skip-archived-trees (not org-agenda-archives-mode) +		(get-text-property p :org-archived) +		(org-end-of-subtree t)) +	   (and org-agenda-skip-comment-trees +		(get-text-property p :org-comment) +		(org-end-of-subtree t)) +	   (and (setq to (or (org-agenda-skip-eval org-agenda-skip-function-global) +			     (org-agenda-skip-eval org-agenda-skip-function))) +		(goto-char to)) +	   (org-in-src-block-p t))        (throw :skip t))))  (defun org-agenda-skip-eval (form) @@ -4479,7 +4478,8 @@ in `org-agenda-text-search-extra-files'."  			      category-pos (get-text-property (point) 'org-category-position)  			      inherited-tags  			      (or (eq org-agenda-show-inherited-tags 'always) -				  (memq 'todo org-agenda-show-inherited-tags) +				  (and (listp org-agenda-show-inherited-tags) +				       (memq 'todo org-agenda-show-inherited-tags))  				  (and (eq org-agenda-show-inherited-tags t)  				       (or (eq org-agenda-use-tag-inheritance t)  					   (memq 'todo org-agenda-use-tag-inheritance)))) @@ -5406,9 +5406,6 @@ Do we have a reason to ignore this TODO entry because it has a time stamp?  \(fn &optional END)" nil nil) -(defconst org-agenda-no-heading-message -  "No heading for this item in buffer or region.") -  (defun org-agenda-get-timestamps (&optional deadline-results)    "Return the date stamp information for agenda display."    (let* ((props (list 'face 'org-agenda-calendar-event @@ -5488,7 +5485,7 @@ Do we have a reason to ignore this TODO entry because it has a time stamp?  	      category-pos (get-text-property b0 'org-category-position))  	(save-excursion  	  (if (not (re-search-backward org-outline-regexp-bol nil t)) -	      (setq txt org-agenda-no-heading-message) +	      (throw :skip nil)  	    (goto-char (match-beginning 0))  	    (if (and (eq t org-agenda-skip-timestamp-if-deadline-is-shown)  		     (assoc (point) deadline-position-alist)) @@ -5724,7 +5721,7 @@ please use `org-class' instead."  		  (and (looking-at ".*\n[ \t]*-[ \t]+\\([^-\n \t].*?\\)[ \t]*$")  		       (match-string 1)))))  	  (if (not (re-search-backward org-outline-regexp-bol nil t)) -	      (setq txt org-agenda-no-heading-message) +	      (throw :skip nil)  	    (goto-char (match-beginning 0))  	    (setq hdmarker (org-agenda-new-marker)  		  inherited-tags @@ -5892,7 +5889,7 @@ See also the user option `org-agenda-clock-consistency-checks'."  	 (d1 (calendar-absolute-from-gregorian date))  ; DATE bound by calendar  	 d2 diff dfrac wdays pos pos1 category category-pos  	 tags suppress-prewarning ee txt head face s todo-state -	 show-all upcomingp donep timestr warntime) +	 show-all upcomingp donep timestr warntime inherited-tags)      (goto-char (point-min))      (while (re-search-forward regexp nil t)        (setq suppress-prewarning nil) @@ -5941,11 +5938,18 @@ See also the user option `org-agenda-clock-consistency-checks'."  		      warntime (get-text-property (point) 'org-appt-warntime)  		      category-pos (get-text-property (point) 'org-category-position))  		(if (not (re-search-backward "^\\*+[ \t]+" nil t)) -		    (setq txt org-agenda-no-heading-message) +		    (throw :skip nil)  		  (goto-char (match-end 0))  		  (setq pos1 (match-beginning 0)) -		  (setq tags (org-get-tags-at pos1 t)) -		  (setq head (buffer-substring-no-properties +		  (setq inherited-tags +			(or (eq org-agenda-show-inherited-tags 'always) +			    (and (listp org-agenda-show-inherited-tags) +				 (memq 'agenda org-agenda-show-inherited-tags)) +			    (and (eq org-agenda-show-inherited-tags t) +				 (or (eq org-agenda-use-tag-inheritance t) +				     (memq 'agenda org-agenda-use-tag-inheritance)))) +			tags (org-get-tags-at pos1 (not inherited-tags))) +		  (setq head (buffer-substring  			      (point)  			      (progn (skip-chars-forward "^\r\n")  				     (point)))) @@ -6059,7 +6063,7 @@ FRACTION is what fraction of the head-warning time has passed."  	      (setq category (org-get-category)  		    category-pos (get-text-property (point) 'org-category-position))  	      (if (not (re-search-backward "^\\*+[ \t]+" nil t)) -		  (setq txt org-agenda-no-heading-message) +		  (throw :skip nil)  		(goto-char (match-end 0))  		(setq pos1 (match-beginning 0))  		(if habitp @@ -6082,7 +6086,7 @@ FRACTION is what fraction of the head-warning time has passed."  			       (or (eq org-agenda-use-tag-inheritance t)  				   (memq 'agenda org-agenda-use-tag-inheritance))))  		      tags (org-get-tags-at nil (not inherited-tags))) -		(setq head (buffer-substring-no-properties +		(setq head (buffer-substring  			    (point)  			    (progn (skip-chars-forward "^\r\n") (point))))  		(if (string-match " \\([012]?[0-9]:[0-9][0-9]\\)" s) @@ -6160,7 +6164,7 @@ FRACTION is what fraction of the head-warning time has passed."  		(setq category (org-get-category)  		      category-pos (get-text-property (point) 'org-category-position))  		(if (not (re-search-backward org-outline-regexp-bol nil t)) -		    (setq txt org-agenda-no-heading-message) +		    (throw :skip nil)  		  (goto-char (match-beginning 0))  		  (setq hdmarker (org-agenda-new-marker (point))  			inherited-tags @@ -6892,7 +6896,10 @@ Allowed types are 'agenda 'timeline 'todo 'tags 'search."    (interactive)    (if (and (eq org-indirect-buffer-display 'other-window)  	   org-last-indirect-buffer) -      (delete-window (get-buffer-window org-last-indirect-buffer))) +      (let ((org-last-indirect-window +	     (get-buffer-window org-last-indirect-buffer))) +	(if org-last-indirect-window +	    (delete-window org-last-indirect-window))))    (if org-agenda-columns-active        (org-columns-quit)      (if org-agenda-sticky @@ -8012,32 +8019,34 @@ It also looks at the text of the entry itself."    (let* ((marker (or (org-get-at-bol 'org-hd-marker)  		     (org-get-at-bol 'org-marker)))  	 (buffer (and marker (marker-buffer marker))) -	 (prefix (buffer-substring -		  (point-at-bol) (point-at-eol))) +	 (prefix (buffer-substring (point-at-bol) (point-at-eol)))  	 (lkall (org-offer-links-in-entry buffer marker arg prefix)) -	 (lk (car lkall)) +	 (lk0 (car lkall)) +	 (lk (if (stringp lk0) (list lk0) lk0))  	 (lkend (cdr lkall))  	 trg)      (cond -     ((and buffer (stringp lk)) -      (with-current-buffer buffer -	(setq trg (and (string-match org-bracket-link-regexp lk) -		       (match-string 1 lk))) -	(if (or (not trg) (string-match org-any-link-re trg)) -	    (save-excursion -	      (save-restriction -		(widen) -		(goto-char marker) -		(when (search-forward lk nil lkend) -		  (goto-char (match-beginning 0)) -		  (org-open-at-point)))) -	  ;; This is an internal link, widen the buffer -	  (switch-to-buffer-other-window buffer) -	  (widen) -	  (goto-char marker) -	  (when (search-forward lk nil lkend) -	    (goto-char (match-beginning 0)) -	    (org-open-at-point))))) +     ((and buffer lk) +      (mapcar (lambda(l) +		(with-current-buffer buffer +		  (setq trg (and (string-match org-bracket-link-regexp l) +				 (match-string 1 l))) +		  (if (or (not trg) (string-match org-any-link-re trg)) +		      (save-excursion +			(save-restriction +			  (widen) +			  (goto-char marker) +			  (when (search-forward l nil lkend) +			    (goto-char (match-beginning 0)) +			    (org-open-at-point)))) +		    ;; This is an internal link, widen the buffer +		    (switch-to-buffer-other-window buffer) +		    (widen) +		    (goto-char marker) +		    (when (search-forward l nil lkend) +		      (goto-char (match-beginning 0)) +		      (org-open-at-point))))) +	      lk))       ((or (org-in-regexp (concat "\\(" org-bracket-link-regexp "\\)"))  	  (save-excursion  	    (beginning-of-line 1) diff --git a/lisp/org/org-bibtex.el b/lisp/org/org-bibtex.el index 6827bdacb5e..704b20497b9 100644 --- a/lisp/org/org-bibtex.el +++ b/lisp/org/org-bibtex.el @@ -679,7 +679,7 @@ This function relies `org-search-view' to locate results."          (org-agenda-search-view-always-boolean t))      (org-search-view nil  		     (format "%s +{:%s%s:}" -			     string org-bibtex-prefix +			     string (or org-bibtex-prefix "")  			     org-bibtex-type-property-name))))  (provide 'org-bibtex) diff --git a/lisp/org/org-clock.el b/lisp/org/org-clock.el index c043dd19e11..bc0c431ddd3 100644 --- a/lisp/org/org-clock.el +++ b/lisp/org/org-clock.el @@ -1204,7 +1204,7 @@ make this the default behavior.)"  	      (setq org-clock-start-time  		    (apply 'encode-time  			   (org-parse-time-string (match-string 1)))) -	      (setq org-clock-effort (get-text-property (point) 'org-effort)) +	      (setq org-clock-effort (org-entry-get (point) org-effort-property))  	      (setq org-clock-total-time (org-clock-sum-current-item  					  (org-clock-get-sum-start))))  	     ((eq org-clock-in-resume 'auto-restart) @@ -1224,7 +1224,7 @@ make this the default behavior.)"  		(beginning-of-line 1)  		(org-indent-line-to (- (org-get-indentation) 2)))  	      (insert org-clock-string " ") -	      (setq org-clock-effort (get-text-property (point) 'org-effort)) +	      (setq org-clock-effort (org-entry-get (point) org-effort-property))  	      (setq org-clock-total-time (org-clock-sum-current-item  					  (org-clock-get-sum-start)))  	      (setq org-clock-start-time @@ -1675,86 +1675,85 @@ each headline in the time range with point at the headline.  Headlines for  which HEADLINE-FILTER returns nil are excluded from the clock summation.  PROPNAME lets you set a custom text property instead of :org-clock-minutes."    (interactive) -  (let* ((bmp (buffer-modified-p)) -	 (re (concat "^\\(\\*+\\)[ \t]\\|^[ \t]*" -		     org-clock-string -		     "[ \t]*\\(?:\\(\\[.*?\\]\\)-+\\(\\[.*?\\]\\)\\|=>[ \t]+\\([0-9]+\\):\\([0-9]+\\)\\)")) -	 (lmax 30) -	 (ltimes (make-vector lmax 0)) -	 (t1 0) -	 (level 0) -	 ts te dt -	 time) -    (if (stringp tstart) (setq tstart (org-time-string-to-seconds tstart))) -    (if (stringp tend) (setq tend (org-time-string-to-seconds tend))) -    (if (consp tstart) (setq tstart (org-float-time tstart))) -    (if (consp tend) (setq tend (org-float-time tend))) -    (remove-text-properties (point-min) (point-max) -                            `(,(or propname :org-clock-minutes) t -                              :org-clock-force-headline-inclusion t)) -    (save-excursion -      (goto-char (point-max)) -      (while (re-search-backward re nil t) -	(cond -	 ((match-end 2) -	  ;; Two time stamps -	  (setq ts (match-string 2) -		te (match-string 3) -		ts (org-float-time -		    (apply 'encode-time (org-parse-time-string ts))) -		te (org-float-time -		    (apply 'encode-time (org-parse-time-string te))) -		ts (if tstart (max ts tstart) ts) -		te (if tend (min te tend) te) -		dt (- te ts) -		t1 (if (> dt 0) (+ t1 (floor (/ dt 60))) t1))) -	 ((match-end 4) -	  ;; A naked time -	  (setq t1 (+ t1 (string-to-number (match-string 5)) -		      (* 60 (string-to-number (match-string 4)))))) -	 (t ;; A headline -	  ;; Add the currently clocking item time to the total -	  (when (and org-clock-report-include-clocking-task -		     (equal (org-clocking-buffer) (current-buffer)) -		     (equal (marker-position org-clock-hd-marker) (point)) -		     tstart -		     tend -		     (>= (org-float-time org-clock-start-time) tstart) -		     (<= (org-float-time org-clock-start-time) tend)) -	    (let ((time (floor (- (org-float-time) -				  (org-float-time org-clock-start-time)) 60))) -	      (setq t1 (+ t1 time)))) -	  (let* ((headline-forced -		  (get-text-property (point) -                                     :org-clock-force-headline-inclusion)) -                 (headline-included -                  (or (null headline-filter) -                      (save-excursion -                        (save-match-data (funcall headline-filter)))))) -	    (setq level (- (match-end 1) (match-beginning 1))) -	    (when (or (> t1 0) (> (aref ltimes level) 0)) -	      (when (or headline-included headline-forced) -                (if headline-included -                    (loop for l from 0 to level do -                          (aset ltimes l (+ (aref ltimes l) t1)))) -		(setq time (aref ltimes level)) -		(goto-char (match-beginning 0)) -		(put-text-property (point) (point-at-eol) -				   (or propname :org-clock-minutes) time) -                (if headline-filter -                    (save-excursion -                      (save-match-data -                        (while -                            (> (funcall outline-level) 1) -                          (outline-up-heading 1 t) -                          (put-text-property -                           (point) (point-at-eol) -                           :org-clock-force-headline-inclusion t)))))) -	      (setq t1 0) -	      (loop for l from level to (1- lmax) do -		    (aset ltimes l 0))))))) -      (setq org-clock-file-total-minutes (aref ltimes 0))) -    (set-buffer-modified-p bmp))) +  (org-unmodified +   (let* ((re (concat "^\\(\\*+\\)[ \t]\\|^[ \t]*" +		      org-clock-string +		      "[ \t]*\\(?:\\(\\[.*?\\]\\)-+\\(\\[.*?\\]\\)\\|=>[ \t]+\\([0-9]+\\):\\([0-9]+\\)\\)")) +	  (lmax 30) +	  (ltimes (make-vector lmax 0)) +	  (t1 0) +	  (level 0) +	  ts te dt +	  time) +     (if (stringp tstart) (setq tstart (org-time-string-to-seconds tstart))) +     (if (stringp tend) (setq tend (org-time-string-to-seconds tend))) +     (if (consp tstart) (setq tstart (org-float-time tstart))) +     (if (consp tend) (setq tend (org-float-time tend))) +     (remove-text-properties (point-min) (point-max) +			     `(,(or propname :org-clock-minutes) t +			       :org-clock-force-headline-inclusion t)) +     (save-excursion +       (goto-char (point-max)) +       (while (re-search-backward re nil t) +	 (cond +	  ((match-end 2) +	   ;; Two time stamps +	   (setq ts (match-string 2) +		 te (match-string 3) +		 ts (org-float-time +		     (apply 'encode-time (org-parse-time-string ts))) +		 te (org-float-time +		     (apply 'encode-time (org-parse-time-string te))) +		 ts (if tstart (max ts tstart) ts) +		 te (if tend (min te tend) te) +		 dt (- te ts) +		 t1 (if (> dt 0) (+ t1 (floor (/ dt 60))) t1))) +	  ((match-end 4) +	   ;; A naked time +	   (setq t1 (+ t1 (string-to-number (match-string 5)) +		       (* 60 (string-to-number (match-string 4)))))) +	  (t ;; A headline +	   ;; Add the currently clocking item time to the total +	   (when (and org-clock-report-include-clocking-task +		      (equal (org-clocking-buffer) (current-buffer)) +		      (equal (marker-position org-clock-hd-marker) (point)) +		      tstart +		      tend +		      (>= (org-float-time org-clock-start-time) tstart) +		      (<= (org-float-time org-clock-start-time) tend)) +	     (let ((time (floor (- (org-float-time) +				   (org-float-time org-clock-start-time)) 60))) +	       (setq t1 (+ t1 time)))) +	   (let* ((headline-forced +		   (get-text-property (point) +				      :org-clock-force-headline-inclusion)) +		  (headline-included +		   (or (null headline-filter) +		       (save-excursion +			 (save-match-data (funcall headline-filter)))))) +	     (setq level (- (match-end 1) (match-beginning 1))) +	     (when (or (> t1 0) (> (aref ltimes level) 0)) +	       (when (or headline-included headline-forced) +		 (if headline-included +		     (loop for l from 0 to level do +			   (aset ltimes l (+ (aref ltimes l) t1)))) +		 (setq time (aref ltimes level)) +		 (goto-char (match-beginning 0)) +		 (put-text-property (point) (point-at-eol) +				    (or propname :org-clock-minutes) time) +		 (if headline-filter +		     (save-excursion +		       (save-match-data +			 (while +			     (> (funcall outline-level) 1) +			   (outline-up-heading 1 t) +			   (put-text-property +			    (point) (point-at-eol) +			    :org-clock-force-headline-inclusion t)))))) +	       (setq t1 0) +	       (loop for l from level to (1- lmax) do +		     (aset ltimes l 0))))))) +       (setq org-clock-file-total-minutes (aref ltimes 0))))))  (defun org-clock-sum-current-item (&optional tstart)    "Return time, clocked on current item in total." diff --git a/lisp/org/org-element.el b/lisp/org/org-element.el index c8096aa3963..6a0b8eee45c 100644 --- a/lisp/org/org-element.el +++ b/lisp/org/org-element.el @@ -2893,10 +2893,13 @@ Assume point is at the macro."  	  (end (point))  	  (args (let ((args (org-match-string-no-properties 3)) args2)  		  (when args -		    (setq args (org-split-string args ",")) +		    ;; Do not use `org-split-string' since empty +		    ;; strings are meaningful here. +		    (setq args (split-string args ","))  		    (while args  		      (while (string-match "\\\\\\'" (car args)) -			;; Repair bad splits. +			;; Repair bad splits, when comma is protected, +                        ;; and thus not a real separator.  			(setcar (cdr args) (concat (substring (car args) 0 -1)  						   "," (nth 1 args)))  			(pop args)) @@ -3611,7 +3614,32 @@ recursion.  It can be set to the following symbols:  When VISIBLE-ONLY is non-nil, don't parse contents of hidden  elements. -Assume buffer is in Org mode." +An element or an objects is represented as a list with the +pattern (TYPE PROPERTIES CONTENTS), where : + +  TYPE is a symbol describing the element or object.  See +  `org-element-all-elements' and `org-element-all-objects' for an +  exhaustive list of such symbols.  One can retrieve it with +  `org-element-type' function. + +  PROPERTIES is the list of attributes attached to the element or +  object, as a plist.  Although most of them are specific to the +  element or object type, all types share `:begin', `:end', +  `:post-blank' and `:parent' properties, which respectively +  refer to buffer position where the element or object starts, +  ends, the number of white spaces or blank lines after it, and +  the element or object containing it.  Properties values can be +  obtained by using `org-element-property' function. + +  CONTENTS is a list of elements, objects or raw strings +  contained in the current element or object, when applicable. +  One can access them with `org-element-contents' function. + +The Org buffer has `org-data' as type and nil as properties. +`org-element-map' function can be used to find specific elements +or objects within the parse tree. + +This function assumes that current major mode is `org-mode'."    (save-excursion      (goto-char (point-min))      (org-skip-whitespace) @@ -3640,11 +3668,12 @@ containing the secondary string.  It is used to set correctly  (defun org-element-map (data types fun &optional info first-match no-recursion)    "Map a function on selected elements or objects. -DATA is the parsed tree, as returned by, i.e, +DATA is an Org buffer parse tree, as returned by, i.e,  `org-element-parse-buffer'.  TYPES is a symbol or list of symbols -of elements or objects types.  FUN is the function called on the -matching element or object.  It must accept one arguments: the -element or object itself. +of elements or objects types (see `org-element-all-elements' and +`org-element-all-objects' for a complete list of types).  FUN is +the function called on the matching element or object.  It has to +accept one argument: the element or object itself.  When optional argument INFO is non-nil, it should be a plist  holding export options.  In that case, parts of the parse tree @@ -3658,7 +3687,37 @@ representing elements or objects types.  `org-element-map' won't  enter any recursive element or object whose type belongs to that  list.  Though, FUN can still be applied on them. -Nil values returned from FUN do not appear in the results." +Nil values returned from FUN do not appear in the results. + + +Examples: +-------- + +Assuming TREE is a variable containing an Org buffer parse tree, +the following example will return a flat list of all `src-block' +and `example-block' elements in it: + +  \(org-element-map tree '(example-block src-block) 'identity) + +The following snippet will find the first headline with a level +of 1 and a \"phone\" tag, and will return its beginning position: + +  \(org-element-map +   tree 'headline +   \(lambda (hl) +     \(and (= (org-element-property :level hl) 1) +          \(member \"phone\" (org-element-property :tags hl)) +          \(org-element-property :begin hl))) +   nil t) + +Eventually, this last example will return a flat list of all +`bold' type objects containing a `latex-snippet' type object: + +  \(org-element-map +   tree 'bold +   \(lambda (b) +     \(and (org-element-map b 'latex-snippet 'identity nil t) +          b)))"    ;; Ensure TYPES and NO-RECURSION are a list, even of one element.    (unless (listp types) (setq types (list types)))    (unless (listp no-recursion) (setq no-recursion (list no-recursion))) @@ -4168,8 +4227,8 @@ of the element and PROPS a plist of properties associated to the  element.  Possible types are defined in `org-element-all-elements'. -Properties depend on element or object type, but always -include :begin, :end, :parent and :post-blank properties. +Properties depend on element or object type, but always include +`:begin', `:end', `:parent' and `:post-blank' properties.  As a special case, if point is at the very beginning of a list or  sub-list, returned element will be that list instead of the first @@ -4178,8 +4237,8 @@ row of a table, returned element will be the table instead of the  first row.  If optional argument KEEP-TRAIL is non-nil, the function returns -a list of of elements leading to element at point.  The list's -CAR is always the element at point.  Following positions contain +a list of elements leading to element at point.  The list's CAR +is always the element at point.  The following positions contain  element's siblings, then parents, siblings of parents, until the  first element of current section."    (org-with-wide-buffer @@ -4268,8 +4327,8 @@ associated to it.  Possible types are defined in `org-element-all-elements' and  `org-element-all-objects'.  Properties depend on element or -object type, but always include :begin, :end, :parent -and :post-blank properties." +object type, but always include `:begin', `:end', `:parent' and +`:post-blank'."    (org-with-wide-buffer     (let* ((origin (point))  	  (element (org-element-at-point)) diff --git a/lisp/org/org-exp.el b/lisp/org/org-exp.el index 82b9003e4fd..5ccaec3e67f 100644 --- a/lisp/org/org-exp.el +++ b/lisp/org/org-exp.el @@ -2113,7 +2113,8 @@ Also, store forced alignment information found in such lines."        (put-text-property (match-beginning 0) (match-end 0) 'org-normalized-link t))      (goto-char (point-min))      (while (re-search-forward re-plain-link nil t) -      (unless (get-text-property (match-beginning 0) 'org-normalized-link) +      (unless (or (get-text-property (match-beginning 0) 'org-normalized-link) +		  (assoc :tags (org-context)))  	(goto-char (1- (match-end 0)))  	(org-if-unprotected-at (1+ (match-beginning 0))  	  (let* ((s (concat (match-string 1) diff --git a/lisp/org/org-footnote.el b/lisp/org/org-footnote.el index 269ea8ebf9c..4cde24bf57f 100644 --- a/lisp/org/org-footnote.el +++ b/lisp/org/org-footnote.el @@ -486,7 +486,8 @@ or new, let the user edit the definition of the footnote."  (defun org-footnote-create-definition (label)    "Start the definition of a footnote with label LABEL."    (interactive "sLabel: ") -  (let ((label (org-footnote-normalize-label label))) +  (let ((label (org-footnote-normalize-label label)) +	electric-indent-mode) ;; Prevent wrong indentation      (cond       ;; In an Org file.       ((derived-mode-p 'org-mode) diff --git a/lisp/org/org-html.el b/lisp/org/org-html.el index 493d8a28afb..ca90f855aab 100644 --- a/lisp/org/org-html.el +++ b/lisp/org/org-html.el @@ -464,6 +464,9 @@ precedence over this variable."  (defcustom org-export-html-preamble-format '(("en" ""))    "Alist of languages and format strings for the HTML preamble. +To enable the HTML exporter to use these formats, you need to set +`org-export-html-preamble' to `t'. +  The first element of each list is the language code, as used for  the #+LANGUAGE keyword. @@ -510,6 +513,9 @@ precedence over this variable."  "))    "Alist of languages and format strings for the HTML postamble. +To enable the HTML exporter to use these formats, you need to set +`org-export-html-postamble' to `t'. +  The first element of each list is the language code, as used for  the #+LANGUAGE keyword. @@ -1030,7 +1036,10 @@ OPT-PLIST is the export options list."  	  (if (string-match "^file:" desc)  	      (setq desc (substring desc (match-end 0)))))  	(setq desc (org-add-props -		       (concat "<img src=\"" desc "\" alt=\"" +		       (concat "<img src=\"" desc "\" " +			       (when (save-match-data (string-match "width=" attr)) +				 (prog1 (concat attr " ") (setq attr ""))) +			       "alt=\""  			       (file-name-nondirectory desc) "\"/>")  		       '(org-protected t))))        (cond diff --git a/lisp/org/org-indent.el b/lisp/org/org-indent.el index 054ccb07302..d5f17b2cb69 100644 --- a/lisp/org/org-indent.el +++ b/lisp/org/org-indent.el @@ -159,69 +159,68 @@ properties, after each buffer modification, on the modified zone.  The process is synchronous.  Though, initial indentation of  buffer, which can take a few seconds on large buffers, is done -during idle time." nil " Ind" nil -(cond - ((org-bound-and-true-p org-inhibit-startup) -  (setq org-indent-mode nil)) - ((and org-indent-mode (featurep 'xemacs)) -  (message "org-indent-mode does not work in XEmacs - refusing to turn it on") -  (setq org-indent-mode nil)) - ((and org-indent-mode -       (not (org-version-check "23.1.50" "Org Indent mode" :predicate))) -  (message "org-indent-mode can crash Emacs 23.1 - refusing to turn it on!") -  (ding) -  (sit-for 1) -  (setq org-indent-mode nil)) - (org-indent-mode -  ;; mode was turned on. -  (org-set-local 'indent-tabs-mode nil) -  (or org-indent-strings (org-indent-initialize)) -  (org-set-local 'org-indent-initial-marker (copy-marker 1)) -  (when org-indent-mode-turns-off-org-adapt-indentation -    (org-set-local 'org-adapt-indentation nil)) -  (when org-indent-mode-turns-on-hiding-stars -    (org-set-local 'org-hide-leading-stars-before-indent-mode -		   org-hide-leading-stars) -    (org-set-local 'org-hide-leading-stars t)) -  (make-local-variable 'filter-buffer-substring-functions) -  (add-hook 'filter-buffer-substring-functions -	    (lambda (fun start end delete) -	      (org-indent-remove-properties-from-string -	       (funcall fun start end delete)))) -  (org-add-hook 'after-change-functions 'org-indent-refresh-maybe nil 'local) -  (org-add-hook 'before-change-functions -		'org-indent-notify-modified-headline nil 'local) -  (and font-lock-mode (org-restart-font-lock)) -  (org-indent-remove-properties (point-min) (point-max)) -  ;; Submit current buffer to initialize agent.  If it's the first -  ;; buffer submitted, also start the agent.  Current buffer is -  ;; pushed in both cases to avoid a race condition. -  (if org-indent-agentized-buffers +during idle time." +  nil " Ind" nil +  (cond +   ((and org-indent-mode (featurep 'xemacs)) +    (message "org-indent-mode does not work in XEmacs - refusing to turn it on") +    (setq org-indent-mode nil)) +   ((and org-indent-mode +	 (not (org-version-check "23.1.50" "Org Indent mode" :predicate))) +    (message "org-indent-mode can crash Emacs 23.1 - refusing to turn it on!") +    (ding) +    (sit-for 1) +    (setq org-indent-mode nil)) +   (org-indent-mode +    ;; mode was turned on. +    (org-set-local 'indent-tabs-mode nil) +    (or org-indent-strings (org-indent-initialize)) +    (org-set-local 'org-indent-initial-marker (copy-marker 1)) +    (when org-indent-mode-turns-off-org-adapt-indentation +      (org-set-local 'org-adapt-indentation nil)) +    (when org-indent-mode-turns-on-hiding-stars +      (org-set-local 'org-hide-leading-stars-before-indent-mode +		     org-hide-leading-stars) +      (org-set-local 'org-hide-leading-stars t)) +    (make-local-variable 'filter-buffer-substring-functions) +    (add-hook 'filter-buffer-substring-functions +	      (lambda (fun start end delete) +		(org-indent-remove-properties-from-string +		 (funcall fun start end delete)))) +    (org-add-hook 'after-change-functions 'org-indent-refresh-maybe nil 'local) +    (org-add-hook 'before-change-functions +		  'org-indent-notify-modified-headline nil 'local) +    (and font-lock-mode (org-restart-font-lock)) +    (org-indent-remove-properties (point-min) (point-max)) +    ;; Submit current buffer to initialize agent.  If it's the first +    ;; buffer submitted, also start the agent.  Current buffer is +    ;; pushed in both cases to avoid a race condition. +    (if org-indent-agentized-buffers +	(push (current-buffer) org-indent-agentized-buffers)        (push (current-buffer) org-indent-agentized-buffers) -    (push (current-buffer) org-indent-agentized-buffers) -    (setq org-indent-agent-timer -	  (run-with-idle-timer 0.2 t #'org-indent-initialize-agent)))) - (t -  ;; mode was turned off (or we refused to turn it on) -  (kill-local-variable 'org-adapt-indentation) -  (setq org-indent-agentized-buffers -	(delq (current-buffer) org-indent-agentized-buffers)) -  (when (markerp org-indent-initial-marker) -    (set-marker org-indent-initial-marker nil)) -  (when (boundp 'org-hide-leading-stars-before-indent-mode) -    (org-set-local 'org-hide-leading-stars -		   org-hide-leading-stars-before-indent-mode)) -  (remove-hook 'filter-buffer-substring-functions -	       (lambda (fun start end delete) -		 (org-indent-remove-properties-from-string -		  (funcall fun start end delete)))) -  (remove-hook 'after-change-functions 'org-indent-refresh-maybe 'local) -  (remove-hook 'before-change-functions -	       'org-indent-notify-modified-headline 'local) -  (org-with-wide-buffer -   (org-indent-remove-properties (point-min) (point-max))) -  (and font-lock-mode (org-restart-font-lock)) -  (redraw-display)))) +      (setq org-indent-agent-timer +	    (run-with-idle-timer 0.2 t #'org-indent-initialize-agent)))) +   (t +    ;; mode was turned off (or we refused to turn it on) +    (kill-local-variable 'org-adapt-indentation) +    (setq org-indent-agentized-buffers +	  (delq (current-buffer) org-indent-agentized-buffers)) +    (when (markerp org-indent-initial-marker) +      (set-marker org-indent-initial-marker nil)) +    (when (boundp 'org-hide-leading-stars-before-indent-mode) +      (org-set-local 'org-hide-leading-stars +		     org-hide-leading-stars-before-indent-mode)) +    (remove-hook 'filter-buffer-substring-functions +		 (lambda (fun start end delete) +		   (org-indent-remove-properties-from-string +		    (funcall fun start end delete)))) +    (remove-hook 'after-change-functions 'org-indent-refresh-maybe 'local) +    (remove-hook 'before-change-functions +		 'org-indent-notify-modified-headline 'local) +    (org-with-wide-buffer +     (org-indent-remove-properties (point-min) (point-max))) +    (and font-lock-mode (org-restart-font-lock)) +    (redraw-display))))  (defun org-indent-indent-buffer ()    "Add indentation properties to the accessible part of the buffer." diff --git a/lisp/org/org-install.el b/lisp/org/org-install.el index aca019fb823..58359597363 100644 --- a/lisp/org/org-install.el +++ b/lisp/org/org-install.el @@ -1,10 +1,12 @@  ;;; org-install.el --- backward compatibility file for obsolete configuration  ;;  ;;; Code: -(warn "The file org-install is obsolete. -It is provided here so that (require 'org-install) does not -trigger an error for users with obsolete Emacs configuration. -You can safely remove (require 'org-install) from your config.") +;; +;; The file org-install is obsolete. +;; +;; It is provided here so that (require 'org-install) does not +;; trigger an error for users with obsolete Emacs configuration. +;; You can safely remove (require 'org-install) from your config."  (provide 'org-install) diff --git a/lisp/org/org-list.el b/lisp/org/org-list.el index 78cb2a621c7..47476481625 100644 --- a/lisp/org/org-list.el +++ b/lisp/org/org-list.el @@ -1802,7 +1802,9 @@ This function modifies STRUCT."  	;; There are boxes checked after an unchecked one: fix that.  	(when (member "[X]" after-unchecked)  	  (let ((index (- (length struct) (length after-unchecked)))) -	    (mapc (lambda (e) (org-list-set-checkbox e struct "[ ]")) +	    (mapc (lambda (e) +		    (when (org-list-get-checkbox e struct) +		      (org-list-set-checkbox e struct "[ ]")))  		  (nthcdr index all-items))  	    ;; Verify once again the structure, without ORDERED.  	    (org-list-struct-fix-box struct parents prevs nil) diff --git a/lisp/org/org-macs.el b/lisp/org/org-macs.el index a44bdbe30fd..ceee30601bd 100644 --- a/lisp/org/org-macs.el +++ b/lisp/org/org-macs.el @@ -93,7 +93,7 @@ Also, do not record undo information."    `(set-buffer-modified-p      (prog1 (buffer-modified-p)        (let ((buffer-undo-list t) -	    before-change-functions after-change-functions) +	    (inhibit-modification-hooks t))  	,@body))))  (def-edebug-spec org-unmodified (body)) diff --git a/lisp/org/org-version.el b/lisp/org/org-version.el index e62eba3cf83..1910d3f7b4f 100644 --- a/lisp/org/org-version.el +++ b/lisp/org/org-version.el @@ -5,13 +5,13 @@  (defun org-release ()    "The release version of org-mode.    Inserted by installing org-mode or when a release is made." -   (let ((org-release "7.9.3d")) +   (let ((org-release "7.9.3e"))       org-release))  ;;;###autoload  (defun org-git-version ()    "The Git version of org-mode.    Inserted by installing org-mode or when a release is made." -   (let ((org-git-version "7.9.3d-GNU-Emacs-24-3 (commit e8f5b0ad)")) +   (let ((org-git-version "7.9.3e-3-gb07a9b"))       org-git-version))  ;;;###autoload  (defvar org-odt-data-dir "/usr/share/emacs/etc/org" diff --git a/lisp/org/org.el b/lisp/org/org.el index 9409feca178..bba52a8b63a 100644 --- a/lisp/org/org.el +++ b/lisp/org/org.el @@ -4915,6 +4915,7 @@ The following commands are available:    (org-set-local 'calc-embedded-open-mode "# ")    (modify-syntax-entry ?@ "w")    (if org-startup-truncated (setq truncate-lines t)) +  (when org-startup-indented (require 'org-indent) (org-indent-mode 1))    (org-set-local 'font-lock-unfontify-region-function  		 'org-unfontify-region)    ;; Activate before-change-function @@ -4970,9 +4971,6 @@ The following commands are available:      (org-set-local 'outline-isearch-open-invisible-function  		   (lambda (&rest ignore) (org-show-context 'isearch)))) -  ;; Turn on org-beamer-mode? -  (and org-startup-with-beamer-mode (org-beamer-mode)) -    ;; Setup the pcomplete hooks    (set (make-local-variable 'pcomplete-command-completion-function)         'org-pcomplete-initial) @@ -4992,15 +4990,13 @@ The following commands are available:  	   (= (point-min) (point-max)))        (insert "#    -*- mode: org -*-\n\n"))    (unless org-inhibit-startup +    (and org-startup-with-beamer-mode (org-beamer-mode))      (when org-startup-align-all-tables        (let ((bmp (buffer-modified-p)))  	(org-table-map-tables 'org-table-align 'quietly)  	(set-buffer-modified-p bmp)))      (when org-startup-with-inline-images        (org-display-inline-images)) -    (when org-startup-indented -      (require 'org-indent) -      (org-indent-mode 1))      (unless org-inhibit-startup-visibility-stuff        (org-set-startup-visibility)))    ;; Try to set org-hide correctly @@ -5422,7 +5418,7 @@ by a #."  		 '(font-lock-fontified t invisible t)  	       '(font-lock-fontified t face org-document-info-keyword)))  	    (add-text-properties -	     (match-beginning 6) (1+ (match-end 6)) +	     (match-beginning 6) (min (point-max) (1+ (match-end 6)))  	     (if (string-equal dc1 "+title:")  	    	 '(font-lock-fontified t face org-document-title)  	       '(font-lock-fontified t face org-document-info)))) @@ -15925,7 +15921,8 @@ Don't touch the rest."      (floor (* (string-to-number (match-string 1 ts))  	      (cdr (assoc (match-string 2 ts)  			  '(("d" . 1)    ("w" . 7) -			    ("m" . 30.4) ("y" . 365.25))))))) +			    ("m" . 30.4) ("y" . 365.25) +			    ("h" . 0.041667)))))))     ;; go for the default.     (t org-deadline-warning-days))) @@ -16662,6 +16659,15 @@ effort string \"2hours\" is equivalent to 120 minutes."    :type '(alist :key-type (string :tag "Modifier")  		:value-type (number :tag "Minutes"))) +(defcustom org-agenda-inhibit-startup t +  "Inhibit startup when preparing agenda buffers. +When this variable is `t' (the default), the initialization of +the Org agenda buffers is inhibited: e.g. the visibility state +is not set, the tables are not re-aligned, etc." +  :type 'boolean +  :version "24.3" +  :group 'org-agenda) +  (defun org-duration-string-to-minutes (s &optional output-to-string)    "Convert a duration string S to minutes. @@ -17001,6 +17007,7 @@ When a buffer is unmodified, it is just killed.  When modified, it is saved  	(pc '(:org-comment t))  	(pall '(:org-archived t :org-comment t))  	(inhibit-read-only t) +	(org-inhibit-startup org-agenda-inhibit-startup)  	(rea (concat ":" org-archive-tag ":"))  	bmp file re)      (save-excursion @@ -20984,58 +20991,62 @@ hierarchy of headlines by UP levels before marking the subtree."  (declare-function message-in-body-p "message" ())  (defvar org-element--affiliated-re) ; From org-element.el +(defvar orgtbl-line-start-regexp) ; From org-table.el  (defun org-adaptive-fill-function ()    "Compute a fill prefix for the current line.  Return fill prefix, as a string, or nil if current line isn't  meant to be filled."    (let (prefix) -    (when (and (derived-mode-p 'message-mode) (message-in-body-p)) -      (save-excursion -	(beginning-of-line) -	(cond ((looking-at message-cite-prefix-regexp) -	       (setq prefix (match-string-no-properties 0))) -	      ((looking-at org-outline-regexp) -	       (setq prefix ""))))) -    (or prefix -	(org-with-wide-buffer -	 (let* ((p (line-beginning-position)) -		(element (save-excursion (beginning-of-line) (org-element-at-point))) -		(type (org-element-type element)) -		(post-affiliated -		 (save-excursion -		   (goto-char (org-element-property :begin element)) -		   (while (looking-at org-element--affiliated-re) (forward-line)) -		   (point)))) -	   (unless (< p post-affiliated) -	     (case type -	       (comment (looking-at "[ \t]*# ?") (match-string 0)) -	       (footnote-definition "") -	       ((item plain-list) -		(make-string (org-list-item-body-column post-affiliated) ? )) -	       (paragraph -		;; Fill prefix is usually the same as the current line, -		;; except if the paragraph is at the beginning of an item. -		(let ((parent (org-element-property :parent element))) -		  (cond ((eq (org-element-type parent) 'item) -			 (make-string (org-list-item-body-column -				       (org-element-property :begin parent)) -				      ? )) -			((save-excursion (beginning-of-line) (looking-at "[ \t]+")) -			 (match-string 0)) -			(t  "")))) -	       (comment-block -		;; Only fill contents if P is within block boundaries. -		(let* ((cbeg (save-excursion (goto-char post-affiliated) -					     (forward-line) -					     (point))) -		       (cend (save-excursion -			       (goto-char (org-element-property :end element)) -			       (skip-chars-backward " \r\t\n") -			       (line-beginning-position)))) -		  (when (and (>= p cbeg) (< p cend)) -		    (if (save-excursion (beginning-of-line) (looking-at "[ \t]+")) -			(match-string 0) -		      ""))))))))))) +    (catch 'exit +      (when (derived-mode-p 'message-mode) +	(save-excursion +	  (beginning-of-line) +	  (cond ((or (not (message-in-body-p)) +		     (looking-at orgtbl-line-start-regexp)) +		 (throw 'exit nil)) +		((looking-at message-cite-prefix-regexp) +		 (throw 'exit (match-string-no-properties 0))) +		((looking-at org-outline-regexp) +		 (throw 'exit (make-string (length (match-string 0)) ? )))))) +      (org-with-wide-buffer +       (let* ((p (line-beginning-position)) +	      (element (save-excursion (beginning-of-line) (org-element-at-point))) +	      (type (org-element-type element)) +	      (post-affiliated +	       (save-excursion +		 (goto-char (org-element-property :begin element)) +		 (while (looking-at org-element--affiliated-re) (forward-line)) +		 (point)))) +	 (unless (< p post-affiliated) +	   (case type +	     (comment (looking-at "[ \t]*# ?") (match-string 0)) +	     (footnote-definition "") +	     ((item plain-list) +	      (make-string (org-list-item-body-column post-affiliated) ? )) +	     (paragraph +	      ;; Fill prefix is usually the same as the current line, +	      ;; except if the paragraph is at the beginning of an item. +	      (let ((parent (org-element-property :parent element))) +		(cond ((eq (org-element-type parent) 'item) +		       (make-string (org-list-item-body-column +				     (org-element-property :begin parent)) +				    ? )) +		      ((save-excursion (beginning-of-line) (looking-at "[ \t]+")) +		       (match-string 0)) +		      (t  "")))) +	     (comment-block +	      ;; Only fill contents if P is within block boundaries. +	      (let* ((cbeg (save-excursion (goto-char post-affiliated) +					   (forward-line) +					   (point))) +		     (cend (save-excursion +			     (goto-char (org-element-property :end element)) +			     (skip-chars-backward " \r\t\n") +			     (line-beginning-position)))) +		(when (and (>= p cbeg) (< p cend)) +		  (if (save-excursion (beginning-of-line) (looking-at "[ \t]+")) +		      (match-string 0) +		    "")))))))))))  (declare-function message-goto-body "message" ())  (defvar message-cite-prefix-regexp)	; From message.el | 
