mirror of
https://git.savannah.gnu.org/git/emacs/org-mode.git
synced 2024-09-29 18:36:26 +00:00
Release 4.30
This commit is contained in:
parent
fcf5c84bc8
commit
9b9f2f6070
27
org-install.el
Normal file
27
org-install.el
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
;;; org-install.el --- Autoloads for org.el
|
||||||
|
|
||||||
|
(autoload 'org-mode "org" "Org mode" t)
|
||||||
|
(autoload 'org-diary "org" "Diary entries from Org mode.")
|
||||||
|
(autoload 'org-agenda "org" "Multi-file agenda from Org mode." t)
|
||||||
|
(autoload 'org-store-link "org" "Store a link to the current location." t)
|
||||||
|
(autoload 'orgtbl-mode "org" "Org tables as a minor mode." t)
|
||||||
|
(autoload 'turn-on-orgtbl "org" "Org tables as a minor mode.")
|
||||||
|
(autoload 'org-cycle "org" "Subtree visibility cycling." t)
|
||||||
|
(autoload 'org-global-cycle "org" "Global visibility cycling." t)
|
||||||
|
(autoload 'org-agenda-list "org" "Produce calendar-loke agenda view." t)
|
||||||
|
(autoload 'org-todo-list "org" "Produce global TODO list." t)
|
||||||
|
(autoload 'org-tags-view "org" "Produce global TAGS agenda view." t)
|
||||||
|
(autoload 'org-remember-annotation "org")
|
||||||
|
(autoload 'org-remember-apply-template "org")
|
||||||
|
(autoload 'org-remember-handler "org")
|
||||||
|
(autoload 'org-export-icalendar-all-agenda-files "org"
|
||||||
|
"Export all files in `org-agenda-files' to iCalendar .ics files." t)
|
||||||
|
(autoload 'org-export-icalendar-combine-agenda-files "org"
|
||||||
|
"Export all files in `org-agenda-files' to a single combined iCalendar file." t)
|
||||||
|
(autoload 'org-publish-current-file "org-publish" "Publish current file." t)
|
||||||
|
(autoload 'org-publish-current-project "org-publish"
|
||||||
|
"Publish all files of current project." t)
|
||||||
|
(autoload 'org-publish "org-publish" "Publish a project." t)
|
||||||
|
(autoload 'org-publish-all "org-publish" "Publish all projects." t)
|
||||||
|
|
||||||
|
(provide 'org-install)
|
561
org-publish.el
Normal file
561
org-publish.el
Normal file
|
@ -0,0 +1,561 @@
|
||||||
|
;;; org-publish.el --- publish related org-mode files as a website
|
||||||
|
|
||||||
|
;; Copyright (C) 2006 David O'Toole
|
||||||
|
|
||||||
|
;; Author: David O'Toole <dto@gnu.org>
|
||||||
|
;; Keywords: hypermedia, outlines
|
||||||
|
;; Version:
|
||||||
|
|
||||||
|
;; $Id: org-publish.el,v 1.61 2006/05/19 12:03:51 dto Exp $
|
||||||
|
|
||||||
|
;; This file 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 2, or (at your option)
|
||||||
|
;; any later version.
|
||||||
|
|
||||||
|
;; This file 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; see the file COPYING. If not, write to
|
||||||
|
;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||||
|
;; Boston, MA 02110-1301, USA.
|
||||||
|
|
||||||
|
;; This file is NOT part of GNU Emacs.
|
||||||
|
|
||||||
|
;;; Commentary:
|
||||||
|
|
||||||
|
;; Requires at least version 4.27 of org.el
|
||||||
|
;;
|
||||||
|
;; The official org-mode website:
|
||||||
|
;; http://staff.science.uva.nl/~dominik/Tools/org/
|
||||||
|
;;
|
||||||
|
;; Home page for org-publish.el:
|
||||||
|
;; http://dto.freeshell.org/notebook/OrgMode.html
|
||||||
|
|
||||||
|
;; This program extends the HTML publishing support of Emacs Org-mode
|
||||||
|
;; to allow configurable publishing of related sets of files as a
|
||||||
|
;; complete website.
|
||||||
|
;;
|
||||||
|
;; org-publish.el can do the following:
|
||||||
|
;;
|
||||||
|
;; + Publish all one's org-files to html
|
||||||
|
;; + Upload html, images, attachments and other files to a web server
|
||||||
|
;; + Exclude selected private pages from publishing
|
||||||
|
;; + Publish a clickable index of pages
|
||||||
|
;; + Manage local timestamps, for publishing only changed files
|
||||||
|
;; + Accept plugin functions to extend range of publishable content
|
||||||
|
;;
|
||||||
|
;; Special thanks to the org-mode maintainer Carsten Dominik for his
|
||||||
|
;; ideas, enthusiasm, and cooperation.
|
||||||
|
|
||||||
|
;;; Installation:
|
||||||
|
|
||||||
|
;; Put org-publish.el in your load path, byte-compile it, and then add
|
||||||
|
;; the following lines to your emacs initialization file:
|
||||||
|
|
||||||
|
;; (autoload 'org-publish "org-publish" nil t)
|
||||||
|
;; (autoload 'org-publish "org-publish-all" nil t)
|
||||||
|
;; (autoload 'org-publish "org-publish-current-file" nil t)
|
||||||
|
;; (autoload 'org-publish "org-publish-current-project" nil t)
|
||||||
|
|
||||||
|
;;; Usage:
|
||||||
|
;;
|
||||||
|
;; The program's main configuration variable is
|
||||||
|
;; `org-publish-project-alist'. See below for example configurations
|
||||||
|
;; with commentary.
|
||||||
|
|
||||||
|
;; The main interactive functions are:
|
||||||
|
;;
|
||||||
|
;; M-x org-publish
|
||||||
|
;; M-x org-publish-all
|
||||||
|
;; M-x org-publish-current-file
|
||||||
|
;; M-x org-publish-current-project
|
||||||
|
|
||||||
|
;;;; Simple example configuration:
|
||||||
|
|
||||||
|
;; (setq org-publish-project-alist
|
||||||
|
;; (list
|
||||||
|
;; '("org" . (:base-directory "~/org/"
|
||||||
|
;; :base-extension "org"
|
||||||
|
;; :publishing-directory "~/public_html"
|
||||||
|
;; :with-section-numbers nil
|
||||||
|
;; :table-of-contents nil
|
||||||
|
;; :style "<link rel=stylesheet href=\"../other/mystyle.css\" type=\"text/css\">")))
|
||||||
|
|
||||||
|
;;;; More complex example configuration:
|
||||||
|
|
||||||
|
;; Imagine your *.org files are kept in ~/org, your images in
|
||||||
|
;; ~/images, and stylesheets in ~/other. Now imagine you want to
|
||||||
|
;; publish the files through an ssh connection to a remote host, via
|
||||||
|
;; Tramp-mode. To maintain relative links from *.org files to /images
|
||||||
|
;; and /other, we should replicate the same directory structure in
|
||||||
|
;; your web server account's designated html root (in this case,
|
||||||
|
;; assumed to be ~/html)
|
||||||
|
|
||||||
|
;; Once you've done created the proper directories, you can adapt the
|
||||||
|
;; following example configuration to your specific paths, run M-x
|
||||||
|
;; org-publish-all, and it should publish the files to the correct
|
||||||
|
;; directories on the web server, transforming the *.org files into
|
||||||
|
;; HTML, and leaving other files alone.
|
||||||
|
|
||||||
|
;; (setq org-publish-project-alist
|
||||||
|
;; (list
|
||||||
|
;; '("website" .
|
||||||
|
;; (("orgfiles" :base-directory "~/org/"
|
||||||
|
;; :base-extension "org"
|
||||||
|
;; :publishing-directory "/ssh:user@host:~/html/notebook/"
|
||||||
|
;; :publishing-function org-publish-org-to-html
|
||||||
|
;; :exclude "PrivatePage.org" ;; regexp
|
||||||
|
;; :headline-levels 3
|
||||||
|
;; :with-section-numbers nil
|
||||||
|
;; :table-of-contents nil
|
||||||
|
;; :style "<link rel=stylesheet href=\"../other/mystyle.css\" type=\"text/css\">"
|
||||||
|
;; :auto-preamble t
|
||||||
|
;; :auto-postamble nil)
|
||||||
|
;;
|
||||||
|
;; ("images" :base-directory "~/images/"
|
||||||
|
;; :base-extension "jpg\\|gif\\|png"
|
||||||
|
;; :publishing-directory "/ssh:user@host:~/html/images/"
|
||||||
|
;; :publishing-function org-publish-attachment)
|
||||||
|
;;
|
||||||
|
;; ("other" :base-directory "~/other/"
|
||||||
|
;; :base-extension "css"
|
||||||
|
;; :publishing-directory "/ssh:user@host:~/html/other/"
|
||||||
|
;; :publishing-function org-publish-attachment)))))
|
||||||
|
|
||||||
|
;; For more information, see the documentation for the variable
|
||||||
|
;; `org-publish-project-alist'.
|
||||||
|
|
||||||
|
;; Of course, you don't have to publish to remote directories from
|
||||||
|
;; within emacs. You can always just publish to local folders, and
|
||||||
|
;; then use the synchronization/upload tool of your choice.
|
||||||
|
|
||||||
|
|
||||||
|
;;; List of user-visible changes since version 1.27
|
||||||
|
|
||||||
|
;; 1.57: Timestamps flag is now called "org-publish-use-timestamps-flag"
|
||||||
|
;; 1.52: Properly set default for :index-filename
|
||||||
|
;; 1.48: Composite projects allowed.
|
||||||
|
;; :include keyword allowed.
|
||||||
|
;; 1.43: Index no longer includes itself in the index.
|
||||||
|
;; 1.42: Fix "function definition is void" error
|
||||||
|
;; when :publishing-function not set in org-publish-current-file.
|
||||||
|
;; 1.41: Fixed bug where index isn't published on first try.
|
||||||
|
;; 1.37: Added interactive function "org-publish". Prompts for particular
|
||||||
|
;; project name to publish.
|
||||||
|
;; 1.34: Added force-publish option to all interactive functions.
|
||||||
|
;; 1.32: Fixed "index.org has changed on disk" error during index publishing.
|
||||||
|
;; 1.30: Fixed startup error caused by (require 'em-unix)
|
||||||
|
|
||||||
|
;;; Code:
|
||||||
|
|
||||||
|
;; these lines get code for function "eshell/cp" loaded
|
||||||
|
(require 'eshell)
|
||||||
|
(require 'esh-maint)
|
||||||
|
(require 'em-unix)
|
||||||
|
(require 'org)
|
||||||
|
|
||||||
|
(defgroup org-publish nil
|
||||||
|
"Options for publishing a set of Org-mode and related files."
|
||||||
|
:tag "Org Publishing"
|
||||||
|
:group 'org)
|
||||||
|
|
||||||
|
|
||||||
|
(defcustom org-publish-project-alist nil
|
||||||
|
"Association list to control publishing behavior.
|
||||||
|
Each element of the alist is a publishing 'project.' The CAR of
|
||||||
|
each element is a string, uniquely identifying the project. The
|
||||||
|
CDR of each element is either a property list with configuration
|
||||||
|
options for the publishing process (see below), or a list of the
|
||||||
|
following form:
|
||||||
|
|
||||||
|
((\"component1\" :property value :property value ... )
|
||||||
|
(\"component2\" :property value :property value ... ))
|
||||||
|
|
||||||
|
When the CDR of an element of org-publish-project-alist is in
|
||||||
|
this second form, the elements of this list are taken to be
|
||||||
|
components of the project, which group together files requiring
|
||||||
|
different publishing options.
|
||||||
|
|
||||||
|
When a property is given a value in org-publish-project-alist, its
|
||||||
|
setting overrides the value of the corresponding user variable
|
||||||
|
(if any) during publishing. However, options set within a file
|
||||||
|
override everything.
|
||||||
|
|
||||||
|
Most properties are optional, but some should always be set:
|
||||||
|
|
||||||
|
:base-directory Directory containing publishing source files
|
||||||
|
:base-extension Extension (without the dot!) of source files.
|
||||||
|
This can be a regular expression.
|
||||||
|
:publishing-directory Directory (possibly remote) where output
|
||||||
|
files will be published
|
||||||
|
|
||||||
|
The :exclude property may be used to prevent certain files from
|
||||||
|
being published. Its value may be a string or regexp matching
|
||||||
|
file names you don't want to be published.
|
||||||
|
|
||||||
|
The :include property may be used to include extra files. Its
|
||||||
|
value may be a list of filenames to include. The filenames are
|
||||||
|
considered relative to the publishing directory.
|
||||||
|
|
||||||
|
When both :include and :exclude properties are given values, the
|
||||||
|
exclusion step happens first.
|
||||||
|
|
||||||
|
One special property controls which back-end function to use for
|
||||||
|
publishing files in the project. This can be used to extend the
|
||||||
|
set of file types publishable by org-publish, as well as the set
|
||||||
|
of output formats.
|
||||||
|
|
||||||
|
:publishing-function Function to publish file. The default is
|
||||||
|
org-publish-org-to-html, but other
|
||||||
|
values are possible.
|
||||||
|
|
||||||
|
Some properties control details of the Org publishing process,
|
||||||
|
and are equivalent to the corresponding user variables listed in
|
||||||
|
the right column. See the documentation for those variables to
|
||||||
|
learn more about their use and default values.
|
||||||
|
|
||||||
|
:language org-export-default-language
|
||||||
|
:headline-levels org-export-headline-levels
|
||||||
|
:section-numbers org-export-with-section-numbers
|
||||||
|
:table-of-contents org-export-with-toc
|
||||||
|
:emphasize org-export-with-emphasize
|
||||||
|
:sub-superscript org-export-with-sub-superscripts
|
||||||
|
:TeX-macros org-export-with-TeX-macros
|
||||||
|
:fixed-width org-export-with-fixed-width
|
||||||
|
:tables org-export-with-tables
|
||||||
|
:table-auto-headline org-export-highlight-first-table-line
|
||||||
|
:style org-export-html-style
|
||||||
|
:convert-org-links org-export-html-link-org-files-as-html
|
||||||
|
:inline-images org-export-html-inline-images
|
||||||
|
:expand-quoted-html org-export-html-expand
|
||||||
|
:timestamp org-export-html-with-timestamp
|
||||||
|
:publishing-directory org-export-publishing-directory
|
||||||
|
:preamble org-export-html-preamble
|
||||||
|
:postamble org-export-html-postamble
|
||||||
|
:auto-preamble org-export-html-auto-preamble
|
||||||
|
:auto-postamble org-export-html-auto-postamble
|
||||||
|
:author user-full-name
|
||||||
|
:email user-mail-address
|
||||||
|
|
||||||
|
The following properties may be used to control publishing of an
|
||||||
|
index of files or summary page for a given project.
|
||||||
|
|
||||||
|
:auto-index Whether to publish an index during
|
||||||
|
org-publish-current-project or org-publish-all.
|
||||||
|
:index-filename Filename for output of index. Defaults
|
||||||
|
to 'index.org' (which becomes 'index.html')
|
||||||
|
:index-title Title of index page. Defaults to name of file.
|
||||||
|
:index-function Plugin function to use for generation of index.
|
||||||
|
Defaults to 'org-publish-org-index', which
|
||||||
|
generates a plain list of links to all files
|
||||||
|
in the project.
|
||||||
|
"
|
||||||
|
:group 'org-publish
|
||||||
|
:type 'alist)
|
||||||
|
|
||||||
|
|
||||||
|
(defcustom org-publish-use-timestamps-flag t
|
||||||
|
"When non-nil, use timestamp checking to publish only changed files.
|
||||||
|
When nil, do no timestamp checking and always publish all
|
||||||
|
files."
|
||||||
|
:group 'org-publish
|
||||||
|
:type 'boolean)
|
||||||
|
|
||||||
|
|
||||||
|
(defcustom org-publish-timestamp-directory "~/.org-timestamps/"
|
||||||
|
"Name of directory in which to store publishing timestamps."
|
||||||
|
:group 'org-publish
|
||||||
|
:type 'string)
|
||||||
|
|
||||||
|
|
||||||
|
;;;; Timestamp-related functions
|
||||||
|
|
||||||
|
|
||||||
|
(defun org-publish-timestamp-filename (filename)
|
||||||
|
"Return path to timestamp file for filename FILENAME."
|
||||||
|
(while (string-match "~\\|/" filename)
|
||||||
|
(setq filename (replace-match "_" nil t filename)))
|
||||||
|
(concat org-publish-timestamp-directory filename ".timestamp"))
|
||||||
|
|
||||||
|
|
||||||
|
(defun org-publish-needed-p (filename)
|
||||||
|
"Check whether file should be published.
|
||||||
|
If org-publish-use-timestamps-flag is set to nil, this function always
|
||||||
|
returns t. Otherwise, check the timestamps folder to determine
|
||||||
|
whether file should be published."
|
||||||
|
(if org-publish-use-timestamps-flag
|
||||||
|
(progn
|
||||||
|
;;
|
||||||
|
;; create folder if needed
|
||||||
|
(if (not (file-exists-p org-publish-timestamp-directory))
|
||||||
|
(make-directory org-publish-timestamp-directory)
|
||||||
|
(if (not (file-directory-p org-publish-timestamp-directory))
|
||||||
|
(error "org-publish-timestamp-directory must be a directory.")))
|
||||||
|
;;
|
||||||
|
;; check timestamp. ok if timestamp file doesn't exist
|
||||||
|
(let* ((timestamp (org-publish-timestamp-filename filename))
|
||||||
|
(rtn (file-newer-than-file-p filename timestamp)))
|
||||||
|
(if rtn
|
||||||
|
;; handle new timestamps
|
||||||
|
(if (not (file-exists-p timestamp))
|
||||||
|
;; create file
|
||||||
|
(with-temp-buffer
|
||||||
|
(write-file timestamp)
|
||||||
|
(kill-buffer (current-buffer)))))
|
||||||
|
rtn))
|
||||||
|
t))
|
||||||
|
|
||||||
|
|
||||||
|
(defun org-publish-update-timestamp (filename)
|
||||||
|
"Update publishing timestamp for file FILENAME."
|
||||||
|
(let ((timestamp (org-publish-timestamp-filename filename)))
|
||||||
|
(set-file-times timestamp)))
|
||||||
|
|
||||||
|
|
||||||
|
;;;; Utilities
|
||||||
|
|
||||||
|
|
||||||
|
(defun org-publish-get-project (project-name)
|
||||||
|
"Return project object for project PROJECT-NAME."
|
||||||
|
(let ((project (assoc project-name org-publish-project-alist)))
|
||||||
|
(if project
|
||||||
|
(cdr project)
|
||||||
|
nil)))
|
||||||
|
|
||||||
|
|
||||||
|
(defun org-publish-get-project-component (project-name component-name)
|
||||||
|
"Return plist for project component COMPONENT-NAME within project PROJECT-NAME."
|
||||||
|
(let* ((components (org-publish-get-project project-name))
|
||||||
|
(c nil)
|
||||||
|
(plist nil))
|
||||||
|
(while (setq c (pop components))
|
||||||
|
(when (and (stringp (car c)) (string= component-name (car c)))
|
||||||
|
(setq plist (cdr c))))
|
||||||
|
plist))
|
||||||
|
|
||||||
|
|
||||||
|
(defun org-publish-composite-project-p (element)
|
||||||
|
"Tell whether an ELEMENT of org-publish-project-alist is composite."
|
||||||
|
(listp (car (cdr element))))
|
||||||
|
|
||||||
|
|
||||||
|
(defun org-publish-iterate-project-plists (action &optional project-name)
|
||||||
|
"Call function ACTION for each project component.
|
||||||
|
ACTION should accept two arguments: the name of the enclosing
|
||||||
|
project, and the property list associated with the project
|
||||||
|
component. If PROJECT-NAME is set, iterate only over components
|
||||||
|
of that project."
|
||||||
|
(let ((alist (if project-name
|
||||||
|
`((,project-name ,@(org-publish-get-project project-name)))
|
||||||
|
org-publish-project-alist))
|
||||||
|
(project nil))
|
||||||
|
(while (setq project (pop alist))
|
||||||
|
(if (org-publish-composite-project-p project)
|
||||||
|
;;
|
||||||
|
;; handle composite project
|
||||||
|
(let ((components (cdr project))
|
||||||
|
(c nil))
|
||||||
|
(while (setq c (pop components))
|
||||||
|
(let ((plist (cdr c)))
|
||||||
|
(funcall action (car project) plist))))
|
||||||
|
;;
|
||||||
|
;; handle normal project
|
||||||
|
(let ((plist (cdr project)))
|
||||||
|
(funcall action (car project) plist))))))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
(defun org-publish-get-base-files (plist &optional exclude-regexp)
|
||||||
|
"Return a list of all files in project defined by PLIST.
|
||||||
|
If EXCLUDE-REGEXP is set, this will be used to filter out
|
||||||
|
matching filenames."
|
||||||
|
(let* ((dir (file-name-as-directory (plist-get plist :base-directory)))
|
||||||
|
(include-list (plist-get plist :include))
|
||||||
|
(extension (or (plist-get plist :base-extension) "org"))
|
||||||
|
(regexp (concat "^[^\\.].*\\.\\(" extension "\\)$"))
|
||||||
|
(allfiles (directory-files dir t regexp)))
|
||||||
|
;;
|
||||||
|
;; exclude files
|
||||||
|
(setq allfiles
|
||||||
|
(if (not exclude-regexp)
|
||||||
|
allfiles
|
||||||
|
(delq nil
|
||||||
|
(mapcar (lambda (x)
|
||||||
|
(if (string-match exclude-regexp x) nil x))
|
||||||
|
allfiles))))
|
||||||
|
;;
|
||||||
|
;; include extra files
|
||||||
|
(let ((inc nil))
|
||||||
|
(while (setq inc (pop include-list))
|
||||||
|
(setq allfiles (cons (concat dir inc) allfiles))))
|
||||||
|
|
||||||
|
allfiles))
|
||||||
|
|
||||||
|
|
||||||
|
(defun org-publish-get-project-from-filename (filename)
|
||||||
|
"Figure out which project a given FILENAME belongs to, if any.
|
||||||
|
Filename should contain full path. Returns name of project, or
|
||||||
|
nil if not found."
|
||||||
|
(let ((found nil))
|
||||||
|
(org-publish-iterate-project-plists
|
||||||
|
(lambda (project-name project-plist)
|
||||||
|
(let ((files (org-publish-get-base-files project-plist)))
|
||||||
|
(if (member (expand-file-name filename) files)
|
||||||
|
(setq found project-name)))))
|
||||||
|
found))
|
||||||
|
|
||||||
|
|
||||||
|
(defun org-publish-get-plist-from-filename (filename)
|
||||||
|
"Return publishing configuration plist for file FILENAME."
|
||||||
|
(let ((found nil))
|
||||||
|
(org-publish-iterate-project-plists
|
||||||
|
(lambda (project-name project-plist)
|
||||||
|
(let ((files (org-publish-get-base-files project-plist)))
|
||||||
|
(if (member (expand-file-name filename) files)
|
||||||
|
(setq found project-plist)))))
|
||||||
|
found))
|
||||||
|
|
||||||
|
|
||||||
|
;;;; Pluggable publishing back-end functions
|
||||||
|
|
||||||
|
|
||||||
|
(defun org-publish-org-to-html (plist filename)
|
||||||
|
"Publish an org file to HTML.
|
||||||
|
PLIST is the property list for the given project.
|
||||||
|
FILENAME is the filename of the org file to be published."
|
||||||
|
(let* ((arg (plist-get plist :headline-levels)))
|
||||||
|
(progn
|
||||||
|
(find-file filename)
|
||||||
|
(org-export-as-html arg nil plist)
|
||||||
|
;; get rid of HTML buffer
|
||||||
|
(kill-buffer (current-buffer)))))
|
||||||
|
|
||||||
|
|
||||||
|
(defun org-publish-attachment (plist filename)
|
||||||
|
"Publish a file with no transformation of any kind.
|
||||||
|
PLIST is the property list for the given project.
|
||||||
|
FILENAME is the filename of the file to be published."
|
||||||
|
(let ((destination (file-name-as-directory (plist-get plist :publishing-directory))))
|
||||||
|
(eshell/cp filename destination)))
|
||||||
|
|
||||||
|
|
||||||
|
;;;; Publishing files, projects, and indices
|
||||||
|
|
||||||
|
|
||||||
|
(defun org-publish-file (filename)
|
||||||
|
"Publish file FILENAME."
|
||||||
|
(let* ((project-name (org-publish-get-project-from-filename filename))
|
||||||
|
(plist (org-publish-get-plist-from-filename filename))
|
||||||
|
(publishing-function (or (plist-get plist :publishing-function) 'org-publish-org-to-html)))
|
||||||
|
(if (not project-name)
|
||||||
|
(error (format "File %s is not part of any known project." filename)))
|
||||||
|
(when (org-publish-needed-p filename)
|
||||||
|
(funcall publishing-function plist filename)
|
||||||
|
(org-publish-update-timestamp filename))))
|
||||||
|
|
||||||
|
|
||||||
|
(defun org-publish-project-plist (plist)
|
||||||
|
"Publish all base files in project defined by PLIST.
|
||||||
|
If :auto-index is set, publish the index too."
|
||||||
|
(let* ((exclude-regexp (plist-get plist :exclude))
|
||||||
|
(publishing-function (or (plist-get plist :publishing-function) 'org-publish-org-to-html))
|
||||||
|
(buf (current-buffer))
|
||||||
|
(index-p (plist-get plist :auto-index))
|
||||||
|
(index-filename (or (plist-get plist :index-filename) "index.org"))
|
||||||
|
(index-function (or (plist-get plist :index-function) 'org-publish-org-index))
|
||||||
|
(f nil))
|
||||||
|
;;
|
||||||
|
(if index-p
|
||||||
|
(funcall index-function plist index-filename))
|
||||||
|
(let ((files (org-publish-get-base-files plist exclude-regexp)))
|
||||||
|
(while (setq f (pop files))
|
||||||
|
;; check timestamps
|
||||||
|
(when (org-publish-needed-p f)
|
||||||
|
(funcall publishing-function plist f)
|
||||||
|
(org-publish-update-timestamp f))))
|
||||||
|
;; back to original buffer
|
||||||
|
(switch-to-buffer buf)))
|
||||||
|
|
||||||
|
|
||||||
|
(defun org-publish-org-index (plist &optional index-filename)
|
||||||
|
"Create an index of pages in project PLIST.
|
||||||
|
Optionally set the filename of the index with INDEX-FILENAME;
|
||||||
|
default is 'index.org'."
|
||||||
|
(let* ((dir (file-name-as-directory (plist-get plist :base-directory)))
|
||||||
|
(exclude-regexp (plist-get plist :exclude))
|
||||||
|
(files (org-publish-get-base-files plist exclude-regexp))
|
||||||
|
(index-filename (concat dir (or index-filename "index.org")))
|
||||||
|
(index-buffer (find-buffer-visiting index-filename))
|
||||||
|
(ifn (file-name-nondirectory index-filename))
|
||||||
|
(f nil))
|
||||||
|
;;
|
||||||
|
;; if buffer is already open, kill it to prevent error message
|
||||||
|
(if index-buffer
|
||||||
|
(kill-buffer index-buffer))
|
||||||
|
(with-temp-buffer
|
||||||
|
(while (setq f (pop files))
|
||||||
|
(let ((fn (file-name-nondirectory f)))
|
||||||
|
(unless (string= fn ifn) ;; index shouldn't index itself
|
||||||
|
(insert (concat " + [[file:" fn "]["
|
||||||
|
(file-name-sans-extension fn)
|
||||||
|
"]]\n")))))
|
||||||
|
(write-file index-filename)
|
||||||
|
(kill-buffer (current-buffer)))))
|
||||||
|
|
||||||
|
|
||||||
|
;;;; Interactive publishing functions
|
||||||
|
|
||||||
|
|
||||||
|
;;;###autoload
|
||||||
|
(defun org-publish (project-name &optional force)
|
||||||
|
"Publish the project PROJECT-NAME."
|
||||||
|
(interactive "sProject name: \nP")
|
||||||
|
(let ((org-publish-use-timestamps-flag (if force nil t)))
|
||||||
|
(org-publish-iterate-project-plists
|
||||||
|
(lambda (ignore project-plist)
|
||||||
|
(org-publish-project-plist project-plist))
|
||||||
|
project-name)))
|
||||||
|
|
||||||
|
|
||||||
|
;;;###autoload
|
||||||
|
(defun org-publish-current-project (&optional force)
|
||||||
|
"Publish the project associated with the current file.
|
||||||
|
With prefix argument, force publishing all files in project."
|
||||||
|
(interactive "P")
|
||||||
|
(let* ((project-name (org-publish-get-project-from-filename (buffer-file-name)))
|
||||||
|
(org-publish-use-timestamps-flag (if force nil t)))
|
||||||
|
(if (not project-name)
|
||||||
|
(error (format "File %s is not part of any known project." (buffer-file-name))))
|
||||||
|
(org-publish project-name)))
|
||||||
|
|
||||||
|
|
||||||
|
;;;###autoload
|
||||||
|
(defun org-publish-current-file (&optional force)
|
||||||
|
"Publish the current file.
|
||||||
|
With prefix argument, force publish the file."
|
||||||
|
(interactive "P")
|
||||||
|
(let ((org-publish-use-timestamps-flag
|
||||||
|
(if force nil t)))
|
||||||
|
(org-publish-file (buffer-file-name))))
|
||||||
|
|
||||||
|
|
||||||
|
;;;###autoload
|
||||||
|
(defun org-publish-all (&optional force)
|
||||||
|
"Publish all projects.
|
||||||
|
With prefix argument, force publish all files."
|
||||||
|
(interactive "P")
|
||||||
|
(let ((org-publish-use-timestamps-flag
|
||||||
|
(if force nil t)))
|
||||||
|
(org-publish-iterate-project-plists
|
||||||
|
(lambda (project-name project-plist)
|
||||||
|
(org-publish-project-plist project-plist)))))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
(provide 'org-publish)
|
||||||
|
;;; org-publish.el ends here
|
505
org.el
505
org.el
|
@ -5,7 +5,7 @@
|
||||||
;; Author: Carsten Dominik <dominik at science dot uva dot nl>
|
;; Author: Carsten Dominik <dominik at science dot uva dot nl>
|
||||||
;; Keywords: outlines, hypermedia, calendar, wp
|
;; Keywords: outlines, hypermedia, calendar, wp
|
||||||
;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/
|
;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/
|
||||||
;; Version: 4.29
|
;; Version: 4.30
|
||||||
;;
|
;;
|
||||||
;; This file is part of GNU Emacs.
|
;; This file is part of GNU Emacs.
|
||||||
;;
|
;;
|
||||||
|
@ -52,16 +52,17 @@
|
||||||
;; (define-key global-map "\C-cl" 'org-store-link)
|
;; (define-key global-map "\C-cl" 'org-store-link)
|
||||||
;; (define-key global-map "\C-ca" 'org-agenda)
|
;; (define-key global-map "\C-ca" 'org-agenda)
|
||||||
;;
|
;;
|
||||||
;; If you have downloaded Org-mode from the Web, you must byte-compile
|
;; Furthermore you need to activate font-lock-mode in org-mode buffers.
|
||||||
;; org.el and put it on your load path. In addition to the Emacs Lisp
|
;; either of the following two lins will do the trick:
|
||||||
;; lines above, you also need to add the following lines to .emacs:
|
|
||||||
;;
|
;;
|
||||||
;; (autoload 'org-mode "org" "Org mode" t)
|
;; (global-font-lock-mode 1) ; for all buffers
|
||||||
;; (autoload 'org-diary "org" "Diary entries from Org mode")
|
;; (add-hook 'org-mode-hook 'turn-on-font-lock) ; org-mode buffers only
|
||||||
;; (autoload 'org-agenda "org" "Multi-file agenda from Org mode" t)
|
;;
|
||||||
;; (autoload 'org-store-link "org" "Store a link to the current location" t)
|
;; If you have downloaded Org-mode from the Web, you have to take additional
|
||||||
;; (autoload 'orgtbl-mode "org" "Org tables as a minor mode" t)
|
;; action: Byte-compile org.el and org-publish.el and put them together with
|
||||||
;; (autoload 'turn-on-orgtbl "org" "Org tables as a minor mode")
|
;; org-install.el on your load path. Then also add to your .emacs file:
|
||||||
|
;;
|
||||||
|
;; (require 'org-install)
|
||||||
;;
|
;;
|
||||||
;; This setup will put all files with extension ".org" into Org-mode. As
|
;; This setup will put all files with extension ".org" into Org-mode. As
|
||||||
;; an alternative, make the first line of a file look like this:
|
;; an alternative, make the first line of a file look like this:
|
||||||
|
@ -81,6 +82,17 @@
|
||||||
;;
|
;;
|
||||||
;; Changes since version 4.10:
|
;; Changes since version 4.10:
|
||||||
;; ---------------------------
|
;; ---------------------------
|
||||||
|
;; Version 4.30
|
||||||
|
;; - Modified installation: Autoloads have been collected in org-install.el.
|
||||||
|
;; - Logging (org-log-done) is now a #+STARTUP option.
|
||||||
|
;; - Checkboxes in plain list items, following up on Frank Ruell's idea.
|
||||||
|
;; - File links inserted with C-c C-l will use relative paths if the linked
|
||||||
|
;; file is in the current directory or a subdirectory of it.
|
||||||
|
;; - New variable `org-link-file-path-type' to specify preference for
|
||||||
|
;; relative and absolute paths.
|
||||||
|
;; - New CSS classes for tags, timestamps, timestamp keywords.
|
||||||
|
;; - Bug and typo fixes.
|
||||||
|
;;
|
||||||
;; Version 4.29
|
;; Version 4.29
|
||||||
;; - Inlining images in HTML export now depends on wheather the link
|
;; - Inlining images in HTML export now depends on wheather the link
|
||||||
;; contains a description or not.
|
;; contains a description or not.
|
||||||
|
@ -348,6 +360,18 @@ An entry can be toggled between QUOTE and normal with
|
||||||
:tag "Org Cycle"
|
:tag "Org Cycle"
|
||||||
:group 'org-structure)
|
:group 'org-structure)
|
||||||
|
|
||||||
|
(defcustom org-cycle-global-at-bob t
|
||||||
|
"Cycle globally if cursor is at beginning of buffer and not at a headline.
|
||||||
|
This makes it possible to do global cycling without having to use S-TAB or
|
||||||
|
C-u TAB. For this special case to work, the first line of the buffer
|
||||||
|
must not be a headline - it may be empty ot some other text. When used in
|
||||||
|
this way, `org-cycle-hook' is disables temporarily, to make sure the
|
||||||
|
cursor stays at the beginning of the buffer.
|
||||||
|
When this option is nil, don't do anything special at the beginning
|
||||||
|
of the buffer."
|
||||||
|
:group 'org-cycle
|
||||||
|
:type 'boolean)
|
||||||
|
|
||||||
(defcustom org-cycle-emulate-tab t
|
(defcustom org-cycle-emulate-tab t
|
||||||
"Where should `org-cycle' emulate TAB.
|
"Where should `org-cycle' emulate TAB.
|
||||||
nil Never
|
nil Never
|
||||||
|
@ -784,6 +808,23 @@ additional URL: prefix, so the format would be \"<URL:%s>\"."
|
||||||
(const :tag "\"<URL:%s>\" (e.g. <URL:http://www.there.com>)" "<URL:%s>")
|
(const :tag "\"<URL:%s>\" (e.g. <URL:http://www.there.com>)" "<URL:%s>")
|
||||||
(string :tag "Other" :value "<%s>")))
|
(string :tag "Other" :value "<%s>")))
|
||||||
|
|
||||||
|
(defcustom org-link-file-path-type 'adaptive
|
||||||
|
"How the path name in file links should be stored.
|
||||||
|
Valid values are:
|
||||||
|
|
||||||
|
relative relative to the current directory, i.e. the directory of the file
|
||||||
|
into which the link is being inserted.
|
||||||
|
absolute absolute path, if possible with ~ for home directory.
|
||||||
|
noabbrev absolute path, no abbreviation of home directory.
|
||||||
|
adaptive Use relative path for files in the current directory and sub-
|
||||||
|
directories of it. For other files, use an absolute path."
|
||||||
|
:group 'org-link
|
||||||
|
:type '(choice
|
||||||
|
(const relative)
|
||||||
|
(const absolute)
|
||||||
|
(const noabbrev)
|
||||||
|
(const adaptive)))
|
||||||
|
|
||||||
(defcustom org-activate-links '(bracket angle plain radio tag date)
|
(defcustom org-activate-links '(bracket angle plain radio tag date)
|
||||||
"Types of links that should be activated in Org-mode files.
|
"Types of links that should be activated in Org-mode files.
|
||||||
This is a list of symbols, each leading to the activation of a certain link
|
This is a list of symbols, each leading to the activation of a certain link
|
||||||
|
@ -962,7 +1003,11 @@ for some files for which the OS does not have a good default.
|
||||||
See `org-file-apps'.")
|
See `org-file-apps'.")
|
||||||
|
|
||||||
(defconst org-file-apps-defaults-windowsnt
|
(defconst org-file-apps-defaults-windowsnt
|
||||||
'((t . (w32-shell-execute "open" file)))
|
(list (cons t
|
||||||
|
(list (if (featurep 'xemacs)
|
||||||
|
'mswindows-shell-execute
|
||||||
|
'w32-shell-execute)
|
||||||
|
"open" 'file)))
|
||||||
"Default file applications on a Windows NT system.
|
"Default file applications on a Windows NT system.
|
||||||
The system \"open\" is used for most files.
|
The system \"open\" is used for most files.
|
||||||
See `org-file-apps'.")
|
See `org-file-apps'.")
|
||||||
|
@ -979,14 +1024,20 @@ See `org-file-apps'.")
|
||||||
"External applications for opening `file:path' items in a document.
|
"External applications for opening `file:path' items in a document.
|
||||||
Org-mode uses system defaults for different file types, but
|
Org-mode uses system defaults for different file types, but
|
||||||
you can use this variable to set the application for a given file
|
you can use this variable to set the application for a given file
|
||||||
extension. The entries in this list are cons cells with a file extension
|
extension. The entries in this list are cons cells where the car identifies
|
||||||
and the corresponding command. Possible values for the command are:
|
files and the cdr the corresponding command. Possible values for the
|
||||||
`emacs' The file will be visited by the current Emacs process.
|
file identifier are
|
||||||
`default' Use the default application for this file type.
|
\"ext\" A string identifying an extension
|
||||||
string A command to be executed by a shell; %s will be replaced
|
`directory' Matches a directory
|
||||||
by the path to the file.
|
t Default for all remaining files
|
||||||
sexp A Lisp form which will be evaluated. The file path will
|
|
||||||
be available in the Lisp variable `file'.
|
Possible values for the command are:
|
||||||
|
`emacs' The file will be visited by the current Emacs process.
|
||||||
|
`default' Use the default application for this file type.
|
||||||
|
string A command to be executed by a shell; %s will be replaced
|
||||||
|
by the path to the file.
|
||||||
|
sexp A Lisp form which will be evaluated. The file path will
|
||||||
|
be available in the Lisp variable `file'.
|
||||||
For more examples, see the system specific constants
|
For more examples, see the system specific constants
|
||||||
`org-file-apps-defaults-macosx'
|
`org-file-apps-defaults-macosx'
|
||||||
`org-file-apps-defaults-windowsnt'
|
`org-file-apps-defaults-windowsnt'
|
||||||
|
@ -1114,7 +1165,12 @@ Lisp variable `state'."
|
||||||
(defcustom org-log-done nil
|
(defcustom org-log-done nil
|
||||||
"When set, insert a (non-active) time stamp when TODO entry is marked DONE.
|
"When set, insert a (non-active) time stamp when TODO entry is marked DONE.
|
||||||
When the state of an entry is changed from nothing to TODO, remove a previous
|
When the state of an entry is changed from nothing to TODO, remove a previous
|
||||||
closing date."
|
closing date.
|
||||||
|
This can also be configured on a per-file basis by adding one of
|
||||||
|
the following lines anywhere in the buffer:
|
||||||
|
|
||||||
|
#+STARTUP: logging
|
||||||
|
#+STARTUP: nologging"
|
||||||
:group 'org-todo
|
:group 'org-todo
|
||||||
:type 'boolean)
|
:type 'boolean)
|
||||||
|
|
||||||
|
@ -1139,6 +1195,14 @@ This is the priority an item get if no explicit priority is given."
|
||||||
:tag "Org Time"
|
:tag "Org Time"
|
||||||
:group 'org)
|
:group 'org)
|
||||||
|
|
||||||
|
(defcustom org-insert-labeled-timestamps-at-point nil
|
||||||
|
"Non-nil means, SCHEDULED and DEADLINE timestamps are inserted at point.
|
||||||
|
When nil, these labeled time stamps are forces into the second line of an
|
||||||
|
entry, just after the headline. When scheduling from the global TODO list,
|
||||||
|
the time stamp will always be forced into the second line."
|
||||||
|
:group 'org-time
|
||||||
|
:type 'boolean)
|
||||||
|
|
||||||
(defconst org-time-stamp-formats '("<%Y-%m-%d %a>" . "<%Y-%m-%d %a %H:%M>")
|
(defconst org-time-stamp-formats '("<%Y-%m-%d %a>" . "<%Y-%m-%d %a %H:%M>")
|
||||||
"Formats for `format-time-string' which are used for time stamps.
|
"Formats for `format-time-string' which are used for time stamps.
|
||||||
It is not recommended to change this constant.")
|
It is not recommended to change this constant.")
|
||||||
|
@ -1652,6 +1716,11 @@ This option can also be set with the +OPTIONS line, e.g. \"\\n:t\"."
|
||||||
:group 'org-export-general
|
:group 'org-export-general
|
||||||
:type 'boolean)
|
:type 'boolean)
|
||||||
|
|
||||||
|
(defcustom org-export-with-timestamps t
|
||||||
|
"Nil means, do not export time stamps and associated keywords."
|
||||||
|
:group 'org-export
|
||||||
|
:type 'boolean)
|
||||||
|
|
||||||
(defcustom org-export-with-tags t
|
(defcustom org-export-with-tags t
|
||||||
"Nil means, do not export tags, just remove them from headlines."
|
"Nil means, do not export tags, just remove them from headlines."
|
||||||
:group 'org-export-general
|
:group 'org-export-general
|
||||||
|
@ -1796,6 +1865,8 @@ Otherwise the buffer will just be saved to a file and stay hidden."
|
||||||
:tag "Org Export XML"
|
:tag "Org Export XML"
|
||||||
:group 'org-export)
|
:group 'org-export)
|
||||||
|
|
||||||
|
;; FIXME: I am told XOXO is not XML, it is semantic-only HTML.
|
||||||
|
|
||||||
(defcustom org-export-xml-type 'xoxo ;kw, if we have only one.
|
(defcustom org-export-xml-type 'xoxo ;kw, if we have only one.
|
||||||
"The kind of XML to be produced by the XML exporter.
|
"The kind of XML to be produced by the XML exporter.
|
||||||
Allowed values are:
|
Allowed values are:
|
||||||
|
@ -1816,8 +1887,11 @@ xoxo The XOXO exporter."
|
||||||
font-size: 12pt;
|
font-size: 12pt;
|
||||||
}
|
}
|
||||||
.title { text-align: center; }
|
.title { text-align: center; }
|
||||||
.todo, .deadline { color: red; }
|
.todo { color: red; }
|
||||||
.done { color: green; }
|
.done { color: green; }
|
||||||
|
.timestamp { color: grey }
|
||||||
|
.timestamp-kwd { color: CadetBlue }
|
||||||
|
.tag { background-color:lightblue; font-weight:normal }
|
||||||
.target { background-color: lavender; }
|
.target { background-color: lavender; }
|
||||||
pre {
|
pre {
|
||||||
border: 1pt solid #AEBDCC;
|
border: 1pt solid #AEBDCC;
|
||||||
|
@ -2274,6 +2348,9 @@ This face is only used if `org-fontify-done-headline' is set."
|
||||||
(defvar org-keyword-time-regexp nil
|
(defvar org-keyword-time-regexp nil
|
||||||
"Matches any of the 3 keywords, together with the time stamp.")
|
"Matches any of the 3 keywords, together with the time stamp.")
|
||||||
(make-variable-buffer-local 'org-keyword-time-regexp)
|
(make-variable-buffer-local 'org-keyword-time-regexp)
|
||||||
|
(defvar org-maybe-keyword-time-regexp nil
|
||||||
|
"Matches a timestamp, possibly preceeded by a keyword.")
|
||||||
|
(make-variable-buffer-local 'org-keyword-time-regexp)
|
||||||
|
|
||||||
(defun org-set-regexps-and-options ()
|
(defun org-set-regexps-and-options ()
|
||||||
"Precompute regular expressions for current buffer."
|
"Precompute regular expressions for current buffer."
|
||||||
|
@ -2316,6 +2393,8 @@ This face is only used if `org-fontify-done-headline' is set."
|
||||||
("oddeven" org-odd-levels-only nil)
|
("oddeven" org-odd-levels-only nil)
|
||||||
("align" org-startup-align-all-tables t)
|
("align" org-startup-align-all-tables t)
|
||||||
("noalign" org-startup-align-all-tables nil)
|
("noalign" org-startup-align-all-tables nil)
|
||||||
|
("logging" org-log-done t)
|
||||||
|
("nologging" org-log-done nil)
|
||||||
("dlcheck" org-startup-with-deadline-check t)
|
("dlcheck" org-startup-with-deadline-check t)
|
||||||
("nodlcheck" org-startup-with-deadline-check nil)))
|
("nodlcheck" org-startup-with-deadline-check nil)))
|
||||||
l var val)
|
l var val)
|
||||||
|
@ -2370,7 +2449,12 @@ This face is only used if `org-fontify-done-headline' is set."
|
||||||
(concat "\\<\\(" org-scheduled-string
|
(concat "\\<\\(" org-scheduled-string
|
||||||
"\\|" org-deadline-string
|
"\\|" org-deadline-string
|
||||||
"\\|" org-closed-string "\\)"
|
"\\|" org-closed-string "\\)"
|
||||||
" *[[<]\\([^]>]+\\)[]>]")) ;; FIXME: is this correct?
|
" *[[<]\\([^]>]+\\)[]>]") ;; FIXME: is this correct?
|
||||||
|
org-maybe-keyword-time-regexp
|
||||||
|
(concat "\\(\\<\\(" org-scheduled-string
|
||||||
|
"\\|" org-deadline-string
|
||||||
|
"\\|" org-closed-string "\\)\\)?"
|
||||||
|
" *\\([[<][0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\}[^]\r\n>]*?[]>]\\)")) ;; FIXME: is this correct?
|
||||||
|
|
||||||
(org-set-font-lock-defaults)))
|
(org-set-font-lock-defaults)))
|
||||||
|
|
||||||
|
@ -2810,11 +2894,13 @@ between words."
|
||||||
(let* ((em org-fontify-emphasized-text)
|
(let* ((em org-fontify-emphasized-text)
|
||||||
(lk org-activate-links)
|
(lk org-activate-links)
|
||||||
(org-font-lock-extra-keywords
|
(org-font-lock-extra-keywords
|
||||||
|
;; Headlines
|
||||||
(list
|
(list
|
||||||
'("^\\(\\**\\)\\(\\*\\)\\(.*\\)" (1 (org-get-level-face 1))
|
'("^\\(\\**\\)\\(\\*\\)\\(.*\\)" (1 (org-get-level-face 1))
|
||||||
(2 (org-get-level-face 2)) (3 (org-get-level-face 3)))
|
(2 (org-get-level-face 2)) (3 (org-get-level-face 3)))
|
||||||
'("^[ \t]*\\(\\(|\\|\\+-[-+]\\).*\\S-\\)"
|
'("^[ \t]*\\(\\(|\\|\\+-[-+]\\).*\\S-\\)"
|
||||||
(1 'org-table))
|
(1 'org-table))
|
||||||
|
;; Links
|
||||||
(if (memq 'angle lk) '(org-activate-angle-links (0 'org-link t)))
|
(if (memq 'angle lk) '(org-activate-angle-links (0 'org-link t)))
|
||||||
(if (memq 'plain lk) '(org-activate-plain-links (0 'org-link t)))
|
(if (memq 'plain lk) '(org-activate-plain-links (0 'org-link t)))
|
||||||
(if (memq 'bracket lk) '(org-activate-bracket-links (0 'org-link t)))
|
(if (memq 'bracket lk) '(org-activate-bracket-links (0 'org-link t)))
|
||||||
|
@ -2824,27 +2910,36 @@ between words."
|
||||||
(if (memq 'tag lk) '(org-activate-tags (1 'org-tag prepend)))
|
(if (memq 'tag lk) '(org-activate-tags (1 'org-tag prepend)))
|
||||||
(if org-table-limit-column-width
|
(if org-table-limit-column-width
|
||||||
'(org-hide-wide-columns (0 nil append)))
|
'(org-hide-wide-columns (0 nil append)))
|
||||||
|
;; TODO lines
|
||||||
(list (concat "^\\*+[ \t]*" org-not-done-regexp)
|
(list (concat "^\\*+[ \t]*" org-not-done-regexp)
|
||||||
'(1 'org-todo t))
|
'(1 'org-todo t))
|
||||||
|
;; Priorities
|
||||||
(list (concat "\\[#[A-Z]\\]") '(0 'org-special-keyword t))
|
(list (concat "\\[#[A-Z]\\]") '(0 'org-special-keyword t))
|
||||||
|
;; Special keywords
|
||||||
(list (concat "\\<" org-deadline-string) '(0 'org-special-keyword t))
|
(list (concat "\\<" org-deadline-string) '(0 'org-special-keyword t))
|
||||||
(list (concat "\\<" org-scheduled-string) '(0 'org-special-keyword t))
|
(list (concat "\\<" org-scheduled-string) '(0 'org-special-keyword t))
|
||||||
(list (concat "\\<" org-closed-string) '(0 'org-special-keyword t))
|
(list (concat "\\<" org-closed-string) '(0 'org-special-keyword t))
|
||||||
; (if em '("\\(\\W\\|^\\)\\(\\*\\w+\\*\\)\\(\\W\\|$\\)" 2 'bold prepend))
|
;; Emphasis
|
||||||
; (if em '("\\(\\W\\|^\\)\\(/\\w+/\\)\\(\\W\\|$\\)" 2 'italic prepend))
|
|
||||||
; (if em '("\\(\\W\\|^\\)\\(_\\w+_\\)\\(\\W\\|$\\)" 2 'underline prepend))
|
|
||||||
(if em (list org-bold-re 2 ''bold 'prepend))
|
(if em (list org-bold-re 2 ''bold 'prepend))
|
||||||
(if em (list org-italic-re 2 ''italic 'prepend))
|
(if em (list org-italic-re 2 ''italic 'prepend))
|
||||||
(if em (list org-underline-re 2 ''underline 'prepend))
|
(if em (list org-underline-re 2 ''underline 'prepend))
|
||||||
|
;; Checkboxes, similar to Frank Ruell's org-checklet.el
|
||||||
|
'("^[ \t]*\\([-+*]\\|[0-9]+[.)]\\) +\\(\\[_\\]\\)"
|
||||||
|
2 'bold prepend)
|
||||||
|
'("^[ \t]*\\([-+*]\\|[0-9]+[.)]\\) +\\(\\[X\\]\\)"
|
||||||
|
2 'bold prepend)
|
||||||
|
;; COMMENT
|
||||||
(list (concat "^\\*+[ \t]*\\<\\(" org-comment-string
|
(list (concat "^\\*+[ \t]*\\<\\(" org-comment-string
|
||||||
"\\|" org-quote-string "\\)\\>")
|
"\\|" org-quote-string "\\)\\>")
|
||||||
'(1 'org-special-keyword t))
|
'(1 'org-special-keyword t))
|
||||||
'("^#.*" (0 'font-lock-comment-face t))
|
'("^#.*" (0 'font-lock-comment-face t))
|
||||||
|
;; DONE
|
||||||
(if org-fontify-done-headline
|
(if org-fontify-done-headline
|
||||||
(list (concat "^[*]+ +\\<\\(" org-done-string "\\)\\(.*\\)\\>")
|
(list (concat "^[*]+ +\\<\\(" org-done-string "\\)\\(.*\\)\\>")
|
||||||
'(1 'org-done t) '(2 'org-headline-done t))
|
'(1 'org-done t) '(2 'org-headline-done t))
|
||||||
(list (concat "^[*]+ +\\<\\(" org-done-string "\\)\\>")
|
(list (concat "^[*]+ +\\<\\(" org-done-string "\\)\\>")
|
||||||
'(1 'org-done t)))
|
'(1 'org-done t)))
|
||||||
|
;; Table stuff
|
||||||
'("^[ \t]*\\(:.*\\)" (1 'org-table t))
|
'("^[ \t]*\\(:.*\\)" (1 'org-table t))
|
||||||
'("| *\\(:?=[^|\n]*\\)" (1 'org-formula t))
|
'("| *\\(:?=[^|\n]*\\)" (1 'org-formula t))
|
||||||
'("^[ \t]*| *\\([#!$*_^]\\) *|" (1 'org-formula t))
|
'("^[ \t]*| *\\([#!$*_^]\\) *|" (1 'org-formula t))
|
||||||
|
@ -2886,7 +2981,11 @@ between words."
|
||||||
;;; Visibility cycling
|
;;; Visibility cycling
|
||||||
|
|
||||||
(defvar org-cycle-global-status nil)
|
(defvar org-cycle-global-status nil)
|
||||||
|
(make-variable-buffer-local 'org-cycle-global-status)
|
||||||
(defvar org-cycle-subtree-status nil)
|
(defvar org-cycle-subtree-status nil)
|
||||||
|
(make-variable-buffer-local 'org-cycle-subtree-status)
|
||||||
|
|
||||||
|
;;;###autoload
|
||||||
(defun org-cycle (&optional arg)
|
(defun org-cycle (&optional arg)
|
||||||
"Visibility cycling for Org-mode.
|
"Visibility cycling for Org-mode.
|
||||||
|
|
||||||
|
@ -2916,15 +3015,17 @@ between words."
|
||||||
no headline in line 1, this function will act as if called with prefix arg."
|
no headline in line 1, this function will act as if called with prefix arg."
|
||||||
(interactive "P")
|
(interactive "P")
|
||||||
|
|
||||||
(if (or (and (bobp) (not (looking-at outline-regexp)))
|
(let* ((outline-regexp
|
||||||
(equal arg '(4)))
|
(if org-cycle-include-plain-lists
|
||||||
;; special case: use global cycling
|
"\\*+\\|\\([ \t]*\\)\\([-+*]\\|[0-9]+[.)]\\) "
|
||||||
(setq arg t))
|
outline-regexp))
|
||||||
|
(bob-special (and org-cycle-global-at-bob (bobp)
|
||||||
|
(not (looking-at outline-regexp))))
|
||||||
|
(org-cycle-hook (if bob-special nil org-cycle-hook)))
|
||||||
|
|
||||||
(let ((outline-regexp
|
(if (or bob-special (equal arg '(4)))
|
||||||
(if org-cycle-include-plain-lists
|
;; special case: use global cycling
|
||||||
"\\*+\\|\\([ \t]*\\)\\([-+*]\\|[0-9]+[.)]\\) "
|
(setq arg t))
|
||||||
outline-regexp)))
|
|
||||||
|
|
||||||
(cond
|
(cond
|
||||||
|
|
||||||
|
@ -2944,18 +3045,8 @@ between words."
|
||||||
;; We just created the overview - now do table of contents
|
;; We just created the overview - now do table of contents
|
||||||
;; This can be slow in very large buffers, so indicate action
|
;; This can be slow in very large buffers, so indicate action
|
||||||
(message "CONTENTS...")
|
(message "CONTENTS...")
|
||||||
(save-excursion
|
(org-content)
|
||||||
;; Visit all headings and show their offspring
|
(message "CONTENTS...done")
|
||||||
(goto-char (point-max))
|
|
||||||
(catch 'exit
|
|
||||||
(while (and (progn (condition-case nil
|
|
||||||
(outline-previous-visible-heading 1)
|
|
||||||
(error (goto-char (point-min))))
|
|
||||||
t)
|
|
||||||
(looking-at outline-regexp))
|
|
||||||
(show-branches)
|
|
||||||
(if (bobp) (throw 'exit nil))))
|
|
||||||
(message "CONTENTS...done"))
|
|
||||||
(setq org-cycle-global-status 'contents)
|
(setq org-cycle-global-status 'contents)
|
||||||
(run-hook-with-args 'org-cycle-hook 'contents))
|
(run-hook-with-args 'org-cycle-hook 'contents))
|
||||||
|
|
||||||
|
@ -2969,7 +3060,7 @@ between words."
|
||||||
|
|
||||||
(t
|
(t
|
||||||
;; Default action: go to overview
|
;; Default action: go to overview
|
||||||
(hide-sublevels 1)
|
(org-overview)
|
||||||
(message "OVERVIEW")
|
(message "OVERVIEW")
|
||||||
(setq org-cycle-global-status 'overview)
|
(setq org-cycle-global-status 'overview)
|
||||||
(run-hook-with-args 'org-cycle-hook 'overview))))
|
(run-hook-with-args 'org-cycle-hook 'overview))))
|
||||||
|
@ -3042,6 +3133,44 @@ between words."
|
||||||
(org-back-to-heading)
|
(org-back-to-heading)
|
||||||
(org-cycle))))))
|
(org-cycle))))))
|
||||||
|
|
||||||
|
;;;###autoload
|
||||||
|
(defun org-global-cycle ()
|
||||||
|
"Cycle the global visibility. For details see `org-cycle'."
|
||||||
|
(interactive)
|
||||||
|
(org-cycle '(4)))
|
||||||
|
|
||||||
|
(defun org-overview ()
|
||||||
|
"Switch to overview mode, shoing only top-level headlines.
|
||||||
|
Really, this shows all headlines with level equal or greater than the level
|
||||||
|
of the first headline in the buffer. This is important, because if the
|
||||||
|
first headline is not level one, then (hide-sublevels 1) gives confusing
|
||||||
|
results."
|
||||||
|
(interactive)
|
||||||
|
(hide-sublevels (save-excursion
|
||||||
|
(goto-char (point-min))
|
||||||
|
(if (re-search-forward (concat "^" outline-regexp) nil t)
|
||||||
|
(progn
|
||||||
|
(goto-char (match-beginning 0))
|
||||||
|
(funcall outline-level))
|
||||||
|
1))))
|
||||||
|
|
||||||
|
;; FIXME: allow an argument to give a limiting level for this.
|
||||||
|
(defun org-content ()
|
||||||
|
"Show all headlines in the buffer, like a table of contents"
|
||||||
|
(interactive)
|
||||||
|
(save-excursion
|
||||||
|
;; Visit all headings and show their offspring
|
||||||
|
(goto-char (point-max))
|
||||||
|
(catch 'exit
|
||||||
|
(while (and (progn (condition-case nil
|
||||||
|
(outline-previous-visible-heading 1)
|
||||||
|
(error (goto-char (point-min))))
|
||||||
|
t)
|
||||||
|
(looking-at outline-regexp))
|
||||||
|
(show-branches)
|
||||||
|
(if (bobp) (throw 'exit nil))))))
|
||||||
|
|
||||||
|
|
||||||
(defun org-optimize-window-after-visibility-change (state)
|
(defun org-optimize-window-after-visibility-change (state)
|
||||||
"Adjust the window after a change in outline visibility.
|
"Adjust the window after a change in outline visibility.
|
||||||
This function is the default value of the hook `org-cycle-hook'."
|
This function is the default value of the hook `org-cycle-hook'."
|
||||||
|
@ -3204,7 +3333,6 @@ or nil."
|
||||||
(defvar org-ignore-region nil
|
(defvar org-ignore-region nil
|
||||||
"To temporarily disable the active region.")
|
"To temporarily disable the active region.")
|
||||||
|
|
||||||
;; FIXME: Fix behavior if point is on the stars but not at bol.
|
|
||||||
(defun org-insert-heading (&optional force-heading)
|
(defun org-insert-heading (&optional force-heading)
|
||||||
"Insert a new heading or item with same depth at point.
|
"Insert a new heading or item with same depth at point.
|
||||||
If point is in a plain list and FORCE-HEADING is nil, create a new list item.
|
If point is in a plain list and FORCE-HEADING is nil, create a new list item.
|
||||||
|
@ -3218,10 +3346,10 @@ the current headline."
|
||||||
(when (or force-heading (not (org-insert-item)))
|
(when (or force-heading (not (org-insert-item)))
|
||||||
(let* ((head (save-excursion
|
(let* ((head (save-excursion
|
||||||
(condition-case nil
|
(condition-case nil
|
||||||
(org-back-to-heading)
|
(progn
|
||||||
(error (outline-next-heading)))
|
(org-back-to-heading)
|
||||||
(prog1 (match-string 0)
|
(match-string 0))
|
||||||
(funcall outline-level))))
|
(error "*"))))
|
||||||
pos)
|
pos)
|
||||||
(cond
|
(cond
|
||||||
((and (org-on-heading-p) (bolp)
|
((and (org-on-heading-p) (bolp)
|
||||||
|
@ -3245,10 +3373,14 @@ Return t when things worked, nil when we are not in an item."
|
||||||
(org-at-item-p)
|
(org-at-item-p)
|
||||||
t)
|
t)
|
||||||
(error nil)))
|
(error nil)))
|
||||||
|
(debug)
|
||||||
(let* ((bul (match-string 0))
|
(let* ((bul (match-string 0))
|
||||||
|
(end (match-end 0))
|
||||||
(eow (save-excursion (beginning-of-line 1) (looking-at "[ \t]*")
|
(eow (save-excursion (beginning-of-line 1) (looking-at "[ \t]*")
|
||||||
(match-end 0)))
|
(match-end 0)))
|
||||||
(eowcol (save-excursion (goto-char eow) (current-column)))
|
(eowcol (save-excursion (goto-char eow) (current-column)))
|
||||||
|
(checkboxp (save-excursion (goto-char end)
|
||||||
|
(looking-at "[ \t]*\\[[_X]\\]")))
|
||||||
pos)
|
pos)
|
||||||
(cond
|
(cond
|
||||||
((and (org-at-item-p) (<= (point) eow))
|
((and (org-at-item-p) (<= (point) eow))
|
||||||
|
@ -3258,7 +3390,7 @@ Return t when things worked, nil when we are not in an item."
|
||||||
((<= (point) eow)
|
((<= (point) eow)
|
||||||
(beginning-of-line 1))
|
(beginning-of-line 1))
|
||||||
(t (newline)))
|
(t (newline)))
|
||||||
(insert bul)
|
(insert bul (if checkboxp "[_]" ""))
|
||||||
(just-one-space)
|
(just-one-space)
|
||||||
(setq pos (point))
|
(setq pos (point))
|
||||||
(end-of-line 1)
|
(end-of-line 1)
|
||||||
|
@ -3618,6 +3750,20 @@ If optional TXT is given, check this string instead of the current kill."
|
||||||
((= llt ?\)) "\\([ \t]*\\([-+]\\|\\([0-9]+)\\)\\)\\|[ \t]+\\*\\)\\( \\|$\\)")
|
((= llt ?\)) "\\([ \t]*\\([-+]\\|\\([0-9]+)\\)\\)\\|[ \t]+\\*\\)\\( \\|$\\)")
|
||||||
(t (error "Invalid value of `org-plain-list-ordered-item-terminator'")))))))
|
(t (error "Invalid value of `org-plain-list-ordered-item-terminator'")))))))
|
||||||
|
|
||||||
|
(defun org-at-item-checkbox-p ()
|
||||||
|
"Is point at a line starting a plain-list item with a checklet?"
|
||||||
|
(and (org-at-item-p)
|
||||||
|
(save-excursion
|
||||||
|
(goto-char (match-end 0))
|
||||||
|
(skip-chars-forward " \t")
|
||||||
|
(looking-at "\\[[_X]\\]"))))
|
||||||
|
|
||||||
|
(defun org-toggle-checkbox ()
|
||||||
|
"Toggle the checkbox in the current line."
|
||||||
|
(save-excursion
|
||||||
|
(if (org-at-item-checklet-p)
|
||||||
|
(replace-match (if (equal (match-string 0) "[_]") "[X]" "[_]") t t))))
|
||||||
|
|
||||||
(defun org-get-indentation ()
|
(defun org-get-indentation ()
|
||||||
"Get the indentation of the current line, interpreting tabs."
|
"Get the indentation of the current line, interpreting tabs."
|
||||||
(save-excursion
|
(save-excursion
|
||||||
|
@ -3755,7 +3901,7 @@ doing the renumbering."
|
||||||
|
|
||||||
(defun org-renumber-ordered-list (arg)
|
(defun org-renumber-ordered-list (arg)
|
||||||
"Renumber an ordered plain list.
|
"Renumber an ordered plain list.
|
||||||
Cursor next to be in the first line of an item, the line that starts
|
Cursor needs to be in the first line of an item, the line that starts
|
||||||
with something like \"1.\" or \"2)\"."
|
with something like \"1.\" or \"2)\"."
|
||||||
(interactive "p")
|
(interactive "p")
|
||||||
(unless (and (org-at-item-p)
|
(unless (and (org-at-item-p)
|
||||||
|
@ -4068,35 +4214,35 @@ prefix arg, switch to that state."
|
||||||
(member (member this org-todo-keywords))
|
(member (member this org-todo-keywords))
|
||||||
(tail (cdr member))
|
(tail (cdr member))
|
||||||
(state (cond
|
(state (cond
|
||||||
((equal arg '(4))
|
((equal arg '(4))
|
||||||
;; Read a state with completion
|
;; Read a state with completion
|
||||||
(completing-read "State: " (mapcar (lambda(x) (list x))
|
(completing-read "State: " (mapcar (lambda(x) (list x))
|
||||||
org-todo-keywords)
|
org-todo-keywords)
|
||||||
nil t))
|
nil t))
|
||||||
((eq arg 'right)
|
((eq arg 'right)
|
||||||
(if this
|
(if this
|
||||||
(if tail (car tail) nil)
|
(if tail (car tail) nil)
|
||||||
(car org-todo-keywords)))
|
(car org-todo-keywords)))
|
||||||
((eq arg 'left)
|
((eq arg 'left)
|
||||||
(if (equal member org-todo-keywords)
|
(if (equal member org-todo-keywords)
|
||||||
nil
|
nil
|
||||||
(if this
|
(if this
|
||||||
(nth (- (length org-todo-keywords) (length tail) 2)
|
(nth (- (length org-todo-keywords) (length tail) 2)
|
||||||
org-todo-keywords)
|
org-todo-keywords)
|
||||||
org-done-string)))
|
org-done-string)))
|
||||||
(arg
|
(arg
|
||||||
;; user requests a specific state
|
;; user requests a specific state
|
||||||
(nth (1- (prefix-numeric-value arg))
|
(nth (1- (prefix-numeric-value arg))
|
||||||
org-todo-keywords))
|
org-todo-keywords))
|
||||||
((null member) (car org-todo-keywords))
|
((null member) (car org-todo-keywords))
|
||||||
((null tail) nil) ;; -> first entry
|
((null tail) nil) ;; -> first entry
|
||||||
((eq org-todo-interpretation 'sequence)
|
((eq org-todo-interpretation 'sequence)
|
||||||
(car tail))
|
(car tail))
|
||||||
((memq org-todo-interpretation '(type priority))
|
((memq org-todo-interpretation '(type priority))
|
||||||
(if (eq this-command last-command)
|
(if (eq this-command last-command)
|
||||||
(car tail)
|
(car tail)
|
||||||
(if (> (length tail) 0) org-done-string nil)))
|
(if (> (length tail) 0) org-done-string nil)))
|
||||||
(t nil)))
|
(t nil)))
|
||||||
(next (if state (concat " " state " ") " ")))
|
(next (if state (concat " " state " ") " ")))
|
||||||
(replace-match next t t)
|
(replace-match next t t)
|
||||||
(setq org-last-todo-state-is-todo
|
(setq org-last-todo-state-is-todo
|
||||||
|
@ -4175,7 +4321,7 @@ of `org-todo-keywords'."
|
||||||
A timestamp is also inserted - use \\[org-timestamp-up] and \\[org-timestamp-down]
|
A timestamp is also inserted - use \\[org-timestamp-up] and \\[org-timestamp-down]
|
||||||
to modify it to the correct date."
|
to modify it to the correct date."
|
||||||
(interactive)
|
(interactive)
|
||||||
(org-add-planning-info 'deadline nil nil)) ;; FIXME: remove closed?
|
(org-add-planning-info 'deadline nil 'closed))
|
||||||
|
|
||||||
(defun org-schedule ()
|
(defun org-schedule ()
|
||||||
"Insert the SCHEDULED: string to schedule a TODO item.
|
"Insert the SCHEDULED: string to schedule a TODO item.
|
||||||
|
@ -4191,6 +4337,14 @@ If non is given, the user is prompted for a date.
|
||||||
REMOVE indicates what kind of entries to remove. An old WHAT entry will also
|
REMOVE indicates what kind of entries to remove. An old WHAT entry will also
|
||||||
be removed."
|
be removed."
|
||||||
(interactive)
|
(interactive)
|
||||||
|
(when what (setq time (or time (org-read-date nil 'to-time))))
|
||||||
|
(when (and org-insert-labeled-timestamps-at-point
|
||||||
|
(member what '(scheduled deadline)))
|
||||||
|
(insert
|
||||||
|
(if (eq what 'scheduled) org-scheduled-string org-deadline-string)
|
||||||
|
" "
|
||||||
|
(format-time-string (car org-time-stamp-formats) time))
|
||||||
|
(setq what nil))
|
||||||
(save-excursion
|
(save-excursion
|
||||||
(let (beg end col list elt (buffer-invisibility-spec nil) ts)
|
(let (beg end col list elt (buffer-invisibility-spec nil) ts)
|
||||||
(org-back-to-heading t)
|
(org-back-to-heading t)
|
||||||
|
@ -4234,7 +4388,7 @@ be removed."
|
||||||
(if (eq what 'closed)
|
(if (eq what 'closed)
|
||||||
(concat "[" (substring (cdr org-time-stamp-formats) 1 -1) "]")
|
(concat "[" (substring (cdr org-time-stamp-formats) 1 -1) "]")
|
||||||
(car org-time-stamp-formats))
|
(car org-time-stamp-formats))
|
||||||
(or time (org-read-date nil 'to-time))))))
|
time))))
|
||||||
(goto-char (point-min))
|
(goto-char (point-min))
|
||||||
(widen)
|
(widen)
|
||||||
(if (looking-at "[ \t]+\r?\n")
|
(if (looking-at "[ \t]+\r?\n")
|
||||||
|
@ -4254,7 +4408,7 @@ that the match should indeed be shown."
|
||||||
(let ((cnt 0))
|
(let ((cnt 0))
|
||||||
(save-excursion
|
(save-excursion
|
||||||
(goto-char (point-min))
|
(goto-char (point-min))
|
||||||
(hide-sublevels 1)
|
(org-overview)
|
||||||
(while (re-search-forward regexp nil t)
|
(while (re-search-forward regexp nil t)
|
||||||
(when (or (not callback)
|
(when (or (not callback)
|
||||||
(save-match-data (funcall callback)))
|
(save-match-data (funcall callback)))
|
||||||
|
@ -4915,7 +5069,6 @@ If there is already a time stamp at the cursor position, update it."
|
||||||
(defvar org-agenda-type nil)
|
(defvar org-agenda-type nil)
|
||||||
(defvar org-agenda-force-single-file nil)
|
(defvar org-agenda-force-single-file nil)
|
||||||
|
|
||||||
;;;###autoload
|
|
||||||
(defun org-agenda-mode ()
|
(defun org-agenda-mode ()
|
||||||
"Mode for time-sorted view on action items in Org-mode files.
|
"Mode for time-sorted view on action items in Org-mode files.
|
||||||
|
|
||||||
|
@ -5592,7 +5745,7 @@ If ERROR is non-nil, throw an error, otherwise just return nil."
|
||||||
(if (memq org-agenda-type types)
|
(if (memq org-agenda-type types)
|
||||||
t
|
t
|
||||||
(if error
|
(if error
|
||||||
(error "Now allowed in %s-type agenda buffers" org-agenda-type)
|
(error "Not allowed in %s-type agenda buffers" org-agenda-type)
|
||||||
nil)))
|
nil)))
|
||||||
|
|
||||||
(defun org-agenda-quit ()
|
(defun org-agenda-quit ()
|
||||||
|
@ -6888,7 +7041,7 @@ the same tree node, and the headline of the tree node in the Org-mode file."
|
||||||
(beginning-of-line 1)))
|
(beginning-of-line 1)))
|
||||||
|
|
||||||
(defun org-get-tags-at (&optional pos)
|
(defun org-get-tags-at (&optional pos)
|
||||||
"Get a list of all headline targs applicable at POS.
|
"Get a list of all headline tags applicable at POS.
|
||||||
POS defaults to point. If tags are inherited, the list contains
|
POS defaults to point. If tags are inherited, the list contains
|
||||||
the targets in the same sequence as the headlines appear, i.e.
|
the targets in the same sequence as the headlines appear, i.e.
|
||||||
the tags of the current headline come last."
|
the tags of the current headline come last."
|
||||||
|
@ -6982,6 +7135,7 @@ be used to request time specification in the time stamp."
|
||||||
(org-agenda-error)))
|
(org-agenda-error)))
|
||||||
(buffer (marker-buffer marker))
|
(buffer (marker-buffer marker))
|
||||||
(pos (marker-position marker))
|
(pos (marker-position marker))
|
||||||
|
(org-insert-labeled-timestamps-at-point nil)
|
||||||
ts)
|
ts)
|
||||||
(with-current-buffer buffer
|
(with-current-buffer buffer
|
||||||
(widen)
|
(widen)
|
||||||
|
@ -6998,6 +7152,7 @@ be used to request time specification in the time stamp."
|
||||||
(org-agenda-error)))
|
(org-agenda-error)))
|
||||||
(buffer (marker-buffer marker))
|
(buffer (marker-buffer marker))
|
||||||
(pos (marker-position marker))
|
(pos (marker-position marker))
|
||||||
|
(org-insert-labeled-timestamps-at-point nil)
|
||||||
ts)
|
ts)
|
||||||
(with-current-buffer buffer
|
(with-current-buffer buffer
|
||||||
(widen)
|
(widen)
|
||||||
|
@ -7177,7 +7332,7 @@ are included in the output."
|
||||||
|
|
||||||
(save-excursion
|
(save-excursion
|
||||||
(goto-char (point-min))
|
(goto-char (point-min))
|
||||||
(when (eq action 'sparse-tree) (hide-sublevels 1))
|
(when (eq action 'sparse-tree) (org-overview))
|
||||||
(while (re-search-forward re nil t)
|
(while (re-search-forward re nil t)
|
||||||
(setq todo (if (match-end 1) (match-string 2))
|
(setq todo (if (match-end 1) (match-string 2))
|
||||||
tags (if (match-end 4) (match-string 4)))
|
tags (if (match-end 4) (match-string 4)))
|
||||||
|
@ -8355,12 +8510,13 @@ For file links, arg negates `org-context-in-file-links'."
|
||||||
((org-region-active-p)
|
((org-region-active-p)
|
||||||
(buffer-substring (region-beginning) (region-end)))
|
(buffer-substring (region-beginning) (region-end)))
|
||||||
(t (buffer-substring (point-at-bol) (point-at-eol)))))
|
(t (buffer-substring (point-at-bol) (point-at-eol)))))
|
||||||
(setq cpltxt
|
(when (string-match "\\S-" txt)
|
||||||
(concat cpltxt "::"
|
(setq cpltxt
|
||||||
(if org-file-link-context-use-camel-case
|
(concat cpltxt "::"
|
||||||
(org-make-org-heading-camel txt)
|
(if org-file-link-context-use-camel-case
|
||||||
(org-make-org-heading-search-string txt)))
|
(org-make-org-heading-camel txt)
|
||||||
desc "NONE")))
|
(org-make-org-heading-search-string txt)))
|
||||||
|
desc "NONE"))))
|
||||||
(if (string-match "::\\'" cpltxt)
|
(if (string-match "::\\'" cpltxt)
|
||||||
(setq cpltxt (substring cpltxt 0 -2)))
|
(setq cpltxt (substring cpltxt 0 -2)))
|
||||||
(setq link (org-make-link cpltxt)))
|
(setq link (org-make-link cpltxt)))
|
||||||
|
@ -8374,12 +8530,14 @@ For file links, arg negates `org-context-in-file-links'."
|
||||||
(setq txt (if (org-region-active-p)
|
(setq txt (if (org-region-active-p)
|
||||||
(buffer-substring (region-beginning) (region-end))
|
(buffer-substring (region-beginning) (region-end))
|
||||||
(buffer-substring (point-at-bol) (point-at-eol))))
|
(buffer-substring (point-at-bol) (point-at-eol))))
|
||||||
(setq cpltxt
|
;; Only use search option if there is some text.
|
||||||
(concat cpltxt "::"
|
(when (string-match "\\S-" txt)
|
||||||
(if org-file-link-context-use-camel-case
|
(setq cpltxt
|
||||||
(org-make-org-heading-camel txt)
|
(concat cpltxt "::"
|
||||||
(org-make-org-heading-search-string txt)))
|
(if org-file-link-context-use-camel-case
|
||||||
desc "NONE"))
|
(org-make-org-heading-camel txt)
|
||||||
|
(org-make-org-heading-search-string txt)))
|
||||||
|
desc "NONE")))
|
||||||
(setq link (org-make-link cpltxt)))
|
(setq link (org-make-link cpltxt)))
|
||||||
|
|
||||||
((interactive-p)
|
((interactive-p)
|
||||||
|
@ -8603,16 +8761,39 @@ is in the current directory or below."
|
||||||
;; URL-like link, normalize the use of angular brackets.
|
;; URL-like link, normalize the use of angular brackets.
|
||||||
(setq link (org-make-link (org-remove-angle-brackets link))))
|
(setq link (org-make-link (org-remove-angle-brackets link))))
|
||||||
|
|
||||||
;; Check if we are linking to the current file. If yes, simplify the link.
|
;; Check if we are linking to the current file with a search option
|
||||||
|
;; If yes, simplify the link by using only the search option.
|
||||||
(when (string-match "\\<file:\\(.+?\\)::\\([^>]+\\)" link)
|
(when (string-match "\\<file:\\(.+?\\)::\\([^>]+\\)" link)
|
||||||
(let* ((path (match-string 1 link))
|
(let* ((path (match-string 1 link))
|
||||||
(case-fold-search nil)
|
(case-fold-search nil)
|
||||||
(search (match-string 2 link)))
|
(search (match-string 2 link)))
|
||||||
(when (save-match-data
|
(save-match-data
|
||||||
(equal (file-truename buffer-file-name)
|
(if (equal (file-truename buffer-file-name) (file-truename path))
|
||||||
(file-truename path)))
|
;; We are linking to this same file, with a search option
|
||||||
;; We are linking to this same file, with a search option
|
(setq link search)))))
|
||||||
(setq link search))))
|
|
||||||
|
;; Check if we can/should use a relative path. If yes, simplify the link
|
||||||
|
(when (string-match "\\<file:\\(.*\\)" link)
|
||||||
|
(let* ((path (match-string 1 link))
|
||||||
|
(case-fold-search nil))
|
||||||
|
(cond
|
||||||
|
((eq org-link-file-path-type 'absolute)
|
||||||
|
(setq path (abbreviate-file-name (expand-file-name path))))
|
||||||
|
((eq org-link-file-path-type 'noabbrev)
|
||||||
|
(setq path (expand-file-name path)))
|
||||||
|
((eq org-link-file-path-type 'relative)
|
||||||
|
(setq path (file-relative-name path)))
|
||||||
|
(t
|
||||||
|
(save-match-data
|
||||||
|
(if (string-match (concat "^" (regexp-quote
|
||||||
|
(file-name-as-directory
|
||||||
|
(expand-file-name "."))))
|
||||||
|
(expand-file-name path))
|
||||||
|
;; We are linking a file with relative path name.
|
||||||
|
(setq path (substring (expand-file-name path)
|
||||||
|
(match-end 0)))))))
|
||||||
|
(setq link (concat "file:" path))))
|
||||||
|
|
||||||
(setq desc (read-string "Description: " desc))
|
(setq desc (read-string "Description: " desc))
|
||||||
(unless (string-match "\\S-" desc) (setq desc nil))
|
(unless (string-match "\\S-" desc) (setq desc nil))
|
||||||
(if remove (apply 'delete-region remove))
|
(if remove (apply 'delete-region remove))
|
||||||
|
@ -8645,7 +8826,7 @@ RET on headline -> Store as sublevel entry to current headline
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defun org-remember-apply-template ()
|
(defun org-remember-apply-template ()
|
||||||
"Initialize *remember* buffer with template, invode `org-mode'.
|
"Initialize *remember* buffer with template, invoke `org-mode'.
|
||||||
This function should be placed into `remember-mode-hook' and in fact requires
|
This function should be placed into `remember-mode-hook' and in fact requires
|
||||||
to be run from that hook to fucntion properly."
|
to be run from that hook to fucntion properly."
|
||||||
(if org-remember-templates
|
(if org-remember-templates
|
||||||
|
@ -9189,8 +9370,6 @@ With argument TABLE-TYPE, go to the beginning of a table.el-type table."
|
||||||
(if table-type org-table-any-border-regexp
|
(if table-type org-table-any-border-regexp
|
||||||
org-table-border-regexp)
|
org-table-border-regexp)
|
||||||
nil t))
|
nil t))
|
||||||
; FIXME: OK to just use beginning-of-buffer?
|
|
||||||
; (error "Can't find beginning of table")
|
|
||||||
(progn (goto-char (point-min)) (point))
|
(progn (goto-char (point-min)) (point))
|
||||||
(goto-char (match-beginning 0))
|
(goto-char (match-beginning 0))
|
||||||
(beginning-of-line 2)
|
(beginning-of-line 2)
|
||||||
|
@ -9538,7 +9717,7 @@ If TABLE-TYPE is non-nil, also check for table.el-type tables."
|
||||||
"Please position cursor in a data line for column operations")))))
|
"Please position cursor in a data line for column operations")))))
|
||||||
|
|
||||||
(defun org-table-delete-column ()
|
(defun org-table-delete-column ()
|
||||||
"Delete a column into the table."
|
"Delete a column from the table."
|
||||||
(interactive)
|
(interactive)
|
||||||
(if (not (org-at-table-p))
|
(if (not (org-at-table-p))
|
||||||
(error "Not at a table"))
|
(error "Not at a table"))
|
||||||
|
@ -9677,7 +9856,7 @@ With prefix ARG, insert above the current line."
|
||||||
In particular, this does handle wide and invisible characters."
|
In particular, this does handle wide and invisible characters."
|
||||||
(if (string-match "^[ \t]*|-" s)
|
(if (string-match "^[ \t]*|-" s)
|
||||||
;; It's a hline, just map the characters
|
;; It's a hline, just map the characters
|
||||||
(setq s (mapcar (lambda (x) (if (member x '(?| ?+)) ?| ?\ )) s))
|
(setq s (mapconcat (lambda (x) (if (member x '(?| ?+)) "|" " ")) s ""))
|
||||||
(while (string-match "|\\([ \t]*?[^ \t\r\n|][^\r\n|]*\\)|" s)
|
(while (string-match "|\\([ \t]*?[^ \t\r\n|][^\r\n|]*\\)|" s)
|
||||||
(setq s (replace-match
|
(setq s (replace-match
|
||||||
(concat "|" (make-string (org-string-width (match-string 1 s))
|
(concat "|" (make-string (org-string-width (match-string 1 s))
|
||||||
|
@ -10262,7 +10441,7 @@ the current column, to avoid unnecessary parsing."
|
||||||
"\n")))
|
"\n")))
|
||||||
|
|
||||||
(defun org-table-get-stored-formulas ()
|
(defun org-table-get-stored-formulas ()
|
||||||
"Return an alist with the t=stored formulas directly after current table."
|
"Return an alist with the stored formulas directly after current table."
|
||||||
(interactive)
|
(interactive)
|
||||||
(let (scol eq eq-alist strings string seen)
|
(let (scol eq eq-alist strings string seen)
|
||||||
(save-excursion
|
(save-excursion
|
||||||
|
@ -11179,6 +11358,7 @@ overwritten, and the table is not marked as requiring realignment."
|
||||||
(:sub-superscript . org-export-with-sub-superscripts)
|
(:sub-superscript . org-export-with-sub-superscripts)
|
||||||
(:TeX-macros . org-export-with-TeX-macros)
|
(:TeX-macros . org-export-with-TeX-macros)
|
||||||
(:fixed-width . org-export-with-fixed-width)
|
(:fixed-width . org-export-with-fixed-width)
|
||||||
|
(:timestamps . org-export-with-timestamps)
|
||||||
(:tables . org-export-with-tables)
|
(:tables . org-export-with-tables)
|
||||||
(:table-auto-headline . org-export-highlight-first-table-line)
|
(:table-auto-headline . org-export-highlight-first-table-line)
|
||||||
(:style . org-export-html-style)
|
(:style . org-export-html-style)
|
||||||
|
@ -11831,6 +12011,19 @@ underlined headlines. The default is 3."
|
||||||
(t (insert line "\n"))))
|
(t (insert line "\n"))))
|
||||||
(normal-mode)
|
(normal-mode)
|
||||||
(save-buffer)
|
(save-buffer)
|
||||||
|
;; remove display and invisible chars
|
||||||
|
(let (beg end s)
|
||||||
|
(goto-char (point-min))
|
||||||
|
(while (setq beg (next-single-property-change (point) 'display))
|
||||||
|
(setq end (next-single-property-change beg 'display))
|
||||||
|
(delete-region beg end)
|
||||||
|
(goto-char beg)
|
||||||
|
(insert "=>"))
|
||||||
|
(goto-char (point-min))
|
||||||
|
(while (setq beg (next-single-property-change (point) 'org-cwidth))
|
||||||
|
(setq end (next-single-property-change beg 'org-cwidth))
|
||||||
|
(delete-region beg end)
|
||||||
|
(goto-char beg)))
|
||||||
(goto-char (point-min))))
|
(goto-char (point-min))))
|
||||||
|
|
||||||
(defun org-search-todo-below (line lines level)
|
(defun org-search-todo-below (line lines level)
|
||||||
|
@ -11910,6 +12103,16 @@ command."
|
||||||
(goto-char (org-find-invisible))
|
(goto-char (org-find-invisible))
|
||||||
(append-to-buffer buffer s (point))
|
(append-to-buffer buffer s (point))
|
||||||
(setq s (goto-char (org-find-visible))))
|
(setq s (goto-char (org-find-visible))))
|
||||||
|
(goto-char (point-min))
|
||||||
|
(unless keepp
|
||||||
|
;; Copy all comment lines to the end, to make sure #+ settings are
|
||||||
|
;; still available for the second export step. Kind of a hack, but
|
||||||
|
;; does do the trick.
|
||||||
|
(if (looking-at "#[^\r\n]*")
|
||||||
|
(append-to-buffer buffer (match-beginning 0) (1+ (match-end 0))))
|
||||||
|
(while (re-search-forward "[\n\r]#[^\n\r]*" nil t)
|
||||||
|
(append-to-buffer buffer (1+ (match-beginning 0))
|
||||||
|
(min (point-max) (1+ (match-end 0))))))
|
||||||
(set-buffer buffer)
|
(set-buffer buffer)
|
||||||
(let ((buffer-file-name file)
|
(let ((buffer-file-name file)
|
||||||
(org-inhibit-startup t))
|
(org-inhibit-startup t))
|
||||||
|
@ -11953,7 +12156,7 @@ Does include HTML export options as well as TODO and CATEGORY stuff."
|
||||||
#+CATEGORY: %s
|
#+CATEGORY: %s
|
||||||
#+SEQ_TODO: %s
|
#+SEQ_TODO: %s
|
||||||
#+TYP_TODO: %s
|
#+TYP_TODO: %s
|
||||||
#+STARTUP: %s %s %s %s %s
|
#+STARTUP: %s %s %s %s %s %s
|
||||||
#+ARCHIVE: %s
|
#+ARCHIVE: %s
|
||||||
"
|
"
|
||||||
(buffer-name) (user-full-name) user-mail-address org-export-default-language
|
(buffer-name) (user-full-name) user-mail-address org-export-default-language
|
||||||
|
@ -11980,6 +12183,7 @@ Does include HTML export options as well as TODO and CATEGORY stuff."
|
||||||
(if org-odd-levels-only "odd" "oddeven")
|
(if org-odd-levels-only "odd" "oddeven")
|
||||||
(if org-hide-leading-stars "hidestars" "showstars")
|
(if org-hide-leading-stars "hidestars" "showstars")
|
||||||
(if org-startup-align-all-tables "align" "noalign")
|
(if org-startup-align-all-tables "align" "noalign")
|
||||||
|
(if org-log-done "logging" "nologging")
|
||||||
org-archive-location
|
org-archive-location
|
||||||
))
|
))
|
||||||
|
|
||||||
|
@ -12378,15 +12582,6 @@ org-mode's default settings, but still inferior to file-local settings."
|
||||||
(setq line (replace-match "<span class=\"todo\">\\2</span>"
|
(setq line (replace-match "<span class=\"todo\">\\2</span>"
|
||||||
nil nil line 2))))
|
nil nil line 2))))
|
||||||
|
|
||||||
;; DEADLINES
|
|
||||||
(if (string-match org-deadline-line-regexp line)
|
|
||||||
(progn
|
|
||||||
(if (save-match-data
|
|
||||||
(string-match "<a href"
|
|
||||||
(substring line 0 (match-beginning 0))))
|
|
||||||
nil ; Don't do the replacement - it is inside a link
|
|
||||||
(setq line (replace-match "<span class=\"deadline\">\\&</span>"
|
|
||||||
nil nil line 1)))))
|
|
||||||
(cond
|
(cond
|
||||||
((string-match "^\\(\\*+\\)[ \t]*\\(.*\\)" line)
|
((string-match "^\\(\\*+\\)[ \t]*\\(.*\\)" line)
|
||||||
;; This is a headline
|
;; This is a headline
|
||||||
|
@ -12429,14 +12624,15 @@ org-mode's default settings, but still inferior to file-local settings."
|
||||||
;; Normal lines
|
;; Normal lines
|
||||||
(when (and (string-match
|
(when (and (string-match
|
||||||
(cond
|
(cond
|
||||||
((eq llt t) "^\\([ \t]*\\)\\(\\([-+*]\\)\\|\\([0-9]+[.)]\\)\\)?\\( +[^ \t\n\r]\\|[ \t]*$\\)")
|
((eq llt t) "^\\([ \t]*\\)\\(\\([-+*]\\)\\|\\([0-9]+[.)]\\) \\)?\\( *[^ \t\n\r]\\|[ \t]*$\\)")
|
||||||
((= llt ?.) "^\\([ \t]*\\)\\(\\([-+*]\\)\\|\\([0-9]+\\.\\)\\)?\\( +[^ \t\n\r]\\|[ \t]*$\\)")
|
((= llt ?.) "^\\([ \t]*\\)\\(\\([-+*]\\)\\|\\([0-9]+\\.\\) \\)?\\( *[^ \t\n\r]\\|[ \t]*$\\)")
|
||||||
((= llt ?\)) "^\\( \t]*\\)\\(\\([-+*]\\)\\|\\([0-9]+)\\)\\)?\\( +[^ \t\n\r]\\|[ \t]*$\\)")
|
((= llt ?\)) "^\\( \t]*\\)\\(\\([-+*]\\)\\|\\([0-9]+)\\) \\)?\\( *[^ \t\n\r]\\|[ \t]*$\\)")
|
||||||
(t (error "Invalid value of `org-plain-list-ordered-item-terminator'")))
|
(t (error "Invalid value of `org-plain-list-ordered-item-terminator'")))
|
||||||
line))
|
line))
|
||||||
(setq ind (org-get-string-indentation line)
|
(setq ind (org-get-string-indentation line)
|
||||||
start-is-num (match-beginning 4)
|
start-is-num (match-beginning 4)
|
||||||
starter (if (match-beginning 2) (match-string 2 line))
|
starter (if (match-beginning 2)
|
||||||
|
(substring (match-string 2 line) 0 -1))
|
||||||
line (substring line (match-beginning 5)))
|
line (substring line (match-beginning 5)))
|
||||||
(unless (string-match "[^ \t]" line)
|
(unless (string-match "[^ \t]" line)
|
||||||
;; empty line. Pretend indentation is large.
|
;; empty line. Pretend indentation is large.
|
||||||
|
@ -12646,8 +12842,28 @@ But it has the disadvantage, that Org-mode's HTML conversions cannot be used."
|
||||||
(buffer-substring (point-min) (point-max))))
|
(buffer-substring (point-min) (point-max))))
|
||||||
|
|
||||||
(defun org-html-handle-time-stamps (s)
|
(defun org-html-handle-time-stamps (s)
|
||||||
"FIXME: Format time stamps, or remove them"
|
"Format time stamps in string S, or remove them."
|
||||||
s)
|
(let (r b)
|
||||||
|
(while (string-match org-maybe-keyword-time-regexp s)
|
||||||
|
(or b (setq b (substring s 0 (match-beginning 0))))
|
||||||
|
(if (not org-export-with-timestamps)
|
||||||
|
(setq r (concat r (substring s 0 (match-beginning 0)))
|
||||||
|
s (substring s (match-end 0)))
|
||||||
|
(setq r (concat
|
||||||
|
r (substring s 0 (match-beginning 0))
|
||||||
|
(if (match-end 1)
|
||||||
|
(format "@<span class=\"timestamp-kwd\">%s @</span>"
|
||||||
|
(match-string 1 s)))
|
||||||
|
(format "@<span class=\"timestamp\">%s@</span>"
|
||||||
|
(match-string 3 s)))
|
||||||
|
s (substring s (match-end 0)))))
|
||||||
|
;; Line break of line started and ended with time stamp stuff
|
||||||
|
(if (not r)
|
||||||
|
s
|
||||||
|
(setq r (concat r s))
|
||||||
|
(unless (string-match "\\S-" (concat b s))
|
||||||
|
(setq r (concat r "@<br>")))
|
||||||
|
r)))
|
||||||
|
|
||||||
(defun org-html-protect (s)
|
(defun org-html-protect (s)
|
||||||
;; convert & to &, < to < and > to >
|
;; convert & to &, < to < and > to >
|
||||||
|
@ -12770,6 +12986,19 @@ When TITLE is nil, just close all open levels."
|
||||||
(if org-export-with-section-numbers
|
(if org-export-with-section-numbers
|
||||||
(setq title (concat (org-section-number level) " " title)))
|
(setq title (concat (org-section-number level) " " title)))
|
||||||
(setq level (+ level 1))
|
(setq level (+ level 1))
|
||||||
|
;; FIXME: here we need to handle the tags, somehow.
|
||||||
|
(when (string-match "\\(:[a-zA-Z0-9_@:]+:\\)[ \t]*$" title)
|
||||||
|
(setq title (replace-match
|
||||||
|
(if org-export-with-tags
|
||||||
|
(save-match-data
|
||||||
|
(concat
|
||||||
|
" <span class=\"tag\">"
|
||||||
|
(mapconcat 'identity (org-split-string
|
||||||
|
(match-string 1 title) ":")
|
||||||
|
" ")
|
||||||
|
"</span>"))
|
||||||
|
"")
|
||||||
|
t t title)))
|
||||||
(if with-toc
|
(if with-toc
|
||||||
(insert (format "\n<H%d><a name=\"sec-%d\">%s</a></H%d>\n"
|
(insert (format "\n<H%d><a name=\"sec-%d\">%s</a></H%d>\n"
|
||||||
level head-count title level))
|
level head-count title level))
|
||||||
|
@ -12858,7 +13087,7 @@ The XOXO buffer is named *xoxo-<source buffer name>*"
|
||||||
(plist-get opt-plist :publishing-directory))
|
(plist-get opt-plist :publishing-directory))
|
||||||
(file-name-sans-extension
|
(file-name-sans-extension
|
||||||
(file-name-nondirectory buffer-file-name))
|
(file-name-nondirectory buffer-file-name))
|
||||||
".xml"))
|
".html"))
|
||||||
(out (find-file-noselect filename))
|
(out (find-file-noselect filename))
|
||||||
(last-level 1)
|
(last-level 1)
|
||||||
(hanging-li nil))
|
(hanging-li nil))
|
||||||
|
@ -13088,6 +13317,7 @@ a time), or the day by one (if it does not contain a time)."
|
||||||
|
|
||||||
;; Make `C-c C-x' a prefix key
|
;; Make `C-c C-x' a prefix key
|
||||||
(define-key org-mode-map "\C-c\C-x" (make-sparse-keymap))
|
(define-key org-mode-map "\C-c\C-x" (make-sparse-keymap))
|
||||||
|
(define-key org-mode-map "\C-c\C-e" (make-sparse-keymap))
|
||||||
|
|
||||||
;; TAB key with modifiers
|
;; TAB key with modifiers
|
||||||
(define-key org-mode-map "\C-i" 'org-cycle)
|
(define-key org-mode-map "\C-i" 'org-cycle)
|
||||||
|
@ -13207,6 +13437,15 @@ a time), or the day by one (if it does not contain a time)."
|
||||||
(define-key org-mode-map "\C-c\C-x\M-w" 'org-copy-special)
|
(define-key org-mode-map "\C-c\C-x\M-w" 'org-copy-special)
|
||||||
(define-key org-mode-map "\C-c\C-x\C-y" 'org-paste-special)
|
(define-key org-mode-map "\C-c\C-x\C-y" 'org-paste-special)
|
||||||
|
|
||||||
|
(define-key org-mode-map "\C-c\C-ef" 'org-publish-current-file)
|
||||||
|
(define-key org-mode-map "\C-c\C-ep" 'org-publish-current-project)
|
||||||
|
(define-key org-mode-map "\C-c\C-ec" 'org-publish)
|
||||||
|
(define-key org-mode-map "\C-c\C-ea" 'org-publish-all)
|
||||||
|
(define-key org-mode-map "\C-c\C-e\C-f" 'org-publish-current-file)
|
||||||
|
(define-key org-mode-map "\C-c\C-e\C-p" 'org-publish-current-project)
|
||||||
|
(define-key org-mode-map "\C-c\C-e\C-c" 'org-publish)
|
||||||
|
(define-key org-mode-map "\C-c\C-e\C-a" 'org-publish-all)
|
||||||
|
|
||||||
(when (featurep 'xemacs)
|
(when (featurep 'xemacs)
|
||||||
(define-key org-mode-map 'button3 'popup-mode-menu))
|
(define-key org-mode-map 'button3 'popup-mode-menu))
|
||||||
|
|
||||||
|
@ -13321,7 +13560,7 @@ See the individual commands for more information."
|
||||||
(interactive)
|
(interactive)
|
||||||
(cond
|
(cond
|
||||||
((org-at-table-p) (org-table-previous-field))
|
((org-at-table-p) (org-table-previous-field))
|
||||||
(t (org-cycle '(4)))))
|
(t (org-global-cycle))))
|
||||||
|
|
||||||
(defun org-shiftmetaleft ()
|
(defun org-shiftmetaleft ()
|
||||||
"Promote subtree or delete table column.
|
"Promote subtree or delete table column.
|
||||||
|
@ -13523,6 +13762,8 @@ This command does many different things, depending on context:
|
||||||
(org-table-recalculate t)
|
(org-table-recalculate t)
|
||||||
(org-table-maybe-recalculate-line))
|
(org-table-maybe-recalculate-line))
|
||||||
(org-table-align))
|
(org-table-align))
|
||||||
|
((org-at-item-checkbox-p)
|
||||||
|
(org-toggle-checkbox))
|
||||||
((org-at-item-p)
|
((org-at-item-p)
|
||||||
(org-renumber-ordered-list (prefix-numeric-value arg)))
|
(org-renumber-ordered-list (prefix-numeric-value arg)))
|
||||||
((save-excursion (beginning-of-line 1) (looking-at "#\\+\\([A-Z]+\\)"))
|
((save-excursion (beginning-of-line 1) (looking-at "#\\+\\([A-Z]+\\)"))
|
||||||
|
@ -13711,7 +13952,7 @@ See the individual commands for more information."
|
||||||
["Export visible part..." org-export-visible t]
|
["Export visible part..." org-export-visible t]
|
||||||
["HTML" org-export-as-html t]
|
["HTML" org-export-as-html t]
|
||||||
["HTML and Open" org-export-as-html-and-open t]
|
["HTML and Open" org-export-as-html-and-open t]
|
||||||
["XML (XOXO)" org-export-as-xml t]
|
["XOXO" org-export-as-xml t]
|
||||||
"--"
|
"--"
|
||||||
["iCalendar this file" org-export-icalendar-this-file t]
|
["iCalendar this file" org-export-icalendar-this-file t]
|
||||||
["iCalendar all agenda files" org-export-icalendar-all-agenda-files
|
["iCalendar all agenda files" org-export-icalendar-all-agenda-files
|
||||||
|
|
636
org.texi
636
org.texi
|
@ -1,10 +1,11 @@
|
||||||
\input texinfo
|
\input texinfo
|
||||||
|
|
||||||
@c %**start of header
|
@c %**start of header
|
||||||
@setfilename org
|
@setfilename org
|
||||||
@c @setfilename ../info/org
|
@c @setfilename ../info/org
|
||||||
@settitle Org Mode Manual
|
@settitle Org Mode Manual
|
||||||
|
|
||||||
@set VERSION 4.29
|
@set VERSION 4.30
|
||||||
@set DATE May 2006
|
@set DATE May 2006
|
||||||
|
|
||||||
@dircategory Emacs
|
@dircategory Emacs
|
||||||
|
@ -84,6 +85,7 @@ Software Foundation raise funds for GNU development.''
|
||||||
* Tags:: Tagging headlines and matching sets of tags
|
* Tags:: Tagging headlines and matching sets of tags
|
||||||
* Agenda views:: Collecting information into views
|
* Agenda views:: Collecting information into views
|
||||||
* Exporting:: Sharing and publishing of notes
|
* Exporting:: Sharing and publishing of notes
|
||||||
|
* Publishing::
|
||||||
* Miscellaneous:: All the rest which did not fit elsewhere
|
* Miscellaneous:: All the rest which did not fit elsewhere
|
||||||
* Index:: The fast road to specific information
|
* Index:: The fast road to specific information
|
||||||
* Key Index:: Key bindings and where they are described
|
* Key Index:: Key bindings and where they are described
|
||||||
|
@ -186,7 +188,7 @@ Exporting
|
||||||
|
|
||||||
* ASCII export:: Exporting to plain ASCII
|
* ASCII export:: Exporting to plain ASCII
|
||||||
* HTML export:: Exporting to HTML
|
* HTML export:: Exporting to HTML
|
||||||
* XML export:: Exporting to XML
|
* XOXO export:: Exporting to XOXO
|
||||||
* iCalendar export:: Exporting in iCalendar format
|
* iCalendar export:: Exporting in iCalendar format
|
||||||
* Text interpretation:: How the exporter looks at the file
|
* Text interpretation:: How the exporter looks at the file
|
||||||
|
|
||||||
|
@ -196,6 +198,27 @@ Text interpretation by the exporter
|
||||||
* Enhancing text:: Subscripts, symbols and more
|
* Enhancing text:: Subscripts, symbols and more
|
||||||
* Export options:: How to influence the export settings
|
* Export options:: How to influence the export settings
|
||||||
|
|
||||||
|
Publishing
|
||||||
|
|
||||||
|
* Configuration:: Defining projects
|
||||||
|
* Sample configuration:: Example projects
|
||||||
|
* Triggering publication:: Publication commands
|
||||||
|
|
||||||
|
Configuration
|
||||||
|
|
||||||
|
* Project alist:: The central configuration variable
|
||||||
|
* File sources and destinations:: From here to there
|
||||||
|
* Selecting files:: What files are part of the project?
|
||||||
|
* Publishing action::
|
||||||
|
* Publishing options:: Tweaking HTML export
|
||||||
|
* Links:: Linking between files of a project
|
||||||
|
* Project page index:: Publishing a list of project files
|
||||||
|
|
||||||
|
Sample configuration
|
||||||
|
|
||||||
|
* Simple example:: One-component publishing
|
||||||
|
* Complex example:: A multi-component publishing example
|
||||||
|
|
||||||
Miscellaneous
|
Miscellaneous
|
||||||
|
|
||||||
* Completion:: M-TAB knows what you need
|
* Completion:: M-TAB knows what you need
|
||||||
|
@ -209,6 +232,12 @@ Miscellaneous
|
||||||
* Bugs:: Things which do not work perfectly
|
* Bugs:: Things which do not work perfectly
|
||||||
* Acknowledgments:: These people provided feedback and more
|
* Acknowledgments:: These people provided feedback and more
|
||||||
|
|
||||||
|
Interaction with other packages
|
||||||
|
|
||||||
|
* Extensions:: Third-party extensions for Org-mode
|
||||||
|
* Cooperation:: Packages Org-mode cooperates with
|
||||||
|
* Conflicts:: Packages that lead to conflicts
|
||||||
|
|
||||||
@end detailmenu
|
@end detailmenu
|
||||||
@end menu
|
@end menu
|
||||||
|
|
||||||
|
@ -241,21 +270,23 @@ Plain text URL-like links connect to websites, emails, Usenet
|
||||||
messages, BBDB entries, and any files related to the projects. For
|
messages, BBDB entries, and any files related to the projects. For
|
||||||
printing and sharing of notes, an Org-mode file can be exported as a
|
printing and sharing of notes, an Org-mode file can be exported as a
|
||||||
structured ASCII file, as HTML, or (todo and agenda items only) as an
|
structured ASCII file, as HTML, or (todo and agenda items only) as an
|
||||||
iCalendar file.
|
iCalendar file. It can also serve as a publishing tool for a set of
|
||||||
|
linked webpages.
|
||||||
|
|
||||||
Org-mode keeps simple things simple. When first fired up, it should
|
Org-mode keeps simple things simple. When first fired up, it should
|
||||||
feel like a simple, easy to use outliner. Complexity is not imposed,
|
feel like a straightforward, easy to use outliner. Complexity is not
|
||||||
but a large amount of functionality is available when you need it.
|
imposed, but a large amount of functionality is available when you need
|
||||||
Org-mode can be used on different levels and in different ways, for
|
it. Org-mode can be used on different levels and in different ways, for
|
||||||
example:
|
example:
|
||||||
|
|
||||||
@example
|
@example
|
||||||
@r{@bullet{} as an outline extension with visibility cycling and structure editing}
|
@r{@bullet{} as an outline extension with visibility cycling and structure editing}
|
||||||
@r{@bullet{} as an ASCII system and table editor for taking structured notes}
|
@r{@bullet{} as an ASCII system and table editor for taking structured notes}
|
||||||
@r{@bullet{} as an ASCII table editor with spreadsheet-like capabilities}
|
@r{@bullet{} as an ASCII table editor with spreadsheet-like capabilities}
|
||||||
@r{@bullet{} as a simple hypertext system, with HTML export}
|
|
||||||
@r{@bullet{} as a TODO list editor}
|
@r{@bullet{} as a TODO list editor}
|
||||||
@r{@bullet{} as a full agenda and planner with deadlines and work scheduling}
|
@r{@bullet{} as a full agenda and planner with deadlines and work scheduling}
|
||||||
|
@r{@bullet{} as a simple hypertext system, with HTML export}
|
||||||
|
@r{@bullet{} as a publishing tool to create a set of interlinked webpages}
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
The Org-mode table editor can be integrated into any major mode by
|
The Org-mode table editor can be integrated into any major mode by
|
||||||
|
@ -288,19 +319,22 @@ choose suitable keys yourself.
|
||||||
(define-key global-map "\C-ca" 'org-agenda)
|
(define-key global-map "\C-ca" 'org-agenda)
|
||||||
@end lisp
|
@end lisp
|
||||||
|
|
||||||
If you have downloaded Org-mode from the Web, you must byte-compile
|
Furthermore, you must activate @code{font-lock-mode} in org-mode
|
||||||
@file{org.el} and put it on your load path. In addition to the Emacs
|
buffers, because significant functionality depends on font-locking being
|
||||||
Lisp lines above, you also need to add the following lines to
|
active. You can do this with either one of the following two lines:
|
||||||
|
@lisp
|
||||||
|
(global-font-lock-mode 1) ; for all buffers
|
||||||
|
(add-hook 'org-mode-hook 'turn-on-font-lock) ; org-mode buffers only
|
||||||
|
@end lisp
|
||||||
|
|
||||||
|
If you have downloaded Org-mode from the Web, you must take additional
|
||||||
|
action: Byte-compile @file{org.el} and @file{org-publish.el} and put
|
||||||
|
them together with @file{org-install.el} on your load path. Then add to
|
||||||
@file{.emacs}:
|
@file{.emacs}:
|
||||||
|
|
||||||
@lisp
|
@lisp
|
||||||
;; These lines only if org-mode is not part of the X/Emacs distribution.
|
;; This line only if org-mode is not part of the X/Emacs distribution.
|
||||||
(autoload 'org-mode "org" "Org mode" t)
|
(require 'org-install)
|
||||||
(autoload 'org-diary "org" "Diary entries from Org mode")
|
|
||||||
(autoload 'org-agenda "org" "Multi-file agenda from Org mode" t)
|
|
||||||
(autoload 'org-store-link "org" "Store a link to the current location" t)
|
|
||||||
(autoload 'orgtbl-mode "org" "Org tables as a minor mode" t)
|
|
||||||
(autoload 'turn-on-orgtbl "org" "Org tables as a minor mode")
|
|
||||||
@end lisp
|
@end lisp
|
||||||
|
|
||||||
@cindex org-mode, turning on
|
@cindex org-mode, turning on
|
||||||
|
@ -407,33 +441,40 @@ starters. @ref{Clean view} describes a setup to realize this.
|
||||||
@cindex hide text
|
@cindex hide text
|
||||||
|
|
||||||
Outlines make it possible to hide parts of the text in the buffer.
|
Outlines make it possible to hide parts of the text in the buffer.
|
||||||
Org-mode uses a single command bound to the @key{TAB} key to change
|
Org-mode uses just two commands, bound to @key{TAB} and
|
||||||
the visibility in the buffer.
|
@kbd{S-@key{TAB}} to change the visibility in the buffer.
|
||||||
|
|
||||||
@cindex subtree visibility states
|
@cindex subtree visibility states
|
||||||
|
@cindex subtree cycling
|
||||||
@cindex folded, subtree visibility state
|
@cindex folded, subtree visibility state
|
||||||
@cindex children, subtree visibility state
|
@cindex children, subtree visibility state
|
||||||
@cindex subtree, subtree visibility state
|
@cindex subtree, subtree visibility state
|
||||||
@table @kbd
|
@table @kbd
|
||||||
@kindex @key{TAB}
|
@kindex @key{TAB}
|
||||||
@item @key{TAB}
|
@item @key{TAB}
|
||||||
Rotate current subtree between the states
|
@emph{Subtree cycling}: Rotate current subtree between the states
|
||||||
|
|
||||||
@example
|
@example
|
||||||
,-> FOLDED -> CHILDREN -> SUBTREE --.
|
,-> FOLDED -> CHILDREN -> SUBTREE --.
|
||||||
'-----------------------------------'
|
'-----------------------------------'
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
At the beginning of the buffer (or when called with @kbd{C-u}), this does
|
The cursor must be on a headline for this to work@footnote{see, however,
|
||||||
the same as the command @kbd{S-@key{TAB}} below.
|
the option @code{org-cycle-emulate-tab}.}. When the cursor is at the
|
||||||
|
beginning of the buffer and the first line is not a headline, then
|
||||||
|
@key{TAB} actually runs global cycling (see below)@footnote{see the
|
||||||
|
option @code{org-cycle-global-at-bob}.}. Also when called with a prefix
|
||||||
|
argument (@kbd{C-u @key{TAB}}), global cycling is invoked.
|
||||||
|
|
||||||
@cindex global visibility states
|
@cindex global visibility states
|
||||||
|
@cindex global cycling
|
||||||
@cindex overview, global visibility state
|
@cindex overview, global visibility state
|
||||||
@cindex contents, global visibility state
|
@cindex contents, global visibility state
|
||||||
@cindex show all, global visibility state
|
@cindex show all, global visibility state
|
||||||
@kindex S-@key{TAB}
|
@kindex S-@key{TAB}
|
||||||
@item S-@key{TAB}
|
@item S-@key{TAB}
|
||||||
Rotate the entire buffer between the states
|
@itemx C-u @key{TAB}
|
||||||
|
@emph{Global cycling}: Rotate the entire buffer between the states
|
||||||
|
|
||||||
@example
|
@example
|
||||||
,-> OVERVIEW -> CONTENTS -> SHOW ALL --.
|
,-> OVERVIEW -> CONTENTS -> SHOW ALL --.
|
||||||
|
@ -694,9 +735,22 @@ But in the end, not individual scenes matter but the film as a whole.
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
Org-mode supports these lists by tuning filling and wrapping commands
|
Org-mode supports these lists by tuning filling and wrapping commands
|
||||||
to correctly deal with them. Furthermore, the following commands act
|
to correctly deal with them.
|
||||||
on items when the cursor is in the first line of an item (the line
|
|
||||||
with the bullet or number).
|
@cindex checkboxes
|
||||||
|
Every item in a plain list can be made a checkbox by starting it with
|
||||||
|
the string @samp{[_]}. The checkbox status can conveniently be toggled
|
||||||
|
with @kbd{C-c C-c}.
|
||||||
|
|
||||||
|
@example
|
||||||
|
* Shopping list
|
||||||
|
- [_] Milk
|
||||||
|
- [X] Butter
|
||||||
|
- [_] bred
|
||||||
|
@end example
|
||||||
|
|
||||||
|
The following commands act on items when the cursor is in the first line
|
||||||
|
of an item (the line with the bullet or number).
|
||||||
|
|
||||||
@table @kbd
|
@table @kbd
|
||||||
@kindex @key{TAB}
|
@kindex @key{TAB}
|
||||||
|
@ -715,7 +769,8 @@ item. If this command is executed in the @emph{whitespace before a bullet or
|
||||||
number}, the new item is created @emph{before} the current item. If the
|
number}, the new item is created @emph{before} the current item. If the
|
||||||
command is executed in the white space before the text that is part of
|
command is executed in the white space before the text that is part of
|
||||||
an item but does not contain the bullet, a bullet is added to the
|
an item but does not contain the bullet, a bullet is added to the
|
||||||
current line.
|
current line. If the current item has a checkbox, so will the newly
|
||||||
|
created item.
|
||||||
@kindex M-S-@key{up}
|
@kindex M-S-@key{up}
|
||||||
@kindex M-S-@key{down}
|
@kindex M-S-@key{down}
|
||||||
@item M-S-@key{up}
|
@item M-S-@key{up}
|
||||||
|
@ -735,7 +790,9 @@ would imply a different hierarchy. To use the new hierarchy, break
|
||||||
the command chain with a cursor motion or so.
|
the command chain with a cursor motion or so.
|
||||||
@kindex C-c C-c
|
@kindex C-c C-c
|
||||||
@item C-c C-c
|
@item C-c C-c
|
||||||
Renumber the ordered list at the cursor.
|
If there is a checkbox in the item line, toggle the state of the
|
||||||
|
checkbox. Otherwise, if this is an ordered list, renumber the ordered
|
||||||
|
list at the cursor.
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
@node Tables, Hyperlinks, Document structure, Top
|
@node Tables, Hyperlinks, Document structure, Top
|
||||||
|
@ -954,7 +1011,7 @@ When not empty, copy current field down to next row and move cursor
|
||||||
along with it. Depending on the variable
|
along with it. Depending on the variable
|
||||||
@code{org-table-copy-increment}, integer field values will be
|
@code{org-table-copy-increment}, integer field values will be
|
||||||
incremented during copy. This key is also used by CUA-mode
|
incremented during copy. This key is also used by CUA-mode
|
||||||
(@pxref{Interaction}).
|
(@pxref{Cooperation}).
|
||||||
|
|
||||||
@tsubheading{Miscellaneous}
|
@tsubheading{Miscellaneous}
|
||||||
@kindex C-c `
|
@kindex C-c `
|
||||||
|
@ -1389,7 +1446,7 @@ possible.
|
||||||
@chapter Hyperlinks
|
@chapter Hyperlinks
|
||||||
@cindex hyperlinks
|
@cindex hyperlinks
|
||||||
|
|
||||||
Just like HMTL, Org-mode provides links inside a file, and external
|
Just like HTML, Org-mode provides links inside a file, and external
|
||||||
links to other files, Usenet articles, emails and much more.
|
links to other files, Usenet articles, emails and much more.
|
||||||
|
|
||||||
@menu
|
@menu
|
||||||
|
@ -1605,7 +1662,9 @@ that you don't have to use this command to insert a link. Links in
|
||||||
Org-mode are plain text, and you can type or paste them straight into
|
Org-mode are plain text, and you can type or paste them straight into
|
||||||
the buffer. By using this command, the links are automatically enclosed
|
the buffer. By using this command, the links are automatically enclosed
|
||||||
in double brackets, and you will be asked for the optional descriptive
|
in double brackets, and you will be asked for the optional descriptive
|
||||||
text.
|
text. If the link is a @samp{file:} link and the linked file is located
|
||||||
|
in the same directory as the current file or a subdirectory of it, the
|
||||||
|
path of the file will be inserted relative to the current directory.
|
||||||
|
|
||||||
@kindex C-u C-c C-l
|
@kindex C-u C-c C-l
|
||||||
@cindex file name completion
|
@cindex file name completion
|
||||||
|
@ -1749,19 +1808,14 @@ store quick notes with little interruption of your work flow. See
|
||||||
@uref{http://www.emacswiki.org/cgi-bin/wiki/RememberMode} for more
|
@uref{http://www.emacswiki.org/cgi-bin/wiki/RememberMode} for more
|
||||||
information. The notes produced by @emph{Remember} can be stored in
|
information. The notes produced by @emph{Remember} can be stored in
|
||||||
different ways, and Org-mode files are a good target. Org-mode allows
|
different ways, and Org-mode files are a good target. Org-mode allows
|
||||||
to file away notes either to a default file, or directly to the
|
to file away notes either to a default file, or directly to the correct
|
||||||
correct location in your Org-mode outline tree. The following
|
location in your Org-mode outline tree. The following customization
|
||||||
customization@footnote{The three autoload forms are only necessary if
|
will tell @emph{Remember} to use org files as target, and to create
|
||||||
@file{org.el} is not part of the Emacs distribution or an XEmacs
|
annotations compatible with Org-mode links.
|
||||||
package.} will tell @emph{Remember} to use org files as target, and to
|
|
||||||
create annotations compatible with Org-mode links.
|
|
||||||
|
|
||||||
@example
|
@example
|
||||||
(setq org-directory "~/path/to/my/orgfiles/")
|
(setq org-directory "~/path/to/my/orgfiles/")
|
||||||
(setq org-default-notes-file "~/.notes")
|
(setq org-default-notes-file "~/.notes")
|
||||||
(autoload 'org-remember-annotation "org")
|
|
||||||
(autoload 'org-remember-apply-template "org")
|
|
||||||
(autoload 'org-remember-handler "org")
|
|
||||||
(setq remember-annotation-functions '(org-remember-annotation))
|
(setq remember-annotation-functions '(org-remember-annotation))
|
||||||
(setq remember-handler-functions '(org-remember-handler))
|
(setq remember-handler-functions '(org-remember-handler))
|
||||||
(add-hook 'remember-mode-hook 'org-remember-apply-template)
|
(add-hook 'remember-mode-hook 'org-remember-apply-template)
|
||||||
|
@ -2081,7 +2135,7 @@ agenda buffer with the @kbd{,} command (@pxref{Agenda commands}).
|
||||||
Increase/decrease priority of current item. Note that these keys are
|
Increase/decrease priority of current item. Note that these keys are
|
||||||
also used to modify time stamps (@pxref{Creating timestamps}).
|
also used to modify time stamps (@pxref{Creating timestamps}).
|
||||||
Furthermore, these keys are also used by CUA-mode
|
Furthermore, these keys are also used by CUA-mode
|
||||||
(@pxref{Interaction}).
|
(@pxref{Conflicts}).
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
@node Timestamps, Tags, TODO items, Top
|
@node Timestamps, Tags, TODO items, Top
|
||||||
|
@ -2225,7 +2279,7 @@ Insert @samp{SCHEDULED} keyword along with a stamp.
|
||||||
@item S-@key{left}
|
@item S-@key{left}
|
||||||
@itemx S-@key{right}
|
@itemx S-@key{right}
|
||||||
Change date at cursor by one day. These key bindings conflict with
|
Change date at cursor by one day. These key bindings conflict with
|
||||||
CUA-mode (@pxref{Interaction}).
|
CUA-mode (@pxref{Conflicts}).
|
||||||
|
|
||||||
@kindex S-@key{up}
|
@kindex S-@key{up}
|
||||||
@kindex S-@key{down}
|
@kindex S-@key{down}
|
||||||
|
@ -2235,7 +2289,7 @@ Change the item under the cursor in a timestamp. The cursor can be on
|
||||||
a year, month, day, hour or minute. Note that if the cursor is not at
|
a year, month, day, hour or minute. Note that if the cursor is not at
|
||||||
a time stamp, these same keys modify the priority of an item.
|
a time stamp, these same keys modify the priority of an item.
|
||||||
(@pxref{Priorities}). The key bindings also conflict with CUA-mode
|
(@pxref{Priorities}). The key bindings also conflict with CUA-mode
|
||||||
(@pxref{Interaction}).
|
(@pxref{Conflicts}).
|
||||||
|
|
||||||
|
|
||||||
@kindex C-c C-y
|
@kindex C-c C-y
|
||||||
|
@ -2978,14 +3032,14 @@ visit org files will not be removed.
|
||||||
|
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
@node Exporting, Miscellaneous, Agenda views, Top
|
@node Exporting, Publishing, Agenda views, Top
|
||||||
@chapter Exporting
|
@chapter Exporting
|
||||||
@cindex exporting
|
@cindex exporting
|
||||||
|
|
||||||
Org-mode documents can be exported into a variety of other formats. For
|
Org-mode documents can be exported into a variety of other formats. For
|
||||||
printing and sharing of notes, ASCII export produces a readable and
|
printing and sharing of notes, ASCII export produces a readable and
|
||||||
simple version of an Org-mode file. HTML export allows to publish a
|
simple version of an Org-mode file. HTML export allows to publish a
|
||||||
notes file on the web, while the XML format provides a solid base for
|
notes file on the web, while the XOXO format provides a solid base for
|
||||||
exchange with a broad range of other applications. To incorporate
|
exchange with a broad range of other applications. To incorporate
|
||||||
entries with associated times like deadlines or appointments into a
|
entries with associated times like deadlines or appointments into a
|
||||||
desktop calendar program like iCal, Org-mode can also produce extracts
|
desktop calendar program like iCal, Org-mode can also produce extracts
|
||||||
|
@ -2998,7 +3052,7 @@ produced. @xref{Text interpretation}, for more details.
|
||||||
@menu
|
@menu
|
||||||
* ASCII export:: Exporting to plain ASCII
|
* ASCII export:: Exporting to plain ASCII
|
||||||
* HTML export:: Exporting to HTML
|
* HTML export:: Exporting to HTML
|
||||||
* XML export:: Exporting to XML
|
* XOXO export:: Exporting to XOXO
|
||||||
* iCalendar export:: Exporting in iCalendar format
|
* iCalendar export:: Exporting in iCalendar format
|
||||||
* Text interpretation:: How the exporter looks at the file
|
* Text interpretation:: How the exporter looks at the file
|
||||||
@end menu
|
@end menu
|
||||||
|
@ -3038,7 +3092,7 @@ at a different level, specify it with a prefix argument. For example,
|
||||||
@noindent
|
@noindent
|
||||||
creates only top level headlines and does the rest as items.
|
creates only top level headlines and does the rest as items.
|
||||||
|
|
||||||
@node HTML export, XML export, ASCII export, Exporting
|
@node HTML export, XOXO export, ASCII export, Exporting
|
||||||
@section HTML export
|
@section HTML export
|
||||||
@cindex HTML export
|
@cindex HTML export
|
||||||
|
|
||||||
|
@ -3081,7 +3135,20 @@ mark them with a @samp{@@} like in @samp{@@<b>bold text@@</b>}.
|
||||||
Plain @samp{<} and @samp{>} are always transformed to @samp{<} and
|
Plain @samp{<} and @samp{>} are always transformed to @samp{<} and
|
||||||
@samp{>} in HTML export.
|
@samp{>} in HTML export.
|
||||||
|
|
||||||
You can also give style information for the exported file. The
|
You can also give style information for the exported file. The HTML
|
||||||
|
exporter asigns the following CSS classes to appropriate parts of the
|
||||||
|
document - your style specifications may change these.
|
||||||
|
@example
|
||||||
|
.todo @r{TODO keywords}
|
||||||
|
.done @r{the DONE keyword}
|
||||||
|
.timestamp @r{time stamp}
|
||||||
|
.timestamp-kwd @r{keyword associated with a time stamp, like SCHEDULED}
|
||||||
|
.tag @r{tag in a headline}
|
||||||
|
.target @r{target for links}
|
||||||
|
@end example
|
||||||
|
|
||||||
|
|
||||||
|
The
|
||||||
default specification can be configured through the option
|
default specification can be configured through the option
|
||||||
@code{org-export-html-style}. If you want to use a file-local style,
|
@code{org-export-html-style}. If you want to use a file-local style,
|
||||||
you may use file variables, best wrapped into a COMMENT section at the
|
you may use file variables, best wrapped into a COMMENT section at the
|
||||||
|
@ -3106,24 +3173,24 @@ section in the buffer.
|
||||||
@c FIXME: More about header and footer styles
|
@c FIXME: More about header and footer styles
|
||||||
@c FIXME: Talk about links and targets.
|
@c FIXME: Talk about links and targets.
|
||||||
|
|
||||||
@node XML export, iCalendar export, HTML export, Exporting
|
@node XOXO export, iCalendar export, HTML export, Exporting
|
||||||
@section XML export
|
@section XOXO export
|
||||||
@cindex XML export
|
@cindex XOXO export
|
||||||
|
|
||||||
Org-mode contains an XML exporter that produces XOXO-style XML.
|
Org-mode contains an exporter that produces XOXO-style output.
|
||||||
Currently, this exporter only handles the general outline structure and
|
Currently, this exporter only handles the general outline structure and
|
||||||
does not interpret any additional Org-mode features.
|
does not interpret any additional Org-mode features.
|
||||||
|
|
||||||
@table @kbd
|
@table @kbd
|
||||||
@kindex C-c C-x C-x
|
@kindex C-c C-x C-x
|
||||||
@item C-c C-x C-x
|
@item C-c C-x C-x
|
||||||
Export as XML file @file{myfile.xml}.
|
Export as XOXO file @file{myfile.html}.
|
||||||
@kindex C-c C-x v
|
@kindex C-c C-x v
|
||||||
@item C-c C-x v x
|
@item C-c C-x v x
|
||||||
Export only the visible part of the document.
|
Export only the visible part of the document.
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
@node iCalendar export, Text interpretation, XML export, Exporting
|
@node iCalendar export, Text interpretation, XOXO export, Exporting
|
||||||
@section iCalendar export
|
@section iCalendar export
|
||||||
@cindex iCalendar export
|
@cindex iCalendar export
|
||||||
|
|
||||||
|
@ -3322,7 +3389,313 @@ toc: @r{turn on/off table of contents}
|
||||||
TeX: @r{turn on/off @TeX{} macros}
|
TeX: @r{turn on/off @TeX{} macros}
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
@node Miscellaneous, Index, Exporting, Top
|
@node Publishing, Miscellaneous, Exporting, Top
|
||||||
|
@chapter Publishing
|
||||||
|
|
||||||
|
Org-mode includes@footnote{@file{org-publish.el} is not yet part of
|
||||||
|
emacs, so if you are using @file{org.el} as it comes with Emacs, you
|
||||||
|
need to download this file separately. Also make sure org.el is at
|
||||||
|
least version 4.27.} a publishing management system
|
||||||
|
that allows you to configure automatic html conversion of
|
||||||
|
@emph{projects} composed of interlinked org files. This system is
|
||||||
|
called @emph{org-publish}. You can also configure org-publish to
|
||||||
|
automatically upload your exported HTML pages and related attachments,
|
||||||
|
such as images and source code files, to a web server. Org-publish turns
|
||||||
|
org-mode into a web-site authoring tool.
|
||||||
|
|
||||||
|
Org-publish has been contributed to Org-mode by David O'Toole.
|
||||||
|
|
||||||
|
@menu
|
||||||
|
* Configuration:: Defining projects
|
||||||
|
* Sample configuration:: Example projects
|
||||||
|
* Triggering publication:: Publication commands
|
||||||
|
@end menu
|
||||||
|
|
||||||
|
@node Configuration, Sample configuration, Publishing, Publishing
|
||||||
|
@section Configuration
|
||||||
|
|
||||||
|
Publishing needs significant configuration to specify files, destination
|
||||||
|
and many other properties of a project.
|
||||||
|
|
||||||
|
@menu
|
||||||
|
* Project alist:: The central configuration variable
|
||||||
|
* File sources and destinations:: From here to there
|
||||||
|
* Selecting files:: What files are part of the project?
|
||||||
|
* Publishing action::
|
||||||
|
* Publishing options:: Tweaking HTML export
|
||||||
|
* Links:: Linking between files of a project
|
||||||
|
* Project page index:: Publishing a list of project files
|
||||||
|
@end menu
|
||||||
|
|
||||||
|
@node Project alist, File sources and destinations, Configuration, Configuration
|
||||||
|
@subsection The variable @code{org-publish-project-alist}
|
||||||
|
|
||||||
|
Org-publish is configured almost entirely through setting the value of
|
||||||
|
one variable, called @code{org-publish-project-alist}.
|
||||||
|
Each element of the list configures one project, and may be in one of
|
||||||
|
the two following forms:
|
||||||
|
|
||||||
|
@lisp
|
||||||
|
("project-name" :property value :property value ...)
|
||||||
|
|
||||||
|
@r{or}
|
||||||
|
|
||||||
|
("project-name"
|
||||||
|
("component1" :property value :property value ...)
|
||||||
|
("component2" :property value :property value ...)
|
||||||
|
...)
|
||||||
|
@end lisp
|
||||||
|
|
||||||
|
In both cases, projects are configured by specifying property values.
|
||||||
|
A project defines the set of files that will be published, as well as
|
||||||
|
the publishing configuration to use when publishing those files.
|
||||||
|
When a project takes the second form listed above, the individual
|
||||||
|
property lists are taken to be "components" of the project, which
|
||||||
|
group together files requiring different publishing options.
|
||||||
|
|
||||||
|
@node File sources and destinations, Selecting files, Project alist, Configuration
|
||||||
|
@subsection Sources and destinations for files
|
||||||
|
|
||||||
|
Most properties are optional, but some should always be set. In
|
||||||
|
particular, org-publish needs to know where to look for source files,
|
||||||
|
and where to put published files.
|
||||||
|
|
||||||
|
@multitable @columnfractions 0.3 0.7
|
||||||
|
@item @code{:base-directory}
|
||||||
|
@tab Directory containing publishing source files
|
||||||
|
@item @code{:publishing-directory}
|
||||||
|
@tab Directory (possibly remote) where output files will be published.
|
||||||
|
@end multitable
|
||||||
|
@noindent
|
||||||
|
|
||||||
|
@node Selecting files, Publishing action, File sources and destinations, Configuration
|
||||||
|
@subsection Selecting files
|
||||||
|
|
||||||
|
By default, all files with extension @file{.org} in the base directory
|
||||||
|
are considered part of the project. This can be modified by setting the
|
||||||
|
properties
|
||||||
|
@multitable @columnfractions 0.25 0.75
|
||||||
|
@item @code{:base-extension}
|
||||||
|
@tab Extension (without the dot!) of source files. This actually is a
|
||||||
|
regular expression.
|
||||||
|
|
||||||
|
@item @code{:exclude}
|
||||||
|
@tab Regular expression to match file names that should not be
|
||||||
|
published, even though they have been selected on the basis of their
|
||||||
|
extension.
|
||||||
|
|
||||||
|
@item @code{:include}
|
||||||
|
@tab List of files to be included regardless of @code{:base-extension}
|
||||||
|
and @code{:exclude}.
|
||||||
|
@end multitable
|
||||||
|
|
||||||
|
@node Publishing action, Publishing options, Selecting files, Configuration
|
||||||
|
@subsection Publishing Action
|
||||||
|
|
||||||
|
Publishing means that a file is copied to the destination directory and
|
||||||
|
possibly transformed in the process. The default transformation is to
|
||||||
|
export Org-mode files as HTML files, and this is done by the function
|
||||||
|
@code{org-publish-org-to-html} which calls the HTML exporter
|
||||||
|
(@pxref{HTML export}). Other files like images only need to be copied
|
||||||
|
to the publishing destination. For non-Org-mode files, you need to
|
||||||
|
specify the publishing function.
|
||||||
|
|
||||||
|
@multitable @columnfractions 0.3 0.7
|
||||||
|
@item @code{:publishing-function}
|
||||||
|
@tab Function executing the publication of a file.
|
||||||
|
@end multitable
|
||||||
|
|
||||||
|
The function must accept two arguments: a property list containing at
|
||||||
|
least a @code{:publishing-directory} property, and the name of the file
|
||||||
|
to be published. I should take the specified file, make the necessary
|
||||||
|
transformation (if any) and place the result into the destination folder.
|
||||||
|
You can write your own publishing function, but @code{org-publish}
|
||||||
|
provides one for attachments (files that only need to be copied):
|
||||||
|
@code{org-publish-attachment}.
|
||||||
|
|
||||||
|
@node Publishing options, Links, Publishing action, Configuration
|
||||||
|
@subsection Options for the HTML exporter
|
||||||
|
|
||||||
|
The property list can be used to set many export options for the HTML
|
||||||
|
exporter. In most cases, these properties correspond to user variables
|
||||||
|
in Org-mode. The table below lists these properties along with the
|
||||||
|
variable they belong to. See the documentation string for the
|
||||||
|
respective variable for details.
|
||||||
|
|
||||||
|
@multitable @columnfractions 0.3 0.7
|
||||||
|
@item @code{:language} @tab @code{org-export-default-language}
|
||||||
|
@item @code{:headline-levels} @tab @code{org-export-headline-levels}
|
||||||
|
@item @code{:section-numbers} @tab @code{org-export-with-section-numbers}
|
||||||
|
@item @code{:table-of-contents} @tab @code{org-export-with-toc}
|
||||||
|
@item @code{:emphasize} @tab @code{org-export-with-emphasize}
|
||||||
|
@item @code{:sub-superscript} @tab @code{org-export-with-sub-superscripts}
|
||||||
|
@item @code{:TeX-macros} @tab @code{org-export-with-TeX-macros}
|
||||||
|
@item @code{:fixed-width} @tab @code{org-export-with-fixed-width}
|
||||||
|
@item @code{:timestamps} .@tab @code{org-export-with-timestamps}
|
||||||
|
@item @code{:tags} .@tab @code{org-export-with-tags}
|
||||||
|
@item @code{:tables} @tab @code{org-export-with-tables}
|
||||||
|
@item @code{:table-auto-headline} @tab @code{org-export-highlight-first-table-line}
|
||||||
|
@item @code{:style} @tab @code{org-export-html-style}
|
||||||
|
@item @code{:convert-org-links} @tab @code{org-export-html-link-org-files-as-html}
|
||||||
|
@item @code{:inline-images} @tab @code{org-export-html-inline-images}
|
||||||
|
@item @code{:expand-quoted-html} @tab @code{org-export-html-expand}
|
||||||
|
@item @code{:timestamp} @tab @code{org-export-html-with-timestamp}
|
||||||
|
@item @code{:publishing-directory} @tab @code{org-export-publishing-directory}
|
||||||
|
@item @code{:preamble} @tab @code{org-export-html-preamble}
|
||||||
|
@item @code{:postamble} @tab @code{org-export-html-postamble}
|
||||||
|
@item @code{:auto-preamble} @tab @code{org-export-html-auto-preamble}
|
||||||
|
@item @code{:auto-postamble} @tab @code{org-export-html-auto-postamble}
|
||||||
|
@item @code{:author} @tab @code{user-full-name}
|
||||||
|
@item @code{:email} @tab @code{user-mail-address}
|
||||||
|
@end multitable
|
||||||
|
|
||||||
|
When a property is given a value in org-publish-project-alist, its
|
||||||
|
setting overrides the value of the corresponding user variable (if any)
|
||||||
|
during publishing. However, options set within a file (@pxref{Export
|
||||||
|
options}) override everything.
|
||||||
|
|
||||||
|
@node Links, Project page index, Publishing options, Configuration
|
||||||
|
@subsection Links between published files
|
||||||
|
|
||||||
|
To create a link from one Org-mode file to another, you would use
|
||||||
|
something like @samp{[[file:foo.org][The foo]]} or simply
|
||||||
|
@samp{file:foo.org.} (@pxref{Hyperlinks}). Upon publishing this link
|
||||||
|
becomes a link to @file{foo.html}. In this way, you can interlink the
|
||||||
|
pages of your "org web" project and the links will work as expected when
|
||||||
|
you publish them to HTML.
|
||||||
|
|
||||||
|
You may also link to related files, such as images. Provided you are
|
||||||
|
careful with relative pathnames, and provided you have also configured
|
||||||
|
org-publish to upload the related files, these links will work
|
||||||
|
too. @ref{Complex example} for an example of this usage.
|
||||||
|
|
||||||
|
@node Project page index, , Links, Configuration
|
||||||
|
@subsection Project page index
|
||||||
|
|
||||||
|
The following properties may be used to control publishing of an
|
||||||
|
index of files or summary page for a given project.
|
||||||
|
|
||||||
|
@multitable @columnfractions 0.25 0.75
|
||||||
|
@item @code{:auto-index}
|
||||||
|
@tab When non-nil, publish an index during org-publish-current-project or
|
||||||
|
org-publish-all.
|
||||||
|
|
||||||
|
@item @code{:index-filename}
|
||||||
|
@tab Filename for output of index. Defaults to @file{index.org} (which
|
||||||
|
becomes @file{index.html}).
|
||||||
|
|
||||||
|
@item @code{:index-title}
|
||||||
|
@tab Title of index page. Defaults to name of file.
|
||||||
|
|
||||||
|
@item @code{:index-function}
|
||||||
|
@tab Plugin function to use for generation of index.
|
||||||
|
Defaults to @code{org-publish-org-index}, which generates a plain list
|
||||||
|
of links to all files in the project.
|
||||||
|
@end multitable
|
||||||
|
|
||||||
|
@node Sample configuration, Triggering publication, Configuration, Publishing
|
||||||
|
@section Sample configuration
|
||||||
|
|
||||||
|
Below we provide two example configurations. The first one is a simple
|
||||||
|
project publishing only a set of Org-mode files. The second example is
|
||||||
|
more complex, with a multi-component project.
|
||||||
|
|
||||||
|
@menu
|
||||||
|
* Simple example:: One-component publishing
|
||||||
|
* Complex example:: A multi-component publishing example
|
||||||
|
@end menu
|
||||||
|
|
||||||
|
@node Simple example, Complex example, Sample configuration, Sample configuration
|
||||||
|
@subsection Example: simple publishing configuration
|
||||||
|
|
||||||
|
This example publishes a set of Org-mode files to the @file{public_html}
|
||||||
|
directory on the local machine.
|
||||||
|
|
||||||
|
@lisp
|
||||||
|
(setq org-publish-project-alist
|
||||||
|
'(("org"
|
||||||
|
:base-directory "~/org/"
|
||||||
|
:publishing-directory "~/public_html"
|
||||||
|
:section-numbers nil
|
||||||
|
:table-of-contents nil
|
||||||
|
:style "<link rel=stylesheet
|
||||||
|
href=\"../other/mystyle.css\"
|
||||||
|
type=\"text/css\">")))
|
||||||
|
@end lisp
|
||||||
|
|
||||||
|
@node Complex example, , Simple example, Sample configuration
|
||||||
|
@subsection Example: complex publishing configuration
|
||||||
|
|
||||||
|
This more complicated example publishes an entire website, including
|
||||||
|
org files converted to HTML, image files, emacs lisp source code, and
|
||||||
|
stylesheets. The publishing-directory is remote and private files are
|
||||||
|
excluded.
|
||||||
|
|
||||||
|
To ensure that links are preserved, care should be taken to replicate
|
||||||
|
your directory structure on the web server, and to use relative file
|
||||||
|
paths. For example, if your org files are kept in @file{~/org} and your
|
||||||
|
publishable images in @file{~/images}, you'd link to an image with
|
||||||
|
@c
|
||||||
|
@example
|
||||||
|
file:../images/myimage.png
|
||||||
|
@end example
|
||||||
|
@c
|
||||||
|
On the web server, the relative path to the image should be the
|
||||||
|
same. You can accomplish this by setting up an "images" folder in the
|
||||||
|
right place on the webserver, and publishing images to it.
|
||||||
|
|
||||||
|
@lisp
|
||||||
|
(setq org-publish-project-alist
|
||||||
|
'(("website"
|
||||||
|
("orgfiles"
|
||||||
|
:base-directory "~/org/"
|
||||||
|
:base-extension "org"
|
||||||
|
:publishing-directory "/ssh:user@@host:~/html/notebook/"
|
||||||
|
:publishing-function org-publish-org-to-html
|
||||||
|
:exclude "PrivatePage.org" ;; regexp
|
||||||
|
:headline-levels 3
|
||||||
|
:section-numbers nil
|
||||||
|
:table-of-contents nil
|
||||||
|
:style "<link rel=stylesheet
|
||||||
|
href=\"../other/mystyle.css\" type=\"text/css\">"
|
||||||
|
:auto-preamble t
|
||||||
|
:auto-postamble nil)
|
||||||
|
|
||||||
|
("images"
|
||||||
|
:base-directory "~/images/"
|
||||||
|
:base-extension "jpg\\|gif\\|png"
|
||||||
|
:publishing-directory "/ssh:user@@host:~/html/images/"
|
||||||
|
:publishing-function org-publish-attachment)
|
||||||
|
|
||||||
|
("other"
|
||||||
|
:base-directory "~/other/"
|
||||||
|
:base-extension "css\\|el"
|
||||||
|
:publishing-directory "/ssh:user@@host:~/html/other/"
|
||||||
|
:publishing-function org-publish-attachment))))
|
||||||
|
@end lisp
|
||||||
|
|
||||||
|
@node Triggering publication, , Sample configuration, Publishing
|
||||||
|
@section Triggering publication
|
||||||
|
|
||||||
|
Once org-publish is properly configured, you can publish with the
|
||||||
|
following functions:
|
||||||
|
|
||||||
|
@table @kbd
|
||||||
|
@item C-c C-e c
|
||||||
|
Prompts for a specific project to publish.
|
||||||
|
@item C-c C-e p
|
||||||
|
Publishes the project the current file is part of.
|
||||||
|
@item C-c C-e f
|
||||||
|
Publishes only the current file.
|
||||||
|
@item C-c C-e a
|
||||||
|
Publish all projects.
|
||||||
|
@end table
|
||||||
|
|
||||||
|
Org uses timestamps to track when a file has changed. The above
|
||||||
|
functions normally only publish changed files. You can override this and
|
||||||
|
force publishing of all files by giving a prefix argument.
|
||||||
|
|
||||||
|
@node Miscellaneous, Index, Publishing, Top
|
||||||
@chapter Miscellaneous
|
@chapter Miscellaneous
|
||||||
|
|
||||||
@menu
|
@menu
|
||||||
|
@ -3431,6 +3804,12 @@ variable is @code{org-startup-align-all-tables}, with a default value
|
||||||
align @r{align all tables}
|
align @r{align all tables}
|
||||||
noalign @r{don't align tables on startup}
|
noalign @r{don't align tables on startup}
|
||||||
@end example
|
@end example
|
||||||
|
Logging when a TODO item is marked DONE (variable @code{org-log-done})
|
||||||
|
can be configured using these options.
|
||||||
|
@example
|
||||||
|
logging @r{record a timestamp when an item is marked DONE}
|
||||||
|
nologging @r{don't record when items are marked DONE}
|
||||||
|
@end example
|
||||||
Here are the options for hiding leading stars in outline headings. The
|
Here are the options for hiding leading stars in outline headings. The
|
||||||
corresponding variables are @code{org-hide-leading-stars} and
|
corresponding variables are @code{org-hide-leading-stars} and
|
||||||
@code{org-odd-levels-only}, both with a default setting @code{nil}
|
@code{org-odd-levels-only}, both with a default setting @code{nil}
|
||||||
|
@ -3473,14 +3852,14 @@ this means in different contexts.
|
||||||
@c into the current line, aligned to `org-tags-column'. When called
|
@c into the current line, aligned to `org-tags-column'. When called
|
||||||
@c with prefix arg, realign all tags in the current buffer.
|
@c with prefix arg, realign all tags in the current buffer.
|
||||||
@item
|
@item
|
||||||
If the cursor is in one of the special #+KEYWORD lines, this
|
If the cursor is in one of the special @code{#+KEYWORD} lines, this
|
||||||
triggers scanning the buffer for these lines and updating the
|
triggers scanning the buffer for these lines and updating the
|
||||||
information.
|
information.
|
||||||
@item
|
@item
|
||||||
If the cursor is inside a table, realign the table. This command
|
If the cursor is inside a table, realign the table. This command
|
||||||
works even if the automatic table editor has been turned off.
|
works even if the automatic table editor has been turned off.
|
||||||
@item
|
@item
|
||||||
If the cursor is on a #+TBLFM line, re-apply the formulas to
|
If the cursor is on a @code{#+TBLFM} line, re-apply the formulas to
|
||||||
the entire table.
|
the entire table.
|
||||||
@item
|
@item
|
||||||
If the cursor is inside a table created by the @file{table.el} package,
|
If the cursor is inside a table created by the @file{table.el} package,
|
||||||
|
@ -3490,8 +3869,11 @@ If the current buffer is a remember buffer, close note and file it.
|
||||||
with a prefix argument, file it without further interaction to the default
|
with a prefix argument, file it without further interaction to the default
|
||||||
location.
|
location.
|
||||||
@item
|
@item
|
||||||
If the cursor is on a <<<target>>>, update radio targets and corresponding
|
If the cursor is on a @code{<<<target>>>}, update radio targets and
|
||||||
links in this buffer.
|
corresponding links in this buffer.
|
||||||
|
@item
|
||||||
|
If the cursor is in a plain list item with a checkbox, toggle the status
|
||||||
|
of the checkbox.
|
||||||
@item
|
@item
|
||||||
If the cursor is on a numbered item in a plain list, renumber the
|
If the cursor is on a numbered item in a plain list, renumber the
|
||||||
ordered list.
|
ordered list.
|
||||||
|
@ -3640,27 +4022,50 @@ rather use @kbd{C-c .} to re-insert the timestamp.
|
||||||
@cindex FAQ
|
@cindex FAQ
|
||||||
|
|
||||||
@enumerate
|
@enumerate
|
||||||
|
|
||||||
@cindex allout.el, conflict with
|
|
||||||
@cindex @code{keymapp nil} error
|
@cindex @code{keymapp nil} error
|
||||||
@item @b{When I try to use Org-mode, I always get
|
@item @b{When I try to use Org-mode, I always get
|
||||||
@code{(wrong-type-argument keymapp nil)}}.@*
|
@code{(wrong-type-argument keymapp nil)}}.@*
|
||||||
This is a conflict with an outdated version of the @file{allout.el}
|
@cindex allout.el, conflict with
|
||||||
package which pretends to be also the standard outline-mode but is not.
|
This is a conflict with an outdated version of the @file{allout.el}.
|
||||||
This happens with older versions of @file{allout.el}, for example the
|
See @ref{Conflicts}.
|
||||||
one distributed with Emacs 21. Upgrade to Emacs 22 and this problem
|
|
||||||
will disappear. If for some reason you cannot do this, make sure that
|
|
||||||
org.el is loaded @emph{before} @file{allout.el}, for example by putting
|
|
||||||
@code{(require 'org)} early enough into your @file{.emacs} file.
|
|
||||||
|
|
||||||
@item @b{Org-mode seems to be a useful default mode for the various
|
@item @b{Org-mode seems to be a useful default mode for the various
|
||||||
@file{README} files I have scattered through my directories. How do I
|
@file{README} files I have scattered through my directories. How do I
|
||||||
turn it on for all @file{README} files?}
|
turn it on for all @file{README} files?}
|
||||||
@c @*
|
|
||||||
|
|
||||||
@example
|
@lisp
|
||||||
(add-to-list 'auto-mode-alist '("README$" . org-mode))
|
(add-to-list 'auto-mode-alist '("README$" . org-mode))
|
||||||
@end example
|
@end lisp
|
||||||
|
|
||||||
|
@item @b{I would like to use editing features of org-mode in other
|
||||||
|
modes, is his possible?}@*
|
||||||
|
@c
|
||||||
|
Not really. For tables there is @code{orgtbl-mode} which implements the
|
||||||
|
table editor as a minor mode. For other features you need to switch to
|
||||||
|
Org-mode temporarily, or prepare text in a different buffer.
|
||||||
|
|
||||||
|
@item @b{Can I get the visibility-cycling features in outline-mode and
|
||||||
|
outline-minor-mode?}@*
|
||||||
|
@c
|
||||||
|
Yes, these functions are written in a way that they are independent of
|
||||||
|
the outline setup. The following setup provides standard Org-mode
|
||||||
|
functionality in outline-mode on @key{TAB} and @kbd{S-@key{TAB}}. For
|
||||||
|
outline-minor-mode, we use @kbd{C-@key{TAB}} instead of @key{TAB},
|
||||||
|
because @key{TAB} usually has mode-specific tasks.
|
||||||
|
@lisp
|
||||||
|
(add-hook 'outline-minor-mode-hook
|
||||||
|
(lambda ()
|
||||||
|
(define-key outline-minor-mode-map [(control tab)] 'org-cycle)
|
||||||
|
(define-key outline-minor-mode-map [(shift tab)] 'org-global-cycle)))
|
||||||
|
(add-hook 'outline-mode-hook
|
||||||
|
(lambda ()
|
||||||
|
(define-key outline-mode-map [(tab)] 'org-cycle)
|
||||||
|
(define-key outline-mode-map [(shift tab)] 'org-global-cycle)))
|
||||||
|
@end lisp
|
||||||
|
|
||||||
|
Or check out @file{outline-magic.el}, which does this and also provides
|
||||||
|
promotion and demotion functionality. @file{outline-magic.el} is
|
||||||
|
available at @url{http://www.astro.uva.nl/~dominik/Tools/OutlineMagic}.
|
||||||
|
|
||||||
@item @b{Some of my links stopped working after I upgraded to a version
|
@item @b{Some of my links stopped working after I upgraded to a version
|
||||||
4.20 or later. Why is this, and how can I fix it?}@*
|
4.20 or later. Why is this, and how can I fix it?}@*
|
||||||
|
@ -3690,7 +4095,7 @@ Would I let you down like that? If you must, you can do this
|
||||||
@end lisp
|
@end lisp
|
||||||
|
|
||||||
@item @b{When I am executing shell links I always get a
|
@item @b{When I am executing shell links I always get a
|
||||||
confirmation prompt and need to type @kbd{yes @key{RET}}, thats 4 key
|
confirmation prompt and need to type @kbd{yes @key{RET}}, that's 4 key
|
||||||
presses! Can I get rid of this?}@*
|
presses! Can I get rid of this?}@*
|
||||||
@c
|
@c
|
||||||
@cindex shell links, confirmation
|
@cindex shell links, confirmation
|
||||||
|
@ -3753,7 +4158,7 @@ export. Marking can be done with @kbd{C-c @@ C-x C-x}, for example.
|
||||||
|
|
||||||
@item @b{Org-mode takes over the S-cursor keys. I also want to use
|
@item @b{Org-mode takes over the S-cursor keys. I also want to use
|
||||||
CUA-mode, is there a way to fix this conflict?}@*
|
CUA-mode, is there a way to fix this conflict?}@*
|
||||||
Yes, see @ref{Interaction}.
|
Yes, see @ref{Conflicts}.
|
||||||
|
|
||||||
@item @b{One of my table columns has started to fill up with
|
@item @b{One of my table columns has started to fill up with
|
||||||
@samp{#ERROR}. What is going on?}@*
|
@samp{#ERROR}. What is going on?}@*
|
||||||
|
@ -3784,10 +4189,8 @@ emacs diary?}@*
|
||||||
Since the org-mode agenda is much more powerful and can contain the
|
Since the org-mode agenda is much more powerful and can contain the
|
||||||
diary (@pxref{Calendar/Diary integration}), you should think twice
|
diary (@pxref{Calendar/Diary integration}), you should think twice
|
||||||
before deciding to do this. Integrating Org-mode information into the
|
before deciding to do this. Integrating Org-mode information into the
|
||||||
diary is, however, possible. The following steps are necessary:
|
diary is, however, possible. You need to turn on @emph{fancy diary
|
||||||
Autoload the function @command{org-diary} as shown above under
|
display} by setting in @file{.emacs}:
|
||||||
@ref{Installation and activation}. You also need to use @emph{fancy
|
|
||||||
diary display} by setting in @file{.emacs}:
|
|
||||||
|
|
||||||
@lisp
|
@lisp
|
||||||
(add-hook 'diary-display-hook 'fancy-diary-display)
|
(add-hook 'diary-display-hook 'fancy-diary-display)
|
||||||
|
@ -3823,20 +4226,50 @@ the agenda buffer.
|
||||||
@node Interaction, Bugs, FAQ, Miscellaneous
|
@node Interaction, Bugs, FAQ, Miscellaneous
|
||||||
@section Interaction with other packages
|
@section Interaction with other packages
|
||||||
@cindex packages, interaction with other
|
@cindex packages, interaction with other
|
||||||
Org-mode can cooperate with the following packages:
|
Org-mode lives in the world of GNU Emacs and interacts in various ways
|
||||||
|
with other code out there.
|
||||||
|
|
||||||
|
@menu
|
||||||
|
* Extensions:: Third-party extensions for Org-mode
|
||||||
|
* Cooperation:: Packages Org-mode cooperates with
|
||||||
|
* Conflicts:: Packages that lead to conflicts
|
||||||
|
@end menu
|
||||||
|
|
||||||
|
@node Extensions, Cooperation, Interaction, Interaction
|
||||||
|
@subsection Third-party extensions for Org-mode
|
||||||
|
|
||||||
|
The following extensions for Org-mode have been written by other people:
|
||||||
|
|
||||||
@table @asis
|
@table @asis
|
||||||
|
@cindex @file{org-checklet.el}
|
||||||
|
@item @file{org-checklet.el} by Frank Ruell
|
||||||
|
Provides checklist of items which can be either checked or unchecked.
|
||||||
|
This is similar to the TODO functionality in Org-mode, but never shows
|
||||||
|
up in the agenda. @file{org-checklet} is freely available at
|
||||||
|
@url{http://www.emacswiki.org/cgi-bin/emacs/org-checklet.el}.
|
||||||
@cindex @file{org-mouse.el}
|
@cindex @file{org-mouse.el}
|
||||||
@item @file{org-mouse.el} by Piotr Zielinski
|
@item @file{org-mouse.el} by Piotr Zielinski
|
||||||
This package implements extended mouse functionality for Org-mode. It
|
This package implements extended mouse functionality for Org-mode. It
|
||||||
allows you to cycle visibility and to edit the document structure with
|
allows you to cycle visibility and to edit the document structure with
|
||||||
the mouse. Best of all, it provides a context-sensitive menu on
|
the mouse. Best of all, it provides a context-sensitive menu on
|
||||||
@key{mouse-3} that changes depending on the context of a mouse-click.
|
@key{mouse-3} that changes depending on the context of a mouse-click.
|
||||||
Use a search engine to find this package on the web.
|
@file{org-mouse.el} is freely avaliable at @url{http://www.cl.cam.ac.uk/~pz215/files/org-mouse.el}.
|
||||||
@cindex @file{table.el}
|
@cindex @file{org-publish.el}
|
||||||
@item @file{table.el} by Takaaki Ota
|
@item @file{org-publish.el} by David O'Toole
|
||||||
Org mode cooperates with table.el, see @ref{table.el}. @file{table.el}
|
This package provides facilities for publishing related sets of Org-mode
|
||||||
is part of Emacs 22.
|
files together with linked files like images as a webpages. It is
|
||||||
|
highly configurable and can be used for other publishing purposes as
|
||||||
|
well. As of Org-mode version 4.30, @file{org-publish.el} is part of
|
||||||
|
the Org-mode distribution. However, it is not yet part of Emacs due to
|
||||||
|
a pending copyright assignment. In the mean time, @file{org-publish.el}
|
||||||
|
can be downloaded from David's site:
|
||||||
|
@url{http://dto.freeshell.org/e/org-publish.el}.
|
||||||
|
@end table
|
||||||
|
|
||||||
|
@node Cooperation, Conflicts, Extensions, Interaction
|
||||||
|
@subsection Packages that Org-mode cooperates with
|
||||||
|
|
||||||
|
@table @asis
|
||||||
@cindex @file{calc.el}
|
@cindex @file{calc.el}
|
||||||
@item @file{calc.el} by Dave Gillespie
|
@item @file{calc.el} by Dave Gillespie
|
||||||
Org-mode uses the calc package for implementing spreadsheet
|
Org-mode uses the calc package for implementing spreadsheet
|
||||||
|
@ -3859,6 +4292,31 @@ at @url{http://www.astro.uva.nl/~dominik/Tools}. Org-mode checks for
|
||||||
the function @code{constants-get}, which has to be autoloaded in your
|
the function @code{constants-get}, which has to be autoloaded in your
|
||||||
setup. See the installation instructions in the file
|
setup. See the installation instructions in the file
|
||||||
@file{constants.el}.
|
@file{constants.el}.
|
||||||
|
@item @file{remember.el} by John Wiegley
|
||||||
|
@cindex @file{remember.el}
|
||||||
|
Org mode cooperates with remember, see @ref{Remember}.
|
||||||
|
@file{Remember.el} is not part of Emacs, find it on the web.
|
||||||
|
@cindex @file{table.el}
|
||||||
|
@item @file{table.el} by Takaaki Ota
|
||||||
|
Org mode cooperates with table.el, see @ref{table.el}. @file{table.el}
|
||||||
|
is part of Emacs 22.
|
||||||
|
@end table
|
||||||
|
|
||||||
|
@node Conflicts, , Cooperation, Interaction
|
||||||
|
@subsection Packages that lead to conflicts with Org-mode
|
||||||
|
|
||||||
|
@table @asis
|
||||||
|
|
||||||
|
@cindex @file{allout.el}
|
||||||
|
@item @file{allout.el} by Ken Manheimer
|
||||||
|
Startup of Org-mode may fail with the error message
|
||||||
|
@code{(wrong-type-argument keymapp nil)} when there is an outdated
|
||||||
|
version @file{allout.el} on the load path, for example the version
|
||||||
|
distributed with Emacs 21.x. Upgrade to Emacs 22 and this problem will
|
||||||
|
disappear. If for some reason you cannot do this, make sure that org.el
|
||||||
|
is loaded @emph{before} @file{allout.el}, for example by putting
|
||||||
|
@code{(require 'org)} early enough into your @file{.emacs} file.
|
||||||
|
|
||||||
@cindex @file{CUA.el}
|
@cindex @file{CUA.el}
|
||||||
@item @file{CUA.el} by Kim. F. Storm
|
@item @file{CUA.el} by Kim. F. Storm
|
||||||
Keybindings in Org-mode conflict with the @kbd{S-<cursor>} keys
|
Keybindings in Org-mode conflict with the @kbd{S-<cursor>} keys
|
||||||
|
@ -3882,12 +4340,9 @@ to have other replacement keys, look at the variable
|
||||||
@cindex @file{windmove.el}
|
@cindex @file{windmove.el}
|
||||||
Also this package uses the @kbd{S-<cursor>} keys, so everything written
|
Also this package uses the @kbd{S-<cursor>} keys, so everything written
|
||||||
in the paragraph above about CUA mode also applies here.
|
in the paragraph above about CUA mode also applies here.
|
||||||
@item @file{remember.el} by John Wiegley
|
|
||||||
@cindex @file{remember.el}
|
|
||||||
Org mode cooperates with remember, see @ref{Remember}.
|
|
||||||
@file{Remember.el} is not part of Emacs, find it on the web.
|
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
|
|
||||||
@node Bugs, Acknowledgments, Interaction, Miscellaneous
|
@node Bugs, Acknowledgments, Interaction, Miscellaneous
|
||||||
@section Bugs
|
@section Bugs
|
||||||
@cindex bugs
|
@cindex bugs
|
||||||
|
@ -3911,7 +4366,7 @@ Text in an entry protected with the @samp{QUOTE} keyword should not
|
||||||
autowrap.
|
autowrap.
|
||||||
@item
|
@item
|
||||||
When the application called by @kbd{C-c C-o} to open a file link fails
|
When the application called by @kbd{C-c C-o} to open a file link fails
|
||||||
(for example because the application does not exits or refuses to open
|
(for example because the application does not exist or refuses to open
|
||||||
the file), it does so silently. No error message is displayed.
|
the file), it does so silently. No error message is displayed.
|
||||||
@item
|
@item
|
||||||
Plain list items should be able to hold a TODO item. Unfortunately this
|
Plain list items should be able to hold a TODO item. Unfortunately this
|
||||||
|
@ -3927,9 +4382,8 @@ Recalculating a table line applies the formulas from left to right.
|
||||||
If a formula uses @emph{calculated} fields further down the row,
|
If a formula uses @emph{calculated} fields further down the row,
|
||||||
multiple recalculation may be needed to get all fields consistent.
|
multiple recalculation may be needed to get all fields consistent.
|
||||||
@item
|
@item
|
||||||
You can only make a single word boldface or italic. To emphasize
|
Several words in a rom may @b{*be made bold*}, but this does not work if
|
||||||
several words in a row, each must have the emphasize markers, like in
|
the string is distributed over two lines.
|
||||||
@samp{*three* *bold* *words*}.
|
|
||||||
@item
|
@item
|
||||||
The exporters work well, but could be made more efficient.
|
The exporters work well, but could be made more efficient.
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
BIN
orgcard.pdf
BIN
orgcard.pdf
Binary file not shown.
90
orgcard.tex
90
orgcard.tex
|
@ -1,5 +1,5 @@
|
||||||
% Reference Card for Org Mode
|
% Reference Card for Org Mode
|
||||||
\def\orgversionnumber{4.29}
|
\def\orgversionnumber{4.30}
|
||||||
\def\year{2006}
|
\def\year{2006}
|
||||||
%
|
%
|
||||||
%**start of header
|
%**start of header
|
||||||
|
@ -269,19 +269,11 @@ are preserved on all copies.
|
||||||
|
|
||||||
\section{Getting Started}
|
\section{Getting Started}
|
||||||
%
|
%
|
||||||
%Put the following in your \kbd{~/.emacs}$^1$
|
|
||||||
\vskip -1mm
|
\vskip -1mm
|
||||||
\beginexample%
|
\beginexample%
|
||||||
%(autoload 'org-mode "org" "Org mode" t)
|
|
||||||
%(autoload 'org-diary "org" "Org mode diary entries")
|
|
||||||
%(autoload 'org-agenda "org" "Agenda from Org files" t)
|
|
||||||
%(autoload 'org-todo-list "org" "Global TODO list" t)
|
|
||||||
%(autoload 'org-store-link "org" "Store org link" t)
|
|
||||||
%(autoload 'orgtbl-mode "org" "Orgtbl minor mode" t)
|
|
||||||
%(autoload 'turn-on-orgtbl "org" "Orgtbl minor mode")
|
|
||||||
(add-to-list 'auto-mode-alist '("\\\\.org\$" . org-mode))
|
(add-to-list 'auto-mode-alist '("\\\\.org\$" . org-mode))
|
||||||
(define-key global-map "\\C-cl" 'org-store-link)$^2$
|
(define-key global-map "\\C-cl" 'org-store-link)$^1$
|
||||||
(define-key global-map "\\C-ca" 'org-agenda)$^2$
|
(define-key global-map "\\C-ca" 'org-agenda)$^1$
|
||||||
\endexample
|
\endexample
|
||||||
%
|
%
|
||||||
\metax{For the many customization options try}{M-x org-customize}
|
\metax{For the many customization options try}{M-x org-customize}
|
||||||
|
@ -320,7 +312,7 @@ are preserved on all copies.
|
||||||
\key{yank subtree}{C-c C-x C-y}
|
\key{yank subtree}{C-c C-x C-y}
|
||||||
|
|
||||||
\key{archive subtree}{C-c \$}
|
\key{archive subtree}{C-c \$}
|
||||||
To set archive location for current file, add a line like$^3$:
|
To set archive location for current file, add a line like$^2$:
|
||||||
\vskip -1mm
|
\vskip -1mm
|
||||||
\beginexample%
|
\beginexample%
|
||||||
\#+ARCHIVE: archfile::* Archived Tasks
|
\#+ARCHIVE: archfile::* Archived Tasks
|
||||||
|
@ -330,10 +322,10 @@ To set archive location for current file, add a line like$^3$:
|
||||||
|
|
||||||
\key{show sparse tree for all matches of a regexp}{C-c /}
|
\key{show sparse tree for all matches of a regexp}{C-c /}
|
||||||
\key{view TODO's in sparse tree}{C-c C-v}
|
\key{view TODO's in sparse tree}{C-c C-v}
|
||||||
\key{global TODO list in agenda mode}{C-c t$^2$}
|
\key{global TODO list in agenda mode}{C-c t$^1$}
|
||||||
\key{create sparse tree with all deadlines due}{C-c C-w}
|
\key{create sparse tree with all deadlines due}{C-c C-w}
|
||||||
\key{time sorted view of current org file}{C-c C-r}
|
\key{time sorted view of current org file}{C-c C-r}
|
||||||
%\key{agenda for the week}{C-c a$^2$}
|
%\key{agenda for the week}{C-c a$^1$}
|
||||||
%\key{agenda for date at cursor}{C-c C-o}
|
%\key{agenda for date at cursor}{C-c C-o}
|
||||||
|
|
||||||
\section{Tags}
|
\section{Tags}
|
||||||
|
@ -351,8 +343,8 @@ To set archive location for current file, add a line like$^3$:
|
||||||
|
|
||||||
\key{set the priority of the current item}{C-c , [ABC]}
|
\key{set the priority of the current item}{C-c , [ABC]}
|
||||||
\key{remove priority cookie from current item}{C-c , SPC}
|
\key{remove priority cookie from current item}{C-c , SPC}
|
||||||
\key{raise priority of current item}{S-UP$^4$}
|
\key{raise priority of current item}{S-UP$^3$}
|
||||||
\key{lower priority of current item}{S-DOWN$^4$}
|
\key{lower priority of current item}{S-DOWN$^3$}
|
||||||
|
|
||||||
\key{\kbd{\#+SEQ_TODO: TODO TRY BLUFF DONE}}{\rm todo workflow}
|
\key{\kbd{\#+SEQ_TODO: TODO TRY BLUFF DONE}}{\rm todo workflow}
|
||||||
\key{\kbd{\#+TYP_TODO: Phil home work DONE}}{\rm todo types}
|
\key{\kbd{\#+TYP_TODO: Phil home work DONE}}{\rm todo types}
|
||||||
|
@ -366,8 +358,8 @@ To set archive location for current file, add a line like$^3$:
|
||||||
\key{insert SCHEDULED timestamp}{C-c C-s}
|
\key{insert SCHEDULED timestamp}{C-c C-s}
|
||||||
\key{create sparse tree with all deadlines due}{C-c C-w}
|
\key{create sparse tree with all deadlines due}{C-c C-w}
|
||||||
\key{the time between 2 dates in a time range}{C-c C-y}
|
\key{the time between 2 dates in a time range}{C-c C-y}
|
||||||
\key{change timestamp at cursor by $\pm 1$ day}{S-RIGHT/LEFT$^4$}
|
\key{change timestamp at cursor by $\pm 1$ day}{S-RIGHT/LEFT$^3$}
|
||||||
\key{change year/month/day at cursor by $\pm 1$}{S-UP/DOWN$^4$}
|
\key{change year/month/day at cursor by $\pm 1$}{S-UP/DOWN$^3$}
|
||||||
\key{access the calendar for the current date}{C-c >}
|
\key{access the calendar for the current date}{C-c >}
|
||||||
\key{insert timestamp matching date in calendar}{C-c <}
|
\key{insert timestamp matching date in calendar}{C-c <}
|
||||||
\key{access agenda for current date}{C-c C-o}
|
\key{access agenda for current date}{C-c C-o}
|
||||||
|
@ -380,7 +372,7 @@ To set archive location for current file, add a line like$^3$:
|
||||||
|
|
||||||
\section{Links}
|
\section{Links}
|
||||||
|
|
||||||
\key{globally store link to the current location}{C-c l$^2$}
|
\key{globally store link to the current location}{C-c l$^1$}
|
||||||
\key{insert a link (TAB completes stored links)}{C-c C-l}
|
\key{insert a link (TAB completes stored links)}{C-c C-l}
|
||||||
\key{insert file link with file name completion}{C-u C-c C-l}
|
\key{insert file link with file name completion}{C-u C-c C-l}
|
||||||
\key{edit (also hidden part of) link at point}{C-c C-l}
|
\key{edit (also hidden part of) link at point}{C-c C-l}
|
||||||
|
@ -394,7 +386,7 @@ To set archive location for current file, add a line like$^3$:
|
||||||
{\bf Internal Links}
|
{\bf Internal Links}
|
||||||
|
|
||||||
\key{\kbd{<<My Target>>}}{\rm target}
|
\key{\kbd{<<My Target>>}}{\rm target}
|
||||||
\key{\kbd{<<<My Target>>>}}{\rm radio target$^3$}
|
\key{\kbd{<<<My Target>>>}}{\rm radio target$^2$}
|
||||||
\key{\kbd{[[*this text]]}}{\rm find headline}
|
\key{\kbd{[[*this text]]}}{\rm find headline}
|
||||||
\metax{\kbd{[[this text]]}}{\rm find target or text in buffer}
|
\metax{\kbd{[[this text]]}}{\rm find target or text in buffer}
|
||||||
\metax{\kbd{[[this text][description]]}}{\rm optional link text}
|
\metax{\kbd{[[this text][description]]}}{\rm optional link text}
|
||||||
|
@ -479,7 +471,7 @@ Outside of tables, the same keys may have other functionality.
|
||||||
|
|
||||||
\key{display column number cursor is in}{C-c ?}
|
\key{display column number cursor is in}{C-c ?}
|
||||||
\key{sum numbers in current column/rectangle}{C-c +}
|
\key{sum numbers in current column/rectangle}{C-c +}
|
||||||
\key{copy down with increment}{S-RET$^4$}
|
\key{copy down with increment}{S-RET$^3$}
|
||||||
|
|
||||||
Formulas typed in field are executed by \kbd{TAB},
|
Formulas typed in field are executed by \kbd{TAB},
|
||||||
\kbd{RET} and \kbd{C-c C-c}. \kbd{=} introduces a column
|
\kbd{RET} and \kbd{C-c C-c}. \kbd{=} introduces a column
|
||||||
|
@ -516,15 +508,15 @@ formula, \kbd{:=} a named-field formula.
|
||||||
\key{remove current file from your agenda}{C-c ]}
|
\key{remove current file from your agenda}{C-c ]}
|
||||||
\key{cycle through agenda file list}{C-,}
|
\key{cycle through agenda file list}{C-,}
|
||||||
|
|
||||||
\key{compile agenda for the current week}{C-c a a$^2$}
|
\key{compile agenda for the current week}{C-c a a$^1$}
|
||||||
\key{compile global TODO list}{C-c a t$^2$}
|
\key{compile global TODO list}{C-c a t$^1$}
|
||||||
\key{compile TODO list for specific keyword}{C-c a T$^2$}
|
\key{compile TODO list for specific keyword}{C-c a T$^1$}
|
||||||
\key{match tags in agenda files}{C-c a m$^2$}
|
\key{match tags in agenda files}{C-c a m$^1$}
|
||||||
\key{agenda for date at cursor}{C-c C-o}
|
\key{agenda for date at cursor}{C-c C-o}
|
||||||
\key{show timeline of current org file}{C-c C-r}
|
\key{show timeline of current org file}{C-c C-r}
|
||||||
|
|
||||||
\vskip 1mm
|
\vskip 1mm
|
||||||
To set categories, add lines like$^3$:
|
To set categories, add lines like$^2$:
|
||||||
\vskip -1mm
|
\vskip -1mm
|
||||||
\beginexample%
|
\beginexample%
|
||||||
\#+CATEGORY: MyCateg
|
\#+CATEGORY: MyCateg
|
||||||
|
@ -561,10 +553,10 @@ To set categories, add lines like$^3$:
|
||||||
\key{show tags of current headline}{T}
|
\key{show tags of current headline}{T}
|
||||||
\key{set tags for current headline}{:}
|
\key{set tags for current headline}{:}
|
||||||
\key{set priority of current item}{p}
|
\key{set priority of current item}{p}
|
||||||
\key{raise/lower priority of current item}{S-UP/DOWN$^4$}
|
\key{raise/lower priority of current item}{S-UP/DOWN$^3$}
|
||||||
\key{display weighted priority of current item}{P}
|
\key{display weighted priority of current item}{P}
|
||||||
\key{schedule/set deadline for this item}{C-c C-s/d}
|
\key{schedule/set deadline for this item}{C-c C-s/d}
|
||||||
\key{change timestamp to one day earlier/later}{S-LEFT/RIGHT$^4$}
|
\key{change timestamp to one day earlier/later}{S-LEFT/RIGHT$^3$}
|
||||||
\key{change timestamp to today}{>}
|
\key{change timestamp to today}{>}
|
||||||
\key{insert new entry into diary}{i}
|
\key{insert new entry into diary}{i}
|
||||||
|
|
||||||
|
@ -627,8 +619,6 @@ keywords. {\tt M-TAB} again just after keyword is complete inserts examples.
|
||||||
\key{... which can carry over multiple lines}{\#+TEXT:}
|
\key{... which can carry over multiple lines}{\#+TEXT:}
|
||||||
\key{settings for the export process - see below}{\#+OPTIONS:}
|
\key{settings for the export process - see below}{\#+OPTIONS:}
|
||||||
|
|
||||||
{\bf Settings for the OPTIONS line}
|
|
||||||
|
|
||||||
\key{set number of headline levels for export}{H:2}
|
\key{set number of headline levels for export}{H:2}
|
||||||
\key{turn on/off section numbers}{num:t}
|
\key{turn on/off section numbers}{num:t}
|
||||||
\key{turn on/off table of contents}{toc:t}
|
\key{turn on/off table of contents}{toc:t}
|
||||||
|
@ -649,6 +639,13 @@ Subtrees whose header starts with COMMENT are never exported.
|
||||||
|
|
||||||
\key{toggle COMMENT keyword on entry}{C-c ;}
|
\key{toggle COMMENT keyword on entry}{C-c ;}
|
||||||
|
|
||||||
|
|
||||||
|
\section{Publishing (requires org-publish.el)}
|
||||||
|
\key{publishcurrent file}{C-c C-e C-f}
|
||||||
|
\key{publish current project}{C-c C-e C-p}
|
||||||
|
\key{publish project (prompted for)}{C-c C-e C-c}
|
||||||
|
\key{publish all projects}{C-c C-e C-a}
|
||||||
|
|
||||||
\section{Completion}
|
\section{Completion}
|
||||||
|
|
||||||
In-buffer completion completes TODO keywords at headline start, TeX
|
In-buffer completion completes TODO keywords at headline start, TeX
|
||||||
|
@ -657,8 +654,6 @@ after ``{\tt :}'', and dictionary words elsewhere.
|
||||||
|
|
||||||
\key{Complete word at point}{M-TAB}
|
\key{Complete word at point}{M-TAB}
|
||||||
|
|
||||||
\newcolumn
|
|
||||||
|
|
||||||
\section{Calendar and Diary Integration}
|
\section{Calendar and Diary Integration}
|
||||||
|
|
||||||
To include entries from the Emacs diary in your Org-mode agenda:
|
To include entries from the Emacs diary in your Org-mode agenda:
|
||||||
|
@ -666,26 +661,6 @@ To include entries from the Emacs diary in your Org-mode agenda:
|
||||||
(setq org-agenda-include-diary t)
|
(setq org-agenda-include-diary t)
|
||||||
\endexample
|
\endexample
|
||||||
|
|
||||||
To include the Org-mode agenda in the normal diary, make sure you're
|
|
||||||
using the fancy diary display
|
|
||||||
%
|
|
||||||
%\beginexample%
|
|
||||||
%(add-hook 'diary-display-hook 'fancy-diary-display)
|
|
||||||
%\endexample
|
|
||||||
%
|
|
||||||
and in the \kbd{~/diary} file add
|
|
||||||
|
|
||||||
\beginexample%
|
|
||||||
\&\%\%(org-diary)
|
|
||||||
\endexample
|
|
||||||
|
|
||||||
to include all the files listed in \kbd{org-agenda-files}. For more
|
|
||||||
selective file inclusion use a line for each file:
|
|
||||||
|
|
||||||
\beginexample%
|
|
||||||
\&\%\%(org-diary) ~/path/to/some/org-file.org
|
|
||||||
\endexample
|
|
||||||
|
|
||||||
\section{Remember-mode Integration}
|
\section{Remember-mode Integration}
|
||||||
|
|
||||||
See the manual for how to make remember.el use Org-mode links and
|
See the manual for how to make remember.el use Org-mode links and
|
||||||
|
@ -710,7 +685,7 @@ Insert the note with one of the following:
|
||||||
Configure the variable {\tt org-CUA-compatibility} to make Org-mode
|
Configure the variable {\tt org-CUA-compatibility} to make Org-mode
|
||||||
avoid the \kbd{S-<cursor>} bindings used by these modes. When set,
|
avoid the \kbd{S-<cursor>} bindings used by these modes. When set,
|
||||||
Org-mode will change the following keybindings (also in the agenda
|
Org-mode will change the following keybindings (also in the agenda
|
||||||
buffer, but not during date selection). See note mark four$^4$
|
buffer, but not during date selection). See note mark four$^3$
|
||||||
throughout the reference card.
|
throughout the reference card.
|
||||||
%\vskip-mm
|
%\vskip-mm
|
||||||
\beginexample
|
\beginexample
|
||||||
|
@ -720,16 +695,13 @@ S-RET $\to$ C-S-RET
|
||||||
\endexample
|
\endexample
|
||||||
|
|
||||||
\section{Notes}
|
\section{Notes}
|
||||||
$^1$ The six autoload forms are only needed if Org-mode is not part of
|
$^1$ This is only a suggestion for a binding of this command. Choose
|
||||||
Emacs, or an XEmacs package.
|
|
||||||
|
|
||||||
$^2$ This is only a suggestion for a binding of this command. Choose
|
|
||||||
you own key as shown under INSTALLATION.
|
you own key as shown under INSTALLATION.
|
||||||
|
|
||||||
$^3$ After changing a \kbd{\#+KEYWORD} or \kbd{<<<target>>>} line,
|
$^2$ After changing a \kbd{\#+KEYWORD} or \kbd{<<<target>>>} line,
|
||||||
press \kbd{C-c C-c} with the cursor still in the line to update.
|
press \kbd{C-c C-c} with the cursor still in the line to update.
|
||||||
|
|
||||||
$^4$ Keybinding affected by {\tt org-CUA-compatibility}.
|
$^3$ Keybinding affected by {\tt org-CUA-compatibility}.
|
||||||
|
|
||||||
\copyrightnotice
|
\copyrightnotice
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue