1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-07 06:50:23 -08:00
emacs/lisp/org/org-plot.el
Carsten Dominik 86fbb8cad9 Install version 7.01 of Org-mode
2010-07-19  Eric Schulte  <schulte.eric@gmail.com>

	* ob-C.el: New file.
	* ob-R.el: New file.
	* ob-asymptote.el: New file.
	* ob-clojure.el: New file.
	* ob-comint.el: New file.
	* ob-css.el: New file.
	* ob-ditaa.el: New file.
	* ob-dot.el: New file.
	* ob-emacs-lisp.el: New file.
	* ob-eval.el: New file.
	* ob-exp.el: New file.
	* ob-gnuplot.el: New file.
	* ob-haskell.el: New file.
	* ob-keys.el: New file.
	* ob-latex.el: New file.
	* ob-lob.el: New file.
	* ob-matlab.el: New file.
	* ob-mscgen.el: New file.
	* ob-ocaml.el: New file.
	* ob-octave.el: New file.
	* ob-perl.el: New file.
	* ob-python.el: New file.
	* ob-ref.el: New file.
	* ob-ruby.el: New file.
	* ob-sass.el: New file.
	* ob-screen.el: New file.
	* ob-sh.el: New file.
	* ob-sql.el: New file.
	* ob-sqlite.el: New file.
	* ob-table.el: New file.
	* ob-tangle.el: New file.
	* ob.el: New file.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org-mks.el: New file.
	* org-capture.el: New file.

2010-07-19  Christian Egli  <christian.egli@sbszh.ch>

	* org-taskjuggler.el: New file.

2010-07-19  Matt Lundin  <mdl@imapmail.org>

	* org-agenda.el (org-search-view): Fixed inclusion of agenda-archives
	in org-agenda-text-search-extra-files.

2010-07-19  David Maus  <dmaus@ictsoc.de>

	* org-list.el (org-list-send-list): Locally bind variable
	`txt'.

2010-07-19  Eric Schulte  <schulte.eric@gmail.com>

	* org.el (org-reload): now also reloading babel files

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org-capture.el (org-capture-set-plist): Make sure txt is a string
	before calling `string-match'.
	(org-capture-templates): Fix customization type.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org-latex.el (org-export-latex-preprocess): Make a special case for \nbsp.
	(org-latex-entities): Remove the entry for \nbsp.
	(org-latex-entities-exceptions): Variable removed.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org-capture.el (org-capture-refile): Do not try to manipulate
	bookmark list.

	* org.el (org-refile): Use the correct bookmark here.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org-list.el (org-list-send-list): Parse list from its true beginning.

	* org.el (org-ctrl-c-ctrl-c): Maybe send the list when at a list item.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org.el (org-insert-link): Correctly determine if we should use
	a relative path.

2010-07-19  Nicolas Goaziou  <n.goaziou@gmail.com>

	* org-list.el (org-list-radio-list-templates): Fix templates.

2010-07-19  Nicolas Goaziou  <n.goaziou@gmail.com>

	* org-list.el (org-list-send-list): regexp defining the start of
	a radio list is now on par with the one used for radio tables.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org-entities.el (org-entities-help): Add a headline for
	the user-defined entities.

2010-07-19  Dirk-Jan C. Binnema  <djcb.bulk@gmail.com>  (tiny change)

	* org-agenda.el (org-agenda-action): Document capture key and add it
	to the prompt.

2010-07-19  Eric Schulte  <schulte.eric@gmail.com>

	* org-latex.el (org-export-latex-listings-langs): added (sqlite "SQL")

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org-latex.el (org-export-latex-first-lines): Do not mark
	meta lines for removal. Do not remove BABEL config lines during export

2010-07-19  David Maus  <dmaus@ictsoc.de>

	* org-capture.el (org-capture): Check if
	`org-capture-link-is-already-stored' is bound before evaluating.

2010-07-19  Eric Schulte  <schulte.eric@gmail.com>

	* org.el: added autoload for org-babel-do-load-languages

2010-07-19  Eric Schulte  <schulte.eric@gmail.com>

	* org-src.el (org-src-lang-modes): added sqlite to sql-mode

2010-07-19  David Maus  <dmaus@ictsoc.de>

	* org-feed.el: Change indentation to match coding style
	guideline.

2010-07-19  David Maus  <dmaus@ictsoc.de>

	* org-feed.el (org-feed-unescape, org-feed-parse-atom-feed): Load XML
	library if necessary.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org-beamer.el (org-beamer-amend-header): Standardize the
	header cookie for the beamer extra stuff.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org-beamer.el (org-beamer-amend-header): Put extra header
	last in header.

2010-07-19  David Maus  <dmaus@ictsoc.de>

	* org-exp-blocks.el (org-export-blocks-format-ditaa)
	(org-export-blocks-format-dot): Remove text properties of body before
	calculating cache hash.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org-latex.el (org-export-latex-tabular-environment): New option.
	(org-export-latex-tables): Use `org-export-latex-tabular-environment'.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org-compat.el (org-version-check): New function.

	* org-indent.el (org-indent-mode): Check for exact emacs version.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org-capture.el (org-capture-templates): Allow the template
	to come from a file or function call.
	(org-capture-place-entry): Get the template from file or function.

2010-07-19  David Maus  <dmaus@ictsoc.de>

	* org-agenda.el (org-agenda-bulk-action): Don't create marker for
	position if target is entire file.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org.el (org-autoload): Autoload a few more org-table functions.

2010-07-19  Eric Schulte  <schulte.eric@gmail.com>

	* org.el (org-babel-load-languages): adding ob-mscgen

2010-07-19  Eric Schulte  <schulte.eric@gmail.com>

	* org-latex.el (org-export-latex-tables): format string now
	matches options

2010-07-19  Eric Schulte  <schulte.eric@gmail.com>

	* org.el (org-babel-load-languages): this variable controls which
	languages will be loaded by org-babel.  It is customizable through
	the customize interface.

2010-07-19  Eric Schulte  <schulte.eric@gmail.com>

	* org-latex.el (org-export-latex-format-image): updated number of
	arguments to allow for an optional short-name

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org-indent.el (org-indent-mode): Refuse to turn on prior to Emacs 23.2

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org-capture.el (org-capture-set-target-location): Store
	exact positions for file+regexp and file+function targets.
	(org-capture-place-entry, org-capture-place-item)
	(org-capture-place-table-line, org-capture-place-plain-text): Respect
	exact positions.
	(org-capture-finalize): Make sure we are at the beginning of a line
	when fixing the empty lines after the entry.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org.el (org-entry-get-with-inheritance): New argument LITERAL-NIL.
	(org-entry-get): Pass `literal-nil' into
	`org-entry-get-with-inheritance'.
	(org-todo): React to nil values of the LOGGING property.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org.el (org-default-notes-file): Update docstring

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org.el (org-link-frame-setup): Use `org-gnus-no-new-news' as default.

2010-07-19  Eric Schulte  <schulte.eric@gmail.com>

	* org-exp.el (org-export-attach-captions-and-attributes): adding
	a shortname attribute to caption strings under the symbol name
	org-caption-shortn.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org.el (org-switchb): Renamed from `org-iswitchb'.  Improve
	docstring.
	(org-iswitchb): New alias.
	(org-ido-switchb): Make alias point to `org-switchb'.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org-capture.el (org-capture-fill-template): Respect
	time-of-day preference in template prompt.

2010-07-19  David Maus  <dmaus@ictsoc.de>

	* org-feed.el (org-feed-unescape): Remove superfluous lambda.

2010-07-19  David Maus  <dmaus@ictsoc.de>

	* org-wl.el (org-wl-disable-folder-check): New customization
	variable.
	(org-wl-open): Disable folder check depending on
	`org-wl-disable-folder-check'.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org-capture.el (org-capture-set-target-location): Fix
	file+function interpretation.

2010-07-19  David Maus  <dmaus@ictsoc.de>

	* org-feed.el (org-feed-parse-rss-entry): Unescape rss element
	content.

2010-07-19  David Maus  <dmaus@ictsoc.de>

	* org-feed.el (xml-entity-alist): Declare variable
	`xml-entity-alist' for byte compiler.

2010-07-19  David Maus  <dmaus@ictsoc.de>

	* org-feed.el (org-feed-unescape): New function.  Unescape
	protected entities.
	(org-feed-parse-atom-entry): Use function for atom:content
	type text and html.

2010-07-19  David Maus  <dmaus@ictsoc.de>

	* org-feed.el (org-feed-parse-rss-feed): Ignore case of rss
	element names.

2010-07-19  Bernt Hansen  <bernt@norang.ca>

	* org.el (org-time-string-to-absolute): Ignore cyclic repeater
	when displaying items on todays agenda date.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org-agenda.el (org-agenda-get-progress): Avoid reusing previous
	value of EXTRA.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org-publish.el (org-publish-initialize-cache): Make
	timestamp directory, the entire path to it.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org-exp.el (org-export-handle-comments): Make sure to check
	for protection in the comment line, and not in the line after it.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org-html.el (org-export-html-preprocess): Call org-format-latex,
	possibly with a protect-only argument.

	* org.el (org-format-latex): New argument PROTECT-ONLY.

2010-07-19  Eric Schulte  <schulte.eric@gmail.com>

	* org-exp.el (org-export-handle-table-metalines): this function
	removes table specific meta-lines, now that we aren't wiping
	everything that looks remotely like a comment at the end of the
	export process we have to be sure to catch all of the specific lines
	in org-exp.el

2010-07-19  Nicolas Goaziou  <n.goaziou@gmail.com>

	* org-exp.el: (org-export-select-backend-specific-text) Properly
	get rid of #+Backend and #+ATTR_Backend specifics to backends not
	matching the one we're exporting to.

2010-07-19  Eric Schulte  <schulte.eric@gmail.com>

	* Makefile (lisp/org-install.el): replacing babel files in
	construction of org-install.el

2010-07-19  Eric Schulte  <schulte.eric@gmail.com>

	* org-table.el (orgtbl-to-generic): added the :remove-newlines
	option which will strip newline characters from the text of table
	cells and replace then with "\n"

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org.el (org-confirm-shell-link-function):
	(org-confirm-elisp-link-function): Limit the values that can be set by
	file variables.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org.el (org-compute-latex-and-specials-regexp): Deal with
	string elements by discarding them.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org.el (org-iswitchb): Make sure to use at least iswitchb.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org-capture.el (org-capture-position-for-last-stored):
	org-capture-bookmark-last-stored-position): New functions.
	(org-capture-place-table-line): Better error catching.
	(org-capture-place-item):
	(org-capture-place-entry):
	(org-capture-place-plain-text): Call
	`org-capture-position-for-last-stored'.
	(org-capture-finalize): Just call
	`org-capture-bookmark-last-stored-position'.

2010-07-19  Eric Schulte  <schulte.eric@gmail.com>

	* org-exp.el (org-export-mark-blockquote-verse-center): fixed
	small bug, now grabbing match data before overwritten by looking-at
	this fixes a problem with remainders of #+end_quote lines appearing
	in exported output

2010-07-19  David Maus  <dmaus@ictsoc.de>

	* org.el (org-link-frame-setup): Add customization option for
	Wanderlust.

2010-07-19  Eric Schulte  <schulte.eric@gmail.com>

	* org-latex.el (org-export-latex-fixed-width): now checking
	org-example rather than org-protected on verbatim export, because by
	default all ": " prefixed lines are marked protected

2010-07-19  Eric Schulte  <schulte.eric@gmail.com>

	* org-latex.el (org-export-latex-fixed-width): check for
	protection before wrapping ": " lines as verbatim

2010-07-19  Eric Schulte  <schulte.eric@gmail.com>

	* org-exp.el (org-export-handle-comments): check for protection
	before removing comments

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org-entities.el (org-entities): Restructure the list.
	(org-entities-help): Turn the help output into a buffer
	in Org-mode, so that it becomes easier to find a symbol
	in the structure.
	(org-entities-create-table): Deal with new structure.

2010-07-19  David Maus  <dmaus@ictsoc.de>

	* org-agenda.el (org-write-agenda): Use backquotes to expand
	`flet' at compile time.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org.el (org-entry-properties): Make sure that standard property
	names are used even if the user has customized time keywords.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org-macs.el (org-not-nil): Return the value if not interpreted
	as nil.

	* org.el (org-entry-get):
	(org-entry-get-with-inheritance): Interpret the value "nil"
	as nil for properties.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org.el (org-switch-to-buffer-other-window): Return the buffer.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org-macs.el (org-not-nil): New function.

	* org.el (org-block-todo-from-children-or-siblings-or-parent):
	Use `org-not-nil' to interpret a property value of nil.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org.el (org-truely-invisible-p): New function.
	(org-beginning-of-line): Use `org-truely-invisible-p'.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org-agenda.el (org-agenda-get-timestamps): No errors
	while getting TODO state.
	(org-agenda-highlight-todo): No error when no keyword has
	been matched.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org.el (org-timestamp-change): New optional argument UPDOWN.
	Use this to identify calls from org-timestamp-up/down, so that we can
	skip by rounding minutes in this case.
	(org-timestamp-up):
	(org-timestamp-down):
	(org-timestamp-up-day):
	(org-timestamp-down-day): Call org-timestamp-change with the
	updown argument.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org-agenda.el (org-agenda-action): Make `c' key call org-capture.

	* org-capture.el: New file.

	* org-compat.el (org-get-x-clipboard): Function moved here from
	remember.el.

	* org-mks.el: New file

	* org.el (org-set-regexps-and-options): Allow statistic cookies as
	part of complex headlines.
	(org-find-olp): New argument THIS-BUFFER.  When set, assume that the
	OLP does not contain a file name.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org.el (org-mode): Set `comment-start' instead of changing the
	syntax of the `#' character.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org-exp.el (org-export-format-source-code-or-example): Mark examples
	by a property. o

	* org-html.el (org-export-html-close-lists-maybe): Check if raw
	HTML stuff was actually made from an example

2010-07-19  Eric Schulte  <schulte.eric@gmail.com>

	* Makefile (LISPF): let's not compile files that won't often be used.

2010-07-19  Bastien Guerry  <bzg@altern.org>

	* org-latex.el: items are no longer skipped when their first line
	ends on a protected element.

	* org-list.el: protected environments looking like lists are not
	exported anymore.

2010-07-19  Eric Schulte  <schulte.eric@gmail.com>

	* org-exp-blocks.el (org-export-blocks-preprocess):
	cleanup trailing newline after block

2010-07-19  Bastien Guerry  <bzg@altern.org>

	* org-exp.el: comment regexp now matches documentation. No more
	protection check when deleting comments before export.

2010-07-19  Bastien Guerry  <bzg@altern.org>

	* org-exp.el (org-export-preprocess-string):
	now using `org-export-handle-include-files-recurse' to resolve
	included files

2010-07-19  Bastien Guerry  <bzg@altern.org>

	* org-agenda.el (org-agenda-get-deadlines):
	(org-agenda-get-scheduled):

	* org.el (org-time-string-to-seconds):
	For deadline and scheduled agenda display ignore the cyclic repeater
	when calculating how many days late the task is.  If you have a weekly
	task and miss the date the agenda view will show more than a week late
	now instead of resetting on the cyclic repeating date.  This makes it
	much more obvious when you missed a repeating task after the repeater.

2010-07-19  Bastien Guerry  <bzg@altern.org>

	* org-exp.el (org-export-mark-blockquote-verse-center):
	Consider environments that end at eob.

2010-07-19  Mikael Fornius  <mfo@abc.se>

	* org.el (org-raise-scripts): Do not fontify sub/superscripts of text
	with face `org-special-keyword'. Makes property keys as :LAST_REPEAT:
	display correctly.

2010-07-19  Mikael Fornius  <mfo@abc.se>

	* org.el (org-at-property-p): Use save-match-data macro instead of let.

2010-07-19  Mikael Fornius  <mfo@abc.se>

	* org.el (test): Removed unused test function.

2010-07-19  Eric Schulte  <schulte.eric@gmail.com>

	* org-exp-blocks.el (org-export-blocks-preprocess): fixed typo

2010-07-19  Eric Schulte  <schulte.eric@gmail.com>

	* org-exp-blocks.el (org-export-blocks-postblock-hook): adding
	documentation to and turning into a defcustom

2010-07-19  Eric Schulte  <schulte.eric@gmail.com>

	* org-exp.el (org-get-file-contents): by un-setting prefix1 to ""
	instead of to nil we avoid errors when :prefix1 is defined, but
	prefix is not.

2010-07-19  Nicolas Goaziou  <n.goaziou@gmail.com>

	* org-latex.el (org-export-latex-preprocess): Environments coming
	from latex backend specific instructions (#+LaTeX) are already
	protected and won't be treated as normal environments.

2010-07-19  Bastien Guerry  <bzg@altern.org>

	* org-timer.el (org-timer-set-timer): Fix typo in the docstring.

2010-07-19  Bastien Guerry  <bzg@altern.org>

	* org-timer.el (org-timer-set-timer): Use a prefix argument.
	See the docstring of the function.

2010-07-19  Bastien Guerry  <bzg@altern.org>

	* org-timer.el (org-timer-set-timer): Fix bug about cancelling
	timers.

2010-07-19  David Maus  <dmaus@ictsoc.de>

	* org-w3m.el (org-w3m-copy-for-org-mode)
	(org-w3m-get-next-link-start, org-w3m-get-prev-link-start):
	Get text property directly, not using macro `w3m-anchor'.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org.el (org-emph-re): Document the match groups.

2010-07-19  Bernt Hansen <bernt@norang.ca>

	* org-clock.el (org-clock-in): Set `org-clock-clocking-in' to
	t before calling `org-clock-out', so that that function can
	know its call context.

2010-07-19  Bastien Guerry  <bzg@altern.org>

	* org-timer.el (org-timer-default-timer): New variable.
	(org-timer-set-timer): Use the new variable.  Also offer the
	possibility to replace the current timer by a new one.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org.el (org-kill-note-or-show-branches): Hide subtree before
	exposing the headings.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org.el (org-add-planning-info): Remove the empty line also
	if there is no whitespace at all in there.

	* org-table.el (org-table-align): Fix alignment of strings
	with invisible characters.

2010-07-19  David Maus  <dmaus@ictsoc.de>

	* org.el (org-refile-cache-get): Return empty list of targets
	when cache was cleared.
	(org-clone-subtree-with-time-shift): Maybe create ID property
	in cloned subtrees.
	(org-clone-delete-id): New customization variable.
	(org-clone-subtree-with-time-shift): Use customization
	variable `org-clone-delete-id'.
	(org-clone-subtree-with-time-shift): Remove empty property
	drawer in cloned subtrees.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org.el (org-refile-use-cache): New option.
	(org-refile-cache, org-refile-markers): New variable.
	(org-refile-marker, org-refile-cache-clear)
	(org-refile-cache-check-set, org-refile-cache-put)
	(org-refile-cache-get): New function.
	(org-get-refile-targets): Use the refile cache.

	* org-clock.el (org-clock-sum): Don't include running clock if
	the time block is wrong.

2010-07-19  John Wiegley  <jwiegley@gmail.com>

	* org-clock.el (org-clock-clock-in, org-clock-in): Added
	parameter `start-time'.
	(org-clock-resolve-clock): Added parameter `clock-out-time'.
	If set, and resolve-to is a past time, then the clock out
	event occurs at `clock-out-time' rather than at `resolve-to'.
	In this case, `resolve-to' becomes the clock in time.
	(org-clock-jump-to-current-clock): Created new global command
	to reveal the current clock.
	(org-clock-resolve): Added new commands g/G and j/J, and a
	help window describing all commands and their meaning.
	(org-clock-resolve-expert): New customization variable.
	(org-find-open-clocks): Fixed a bug that caused discovered
	clocks not to match up with the currently active clock.
	(org-resolve-clocks): Changed the argument
	`also-non-dangling-p' to `only-dangling-p', since due to a bug
	this was the default behavior all along.

2010-07-19  David Maus  <dmaus@ictsoc.de>

	* org-id.el (org-id-uuid): New function.  Return string with
	random (version 4) UUID.
	(org-id-method): Make 'uuid the new default value.
	(org-id-new): Use `org-id-uuid' if call to uuidgen program
	does not return a UUID.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org-latex.el (org-export-latex-format-image): Add support
	for multicolumn figures in LaTeX.

2010-07-19  David Maus  <dmaus@ictsoc.de>

	* org.el (org-clone-subtree-with-time-shift): Remove ID
	property of original subtree in cloned subtrees.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org-exp.el (org-export-format-source-code-or-example):
	XEmacs compatibility.

	* org-latex.el (org-export-latex-tables): Accept comma in
	align string.

	* org-docbook.el (org-export-docbook-xslt-stylesheet): New option.
	(org-export-docbook-xslt-proc-command): Fix docstring.
	(org-export-docbook-xsl-fo-proc-command): Fix docstring.
	(org-export-as-docbook-pdf): Improve
	formatting of the xslt command.

	* org-exp.el (org-infile-export-plist): Check for XSLT setting.

	* org.el (org-file-contents): Improve error message.
	(org-set-regexps-and-options): Remove spaces at both ends.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org-docbook.el (org-export-as-docbook-pdf): Improve
	formatting of the xslt command.

2010-07-19  Sebastian Rose  <sebastian_rose@gmx.de>

	* org-publish.el (org-publish-cache): Use one big hashmap for
	each project defined in `org-publish-project-alist'.
	(initialize-files-alist): Function removed.
	(org-publish-validate-link):  Function removed.
	(org-publish-get-base-files): Add variable `sitemap-requested'
	to avoid sorting where possible.
	(org-publish-get-files): Function removed.
	(org-publish-get-project-from-filename): Make independent of
	file list.
	(org-publish-file): New argument NO-CACHE.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org.el (org-beginning-of-defun, org-end-of-defun): New
	functions.
	(org-mode): Install the `org-beginning-of-defun' and
	`org-end-of-defun' functions.
	(org-pretty-entities): New option.
	(org-toggle-pretty-entities): New command.
	(org-fontify-entities): New function.
	(org-startup-options): New keywords for pretty entities.
	(org-set-font-lock-defaults): Call the pretty entities
	function.

	* org-latex.el (org-export-latex-keywords-maybe): Protect the
	TODO markup.

2010-07-19  Mikael Fornius  <mfo@abc.se>

	* org-habit.el (org-habit-build-graph): Help-echo date when
	mouse is over stars.

2010-07-19  Jan Böker  <jan.boecker@jboecker.de>

	* org.el (org-file-apps): Improve docstring to reflect
	grouping matches

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org.el (org-set-startup-visibility): Fix empty line display.

	* org-latex.el (org-export-latex-links): Use the formatting
	function of the link type, if it is available.

	* org-table.el (org-table-get-remote-range): Return to
	original buffer when retrieving remote reference.

	* org.el (org-display-inline-images): Do the entire buffer,
	not just the narrowed region.  Clear the cache.
	(org-display-inline-images): Match mode file paths.

2010-07-19  David Maus  <dmaus@ictsoc.de>

	* org-wl.el (org-wl-store-link-folder): Don't throw error when
	called on WL folder group.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org.el (org-replace-escapes): Make sure the cdr is not nil.
	(org-read-date): Make `M-v' and `C-v' scroll the popup calendar.
	(org-mode): Revert comment syntax changes.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org.el (org-sparse-tree): Make `C-c / t' search for all TODO
	keywords, and `C-c / T' for a specific one.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org.el (org-mode): Fix comment syntax settings.

	* org-src.el (org-edit-src-allow-write-back-p): Define
	variable.

	* org.el (org-inline-image-overlays): New variable.
	(org-toggle-inline-images, org-display-inline-images)
	(org-remove-inline-images): New commands.
	(org-mode-map): Define a key for `org-toggle-inline-images'.

2010-07-19  David Maus  <dmaus@ictsoc.de>

	* org-wl.el (org-wl-message-field): New function.  Return
	content of header field in message entity.
	(org-wl-store-link): Call `org-wl-store-link-folder' or
	`org-wl-store-link-message' depending on major-mode.
	(org-wl-store-link-folder): New function.  Store link to
	Wanderlust folder.
	(org-wl-store-link-message): New function.  Store link to
	Wanderlust message.
	(org-wl-store-link-message): Store link to message while
	visiting message.
	(org-wl-open): Don't try to jump to message when opening a
	folder link.

2010-07-19  David Maus  <dmaus@ictsoc.de>

	* org.el (org-replace-escapes): Avoid infinite loop when
	replace string contains escape sequence it replaces.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org-crypt.el (org-crypt-key-for-heading): Use symmetric
	encryption when now key is set.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org-table.el (org-table-recalculate-buffer-tables)
	(org-table-iterate-buffer-tables): New commands.

	* org.el (org-check-for-hidden): When there is a region, skip
	the check.

2010-07-19  Dan Davison  <davison@stats.ox.ac.uk>

	* org-src.el (org-edit-src-code): allow-write-back-p had
	erroneously been omitted from let binding

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org-agenda.el (org-sorting-choice): New sorting type alpha.
	(org-cmp-alpha): New defsubst.
	(org-em): New defsubst.
	(org-entries-lessp): Only compute needed comparisons.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org-html.el (org-format-org-table-html): Test all columns
	for number content.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org-latex.el (org-export-latex-treat-sub-super-char): Make
	sure parenthesis matching is consistent.

	* org-table.el (org-table-colgroup-line-p)
	(org-table-cookie-line-p): New functions.

	* org-exp.el (org-table-clean-before-export): Better tests for
	colgroup and cookie lines.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org-agenda.el (org-agenda-goto): Push a mark before changing
	the position.

	* org-footnote.el (org-footnote): New group.
	(org-footnote-section)
	(org-footnote-tag-for-non-org-mode-files): Fix typos.

	* org-list.el (org-end-of-item-text-before-children): Also do
	the right thing at the end of a file.

	* org.el (org-set-packages-alist, org-get-packages-alist): New
	function.
	(org-export-latex-default-packages-alist)
	(org-export-latex-packages-alist): Add extra flag to
	each package, indicating if it should be used for snippets.
	(org-create-formula-image): Add the snippet argument.
	(org-splice-latex-header): New argument SNIPPET-P, pass it
	through to `org-latex-packages-to-string'.
	(org-latex-packages-to-string): New argument SNIPPET-P.

	* org-latex.el (org-export-latex-make-header): Add the snippet
	argument.

	* org-docbook.el (org-export-as-docbook): Implement ordered
	lists starting at some offset.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org.el (org-link-types, org-open-at-point): Add doi links.

	* org-ascii.el (org-export-ascii-preprocess): Remove list
	startcounter cookies.

	* org-list.el (org-renumber-ordered-list): Respect counter
	start values.

	* org-latex.el (org-export-latex-lists): Accept ordered list
	item offset cookie.

	* org-html.el (org-export-as-html): Accept ordered list
	item offset cookie.

	* org-indent.el (org-indent-mode): Turn off `indent-tabs-mode'
	which messes up alignment of tags.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org-clock.el (org-clock-cancel, org-clock-out): Make sure
	the modeline display is removed.

	* org-exp.el (org-export-format-drawer-function): Fix
	docstring.

	* org-agenda.el (org-agenda-refile): New optional argument
	NO-UPDATE.
	(org-agenda-refile): Call `org-agenda-redo' unless NO-UPDATE
	is set.
	(org-agenda-bulk-action): Call the refile command with updates
	suppressed - but arrange for `org-agenda-redo' to be called at
	the end.

	* org.el (org-mode): Make table mapping quiet.
	(org-table-map-tables): New optional argument QUIETLY.

	* org-ascii.el (org-export-ascii-preprocess): Make table
	mapping quiet.

	* org-html.el (org-export-as-html, org-html-level-start): Change
	XHTML IDs to not use dots.

	* org-exp.el (org-export-define-heading-targets): Change
	XHTML IDs to not use dots.

	* org-docbook.el (org-export-docbook-level-start): Change
	XHTML IDs to not use dots.

	* org-latex.el (org-export-as-latex): Make sure that the
	result buffer is in latex-mode.

	* org.el (org-shiftup-final-hook, org-shiftdown-final-hook)
	(org-shiftleft-final-hook, org-shiftright-final-hook): New
	hooks.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org-table.el (org-table-justify-field-maybe): Make sure that
	inserting a value does not turn a line into a hline.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org-clock.el (org-clock-sum): New argument HEADLINE-FILTER.
	(org-clock-sum): Add property to selected headlines.
	(org-dblock-write:clocktable): Make tags matcher.

	* org.el (org-set-autofill-regexps): XEmacs compatibility.

	* org-latex.el (org-export-latex-set-initial-vars): Allow "-"
	in latex class definitions

	* org.el (org-shiftup-hook, org-shiftdown-hook)
	(org-shiftleft-hook, org-shiftright-hook): New hooks.

	* org-entities.el (org-entities): Use \land and \lor for logical
	operators.

	* org.el (org-shiftmetaleft, org-shiftmetaright): Call the subtree
	indentation commands.
	(org-hidden-tree-error): New defsubst.
	(org-metaleft, org-metaright): Check for hidden stuff and throw an
	error.
	(org-check-for-hidden): New function.

	* org-list.el (org-item-re): New function.
	(org-at-item-p): Use `org-item-re'.
	(org-end-of-item-text-before-children): New function.
	(org-outdent-item, org-indent-item): Arrange for leaving the
	subtree alone.
	(org-outdent-item-tree, org-indent-item-tree): New argument
	NO-SUBTREE.
	(org-indent-item-tree): Use `org-end-of-item-text-before-children'
	to find the end for processing while ignoring the subtree.

	* org-publish.el (org-publish-sitemap-sort-alphabetically)
	(org-publish-sitemap-sort-folders)
	(org-publish-sitemap-sort-ignore-case): New options.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org-publish.el (org-publish-compare-directory-files): Fix sorting.

	* org-compat.el (org-get-x-clipboard-compat): Use (featurep 'xemacs).

	* org-publish.el (org-publish-project-alist): Update docstring.
	(org-publish-file-title-cache): New variable.
	(org-publish-initialize-files-alist): Initialize
	`org-publish-initialize-files-alist' to nil.
	(org-publish-sort-directory-files): New function.
	(org-publish-projects): Access the new properties.
	(org-publish-find-title): Use the file title cache.
	(org-publish-find-title): Build the file title cache.
	(org-publish-get-base-files-1): Sort files.
	(org-publish-aux-preprocess): Do not throw an error when before
	the first headline.  Allow an empty target, meaning to link just
	to the file.
	(org-publish-index-generate-theindex.inc): Check if there is
	actually a target and only then add it to the link.
	(org-publish-projects): Fix a remaining issue with the last commit

	* org-html.el (org-export-as-html): Treat verse as open/close
	paragraph.
	(org-export-html-close-lists-maybe): Allow to splice raw HTML into
	and out of lists.

2010-07-19  Dan Davison  <davison@stats.ox.ac.uk>

	* org-src.el (org-edit-src-code): Allow the org-src edit buffer to
	be used in a read-only mode.
	(org-edit-src-code): Different message in read-only mode

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org-src.el (org-edit-src-find-region-and-lang): Test for
	table.el as late as possible.

	* org-colview-xemacs.el: Make sure this file is never loaded into
	Emacs.  Remove all tests for XEmacs.

	* org-colview.el: Make sure this file is never loaded into XEmacs.

	* org-agenda.el (org-highlight, org-unhighlight): Use direct
	overlay calls.

	* org.el (org-key): Apply the translations defined in
	`org-xemacs-key-equivalents'.

	* org-mouse.el (org-mode-hook): Use `org-defkey'.

	* org-compat.el (org-xemacs-key-equivalents): New constant.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org-inlinetask.el (org-inlinetask-defaut-state): New option.
	(org-inlinetask-insert-task): Use `org-inlinetask-defaut-state'.
	Obey `org-odd-levels-only'.

	* org-compat.el (org-find-overlays): Use overlays-in/at.

	* org.el (org-remove-empty-overlays-at)
	(org-outline-overlay-data, org-hide-block-toggle)
	(org-format-latex, org-context): Use overlays-in/at.

	* org-src.el (org-edit-src-exit): Use overlays-in/at.

	* org-agenda.el (org-agenda-mark-clocking-task)
	(org-agenda-fontify-priorities, org-agenda-dim-blocked-tasks)
	(org-agenda-entry-text-hide)
	(org-agenda-fix-tags-filter-overlays-at)
	(org-agenda-bulk-remove-overlays): Use overlays-in/at.

	* org-compat.el (org-overlays-at): Function removed.
	(org-overlays-in): Function removed.

2010-07-19  Bastien Guerry  <bzg@altern.org>

	* org-clock.el (org-clock-set-current): Just return the headline
	itself, strip the TODO keyword, the priority cookie and the tags.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org-compat.el (org-xemacs-without-invisibility): New macro.
	(org-xemacs-without-invisibility): New macro.
	(org-indent-to-column, org-indent-line-to, org-move-to-column):
	Redefine using the macro `org-xemacs-without-invisibility'.

	* org.el (org-mode, org-org-menu): Use `add-to-invisibility-spec'.

	* org-table.el (orgtbl-mode): Use `add-to-invisibility-spec'.

	* org-compat.el (org-make-overlay, org-delete-overlay)
	(org-overlay-start, org-overlay-end, org-overlay-put)
	(org-overlay-get, org-overlay-move, org-overlay-buffer): Functions
	removed.
	(org-add-to-invisibility-spec): Function removed.

	* org-html.el (org-export-as-html-and-open): Add argument to
	kill-buffer.

	* org-habit.el (require): `calendar' is now required already by
	org.el on top level.

	* org-clock.el (require): `calendar' is now required already by
	org.el on top level.

	* org-agenda.el (require, org-timeline, org-agenda-list)
	(org-todo-list, org-agenda-to-appt): `calendar' is now required
	already by org.el on top level.

	* org.el (org-export-latex-fix-inputenc): Declare function.

	* org-agenda.el (org-agenda-goto-calendar): Do not bind obsolete
	variables.

	* org.el (calendar): Require calendar now on top level in org.el
	and define aliases to new variables when needed.
	(org-read-date, org-goto-calendar): Do not bind obsolete
	variables.

	* org-clock.el (org-clock-out, org-clock-cancel): Get rid of
	compilation warning, add comment that this cannot be done with
	`with-current-buffer'.

	* org-wl.el (org-wl-open): Use `with-current-buffer'.

	* org.el (overlay, org-remove-empty-overlays-at)
	(org-outline-overlay-data, org-set-outline-overlay-data)
	(org-show-block-all, org-hide-block-toggle)
	(org-highlight-new-match, org-remove-occur-highlights)
	(org-tags-overlay, org-fast-tag-selection, org-date-ovl)
	(org-read-date, org-read-date-display, org-eval-in-calendar)
	(org-format-latex, org-context)
	(org-speedbar-restriction-lock-overlay)
	(org-speedbar-set-agenda-restriction): Use the normal overlay API.

	* org-table.el (org-table-add-rectangle-overlay)
	(org-table-remove-rectangle-highlight)
	(org-table-overlay-coordinates)
	(org-table-toggle-coordinate-overlays): Use the normal overlay
	API.

	* org-src.el (org-edit-src-code, org-edit-fixed-width-region)
	(org-edit-src-exit, org-src-mode-configure-edit-buffer): Use the
	normal overlay API.

	* org-colview.el (org-columns-new-overlay)
	(org-columns-display-here, org-columns-remove-overlays)
	(org-columns-edit-value, org-columns-next-allowed-value)
	(org-columns-update): Use the normal overlay API.

	* org-clock.el (org-clock-out, org-clock-cancel)
	(org-clock-put-overlay, org-clock-remove-overlays): Use the normal
	overlay API.

	* org-agenda.el (org-agenda-mark-filtered-text)
	(org-agenda-mark-clocking-task, org-agenda-fontify-priorities)
	(org-agenda-dim-blocked-tasks, org-agenda-entry-text-show-here)
	(org-agenda-entry-text-hide)
	(org-agenda-restriction-lock-overlay)
	(org-agenda-set-restriction-lock)
	(org-agenda-filter-by-tag-hide-line)
	(org-agenda-fix-tags-filter-overlays-at)
	(org-agenda-filter-by-tag-show-all, org-hl)
	(org-agenda-goto-calendar, org-agenda-bulk-mark)
	(org-agenda-bulk-remove-overlays): Use the normal overlay API.

	* org-freemind.el (org-freemind-from-org-mode-node)
	(org-freemind-from-org-mode, )
	(org-freemind-from-org-sparse-tree, org-freemind-to-org-mode): Use
	interactive-p instead of called-interactively, because this is
	backward compatible with older Emacsen I still support..

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org-exp.el (org-export-define-heading-targets): Fix bug in
	regexp finding ID and CUSTOM_ID properties.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org-footnote.el (org-footnote-goto-previous-reference): Renamed
	from `org-footnote-goto-next-reference'.

	* org.el (org-auto-repeat-maybe): Only record LAST_REPEAT if
	org-log-repeat is non-nil, or if there is clocking data in the
	entry.

	* org-crypt.el (org-encrypt-entry): Improve mapping behavior.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org.el (org-align-all-tags): New command.

2010-07-19  David Maus  <dmaus@ictsoc.de>

	* org-wl.el (org-wl-link-remove-filter): New customizable
	variable.  If non-nil, filter conditions are stripped when storing
	link to message in filter folder.
	(org-wl-shimbun-prefer-web-links): New customizable variable.  If
	non-nil, links to shimbun messages are created as web links to
	message source.
	(org-wl-nntp-prefer-web-links): New customizable variable.  If
	non-nil, links to nntp message are created as web links to gmane
	or googlegroups.
	(org-wl-namazu-default-index): New customizable variable.
	Directory of namazu search index that should be used as default
	when opening a link in a search folder.
	(org-wl-folder-types): New constant.  Wanderlust folder type
	indicators.
	(org-wl-folder-type): New function.  Return type of Wanderlust
	folder.
	(org-wl-store-link): Create web links for shimbun or nntp messages
	and strip filter conditions depending on customizable variables.
	(org-wl-open): Open namazu search folder for message when called
	with prefix.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org.el (org-remove-if, org-remove-if-not): New functions.
	(org-open-file): Use internal remove-if functions.

2010-07-19  Jan Böcker  <jan.boecker@jboecker.de>

	* org.el (org-file-apps-entry-match-against-dlink-p): new function.
	(org-file-apps-ex): remove variable.
	(org-open-file): Integrate org-file-apps-ex functionality back
	into org-file-apps, and decide whether to match a regexp against
	the link or the filename using org-file-apps-entry-uses-grouping-p.

2010-07-19  Jan Böcker  <jan.boecker@jboecker.de>

	* org.el (org-file-apps-ex): new variable.
	(org-open-file): Before considering org-file-apps, first match the
	regexps from org-file-apps-ex against the whole link. See
	docstring of org-file-apps-ex.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org.el (org-export-latex-default-packages-alist): Remove
	microtype package.
	(org-todo-repeat-to-state): New variable.
	(org-auto-repeat-maybe): Allow user-selected target states.
	(org-default-properties): Add the new property REPEAT_TO_STATE.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org-mobile.el (org-mobile-check-setup): Make sure that there is
	a binary to compute checksums.

2010-07-19  Carsten Dominik  <carsten.dominik@gmail.com>

	* org.texi: Add macros to get plain quotes in PDF output.
	List additional contributors.
	(Capture): New section, replaces the section about remember.
	(Working With Source Code): New chapter, focused on documenting Org
	Babel.
	(Code evaluation security): New section.
	(MobileOrg): Document DropBox support.
	(TaskJuggler export): Document taskjuggler and Gantt chart support.
	(Special symbols): Show how to display UTF8 characters for entities.
	(Global TODO list): Clarify the use of the "M" key and the differences
	to the "m" key.
	(RSS Feeds): Mention Atom feeds as well.
	(Setting tags): Remove paragraph about
	`org-complete-tags-always-offer-all-agenda-tags'.
2010-07-19 11:47:27 +02:00

354 lines
13 KiB
EmacsLisp

;;; org-plot.el --- Support for plotting from Org-mode
;; Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
;;
;; Author: Eric Schulte <schulte dot eric at gmail dot com>
;; Keywords: tables, plotting
;; Homepage: http://orgmode.org
;; Version: 7.01
;;
;; This file is part of GNU Emacs.
;;
;; GNU Emacs is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
;; Borrows ideas and a couple of lines of code from org-exp.el.
;; Thanks to the org-mode mailing list for testing and implementation
;; and feature suggestions
;;; Code:
(require 'org)
(require 'org-exp)
(require 'org-table)
(eval-when-compile
(require 'cl))
(declare-function gnuplot-delchar-or-maybe-eof "ext:gnuplot" (arg))
(declare-function gnuplot-mode "ext:gnuplot" ())
(declare-function gnuplot-send-buffer-to-gnuplot "ext:gnuplot" ())
(defvar org-plot/gnuplot-default-options
'((:plot-type . 2d)
(:with . lines)
(:ind . 0))
"Default options to gnuplot used by `org-plot/gnuplot'.")
(defvar org-plot-timestamp-fmt nil)
(defun org-plot/add-options-to-plist (p options)
"Parse an OPTIONS line and set values in the property list P.
Returns the resulting property list."
(let (o)
(when options
(let ((op '(("type" . :plot-type)
("script" . :script)
("line" . :line)
("set" . :set)
("title" . :title)
("ind" . :ind)
("deps" . :deps)
("with" . :with)
("file" . :file)
("labels" . :labels)
("map" . :map)
("timeind" . :timeind)
("timefmt" . :timefmt)))
(multiples '("set" "line"))
(regexp ":\\([\"][^\"]+?[\"]\\|[(][^)]+?[)]\\|[^ \t\n\r;,.]*\\)")
(start 0)
o)
(while (setq o (pop op))
(if (member (car o) multiples) ;; keys with multiple values
(while (string-match
(concat (regexp-quote (car o)) regexp)
options start)
(setq start (match-end 0))
(setq p (plist-put p (cdr o)
(cons (car (read-from-string
(match-string 1 options)))
(plist-get p (cdr o)))))
p)
(if (string-match (concat (regexp-quote (car o)) regexp)
options)
(setq p (plist-put p (cdr o)
(car (read-from-string
(match-string 1 options)))))))))))
p)
(defun org-plot/goto-nearest-table ()
"Move the point forward to the beginning of nearest table.
Return value is the point at the beginning of the table."
(interactive) (move-beginning-of-line 1)
(while (not (or (org-at-table-p) (< 0 (forward-line 1)))))
(goto-char (org-table-begin)))
(defun org-plot/collect-options (&optional params)
"Collect options from an org-plot '#+Plot:' line.
Accepts an optional property list PARAMS, to which the options
will be added. Returns the resulting property list."
(interactive)
(let ((line (thing-at-point 'line)))
(if (string-match "#\\+PLOT: +\\(.*\\)$" line)
(org-plot/add-options-to-plist params (match-string 1 line))
params)))
(defun org-plot-quote-timestamp-field (s)
"Convert field S from timestamp to Unix time and export to gnuplot."
(format-time-string org-plot-timestamp-fmt (org-time-string-to-time s)))
(defun org-plot-quote-tsv-field (s)
"Quote field S for export to gnuplot."
(if (string-match org-table-number-regexp s) s
(if (string-match org-ts-regexp3 s)
(org-plot-quote-timestamp-field s)
(concat "\"" (mapconcat 'identity (split-string s "\"") "\"\"") "\""))))
(defun org-plot/gnuplot-to-data (table data-file params)
"Export TABLE to DATA-FILE in a format readable by gnuplot.
Pass PARAMS through to `orgtbl-to-generic' when exporting TABLE."
(with-temp-file
data-file
(make-local-variable 'org-plot-timestamp-fmt)
(setq org-plot-timestamp-fmt (or
(plist-get params :timefmt)
"%Y-%m-%d-%H:%M:%S"))
(insert (orgtbl-to-generic
table
(org-combine-plists
'(:sep "\t" :fmt org-plot-quote-tsv-field)
params))))
nil)
(defun org-plot/gnuplot-to-grid-data (table data-file params)
"Export the data in TABLE to DATA-FILE for gnuplot.
This means in a format appropriate for grid plotting by gnuplot.
PARAMS specifies which columns of TABLE should be plotted as independent
and dependant variables."
(interactive)
(let* ((ind (- (plist-get params :ind) 1))
(deps (if (plist-member params :deps)
(mapcar (lambda (val) (- val 1)) (plist-get params :deps))
(let (collector)
(dotimes (col (length (first table)))
(setf collector (cons col collector)))
collector)))
row-vals (counter 0))
(when (>= ind 0) ;; collect values of ind col
(setf row-vals (mapcar (lambda (row) (setf counter (+ 1 counter))
(cons counter (nth ind row))) table)))
(when (or deps (>= ind 0)) ;; remove non-plotting columns
(setf deps (delq ind deps))
(setf table (mapcar (lambda (row)
(dotimes (col (length row))
(unless (memq col deps)
(setf (nth col row) nil)))
(delq nil row))
table)))
;; write table to gnuplot grid datafile format
(with-temp-file data-file
(let ((num-rows (length table)) (num-cols (length (first table)))
front-edge back-edge)
(flet ((gnuplot-row (col row value)
(setf col (+ 1 col)) (setf row (+ 1 row))
(format "%f %f %f\n%f %f %f\n"
col (- row 0.5) value ;; lower edge
col (+ row 0.5) value))) ;; upper edge
(dotimes (col num-cols)
(dotimes (row num-rows)
(setf back-edge
(concat back-edge
(gnuplot-row (- col 1) row (string-to-number
(nth col (nth row table))))))
(setf front-edge
(concat front-edge
(gnuplot-row col row (string-to-number
(nth col (nth row table)))))))
;; only insert once per row
(insert back-edge) (insert "\n") ;; back edge
(insert front-edge) (insert "\n") ;; front edge
(setf back-edge "") (setf front-edge "")))))
row-vals))
(defun org-plot/gnuplot-script (data-file num-cols params &optional preface)
"Write a gnuplot script to DATA-FILE respecting the options set in PARAMS.
NUM-COLS controls the number of columns plotted in a 2-d plot.
Optional argument PREFACE returns only option parameters in a
manner suitable for prepending to a user-specified script."
(let* ((type (plist-get params :plot-type))
(with (if (equal type 'grid)
'pm3d
(plist-get params :with)))
(sets (plist-get params :set))
(lines (plist-get params :line))
(map (plist-get params :map))
(title (plist-get params :title))
(file (plist-get params :file))
(ind (plist-get params :ind))
(time-ind (plist-get params :timeind))
(timefmt (plist-get params :timefmt))
(text-ind (plist-get params :textind))
(deps (if (plist-member params :deps) (plist-get params :deps)))
(col-labels (plist-get params :labels))
(x-labels (plist-get params :xlabels))
(y-labels (plist-get params :ylabels))
(plot-str "'%s' using %s%d%s with %s title '%s'")
(plot-cmd (case type
('2d "plot")
('3d "splot")
('grid "splot")))
(script "reset") plot-lines)
(flet ((add-to-script (line) (setf script (format "%s\n%s" script line))))
(when file ;; output file
(add-to-script (format "set term %s" (file-name-extension file)))
(add-to-script (format "set output '%s'" file)))
(case type ;; type
('2d ())
('3d (if map (add-to-script "set map")))
('grid (if map
(add-to-script "set pm3d map")
(add-to-script "set pm3d"))))
(when title (add-to-script (format "set title '%s'" title))) ;; title
(when lines (mapc (lambda (el) (add-to-script el)) lines)) ;; line
(when sets ;; set
(mapc (lambda (el) (add-to-script (format "set %s" el))) sets))
(when x-labels ;; x labels (xtics)
(add-to-script
(format "set xtics (%s)"
(mapconcat (lambda (pair)
(format "\"%s\" %d" (cdr pair) (car pair)))
x-labels ", "))))
(when y-labels ;; y labels (ytics)
(add-to-script
(format "set ytics (%s)"
(mapconcat (lambda (pair)
(format "\"%s\" %d" (cdr pair) (car pair)))
y-labels ", "))))
(when time-ind ;; timestamp index
(add-to-script "set xdata time")
(add-to-script (concat "set timefmt \""
(or timefmt ;; timefmt passed to gnuplot
"%Y-%m-%d-%H:%M:%S") "\"")))
(unless preface
(case type ;; plot command
('2d (dotimes (col num-cols)
(unless (and (equal type '2d)
(or (and ind (equal (+ 1 col) ind))
(and deps (not (member (+ 1 col) deps)))))
(setf plot-lines
(cons
(format plot-str data-file
(or (and ind (> ind 0)
(not text-ind)
(format "%d:" ind)) "")
(+ 1 col)
(if text-ind (format ":xticlabel(%d)" ind) "")
with
(or (nth col col-labels) (format "%d" (+ 1 col))))
plot-lines)))))
('3d
(setq plot-lines (list (format "'%s' matrix with %s title ''"
data-file with))))
('grid
(setq plot-lines (list (format "'%s' with %s title ''"
data-file with)))))
(add-to-script
(concat plot-cmd " " (mapconcat 'identity (reverse plot-lines) ",\\\n "))))
script)))
;;-----------------------------------------------------------------------------
;; facade functions
;;;###autoload
(defun org-plot/gnuplot (&optional params)
"Plot table using gnuplot. Gnuplot options can be specified with PARAMS.
If not given options will be taken from the +PLOT
line directly before or after the table."
(interactive)
(require 'gnuplot)
(save-window-excursion
(delete-other-windows)
(when (get-buffer "*gnuplot*") ;; reset *gnuplot* if it already running
(with-current-buffer "*gnuplot*"
(goto-char (point-max))
(gnuplot-delchar-or-maybe-eof nil)))
(org-plot/goto-nearest-table)
;; set default options
(mapc
(lambda (pair)
(unless (plist-member params (car pair))
(setf params (plist-put params (car pair) (cdr pair)))))
org-plot/gnuplot-default-options)
;; collect table and table information
(let* ((data-file (make-temp-file "org-plot"))
(table (org-table-to-lisp))
(num-cols (length (if (eq (first table) 'hline) (second table)
(first table)))))
(while (equal 'hline (first table)) (setf table (cdr table)))
(when (equal (second table) 'hline)
(setf params (plist-put params :labels (first table))) ;; headers to labels
(setf table (delq 'hline (cdr table)))) ;; clean non-data from table
;; collect options
(save-excursion (while (and (equal 0 (forward-line -1))
(looking-at "[[:space:]]*#\\+"))
(setf params (org-plot/collect-options params))))
;; dump table to datafile (very different for grid)
(case (plist-get params :plot-type)
('2d (org-plot/gnuplot-to-data table data-file params))
('3d (org-plot/gnuplot-to-data table data-file params))
('grid (let ((y-labels (org-plot/gnuplot-to-grid-data
table data-file params)))
(when y-labels (plist-put params :ylabels y-labels)))))
;; check for timestamp ind column
(let ((ind (- (plist-get params :ind) 1)))
(when (and (>= ind 0) (equal '2d (plist-get params :plot-type)))
(if (= (length
(delq 0 (mapcar
(lambda (el)
(if (string-match org-ts-regexp3 el)
0 1))
(mapcar (lambda (row) (nth ind row)) table)))) 0)
(plist-put params :timeind t)
;; check for text ind column
(if (or (string= (plist-get params :with) "hist")
(> (length
(delq 0 (mapcar
(lambda (el)
(if (string-match org-table-number-regexp el)
0 1))
(mapcar (lambda (row) (nth ind row)) table)))) 0))
(plist-put params :textind t)))))
;; write script
(with-temp-buffer
(if (plist-get params :script) ;; user script
(progn (insert
(org-plot/gnuplot-script data-file num-cols params t))
(insert "\n")
(insert-file-contents (plist-get params :script))
(goto-char (point-min))
(while (re-search-forward "$datafile" nil t)
(replace-match data-file nil nil)))
(insert
(org-plot/gnuplot-script data-file num-cols params)))
;; graph table
(gnuplot-mode)
(gnuplot-send-buffer-to-gnuplot))
;; cleanup
(bury-buffer (get-buffer "*gnuplot*"))
(run-with-idle-timer 0.1 nil (lambda () (delete-file data-file))))))
(provide 'org-plot)
;; arch-tag: 5763f7c6-0c75-416d-b070-398ee4ec0eca
;;; org-plot.el ends here