1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2025-01-01 11:14:55 +00:00
emacs/lisp/org/org-vm.el
Carsten Dominik 2c3ad40da2 2008-07-24 Carsten Dominik <dominik@science.uva.nl>
* org-exp.el (org-export-region-as-html, org-export-as-html): Make
	sure that calls from `org-export-region-as-html' do not do the
	special check for a subtree.

	* org-agenda.el (org-batch-store-agenda-views): Fix parsing bug.

	* org.el (org-open-file): Use
	`org-open-directory-means-index-dot-org'.
	(org-open-directory-means-index-dot-org): New option.

	* org.el (org-make-link-string): Remove link attributes from
	description.
	(org-open-at-point): Remove link attributes bevore using the path.

	* org-exp.el (org-export-as-html): Handle link attributes.

	* org.el (org-extract-attributes, org-attributes-to-string): New functions.

	* org-table.el (org-table-to-lisp): New function.

	* org.el (org-narrow-to-subtree): Do not include the final newline
	into the narrowed region.

	* org-agenda.el (org-agenda-custom-commands-local-options): Fixed
	bug with user-define skipping condition.

	* org-agenda.el (org-agenda-get-restriction-and-command): Fixed typo.

	* org-exp.el (org-export-html-style-default): Automatic overflow
	handling for pre fields.
	(org-export-as-ascii, org-export-as-html): Change default format
	for time stamp.

	* org-table.el (org-table-export): Offer completion for translator
	functions, and do not require a heading above the table.

	* org.el (org-renumber-ordered-list, org-beginning-of-item-list):
	Cater for the case of a list starting in the first line of the
	buffer.

	* org-publish.el (org-publish-find-title): Bug fix.
	(org-publish-org-index): Implement new :index-style option.

	* org-publish.el (org-publish-timestamp-filename): Use
	SHA1-encoded file names in the timestamp directory.

	* org-publish.el (org-publish-needed-p): Be verbose about files
	published and files skipped.

	* org-exp.el (org-export-preprocess-string): Swap link
	normalization and inernal link targeting.

	* org-publish.el (org-publish-needed-p): Create timestamp
	directory when it does not exist.

	* org-clock.el (org-clock-out-when-done): Doc fix.

	* org.el (org-agenda-skip-unavailable-files): Doc fix.

	* org-exp.el (org-export-remove-comment-blocks-and-subtrees):
	Ignore case when searching for the COMMENT cookie at export time.

	* org-exp.el (org-get-file-contents)
	(org-get-and-remove-property): New functions.
	(org-export-handle-include-files): Handle the new prefix options.
	(org-export-as-html): Fix the verse environment.

	* org.el (org-time=, org-time<, org-time<=, org-time>)
	(org-time>=, org-time<>, org-2ft): New functions.
	(org-op-to-function): Also provide for the time testing fucntions.

	* org-exp.el (org-export-html-style-default): New constant.

	* org-exp.el (org-export-html-style-extra): New variable.
	(org-export-splice-style): New function.

	* org-exp.el (org-export-plist-vars, org-export-as-html):
	Implement `org-export-creator-info'.
	(org-export-creator-info): New option.

	* org.el (org-clock-drawer-start-re, org-clock-drawer-end-re)
	(org-property-drawer-re, org-clock-drawer-re): New constants.

	* org-exp.el (org-icalendar-use-deadline)
	(org-icalendar-use-scheduled): New options.
	(org-icalendar-include-todo): Default changed to t.
	(org-print-icalendar-entries): Implement better utilization of
	scheduling and deadline time stamps.
	(org-export-target-internal-links, org-export-as-html): Allow file
	lines without the "file:" prefix if the file path is an absolute
	path or starts with ".".

	* org-clock.el (org-clocktable-shift): Also undertand yesterday,
	lastweek etc.
	(org-clock-special-range): Also undertand yesterday, lastweek etc.

	* org.el (org-agenda-skip-archived-trees): Docstring now
	discourages using this.
	(org-scan-tags): Check for org-agenda-archives-mode.
	(org-map-entries): Make sure org-agenda-archives-mode is nil.
	(org-agenda-files): Functionality of second arg changed.

	* org-agenda.el (org-agenda-archives-mode): New variable
	(org-write-agenda, org-prepare-agenda, org-agenda-list)
	(org-search-view, org-todo-list, org-tags-view)
	(org-agenda-list-stuck-projects): Call `org-agenda-files' with
	`ifmode' argument.
	(org-agenda-quit): Reset the archives mode.
	(org-agenda-archives-mode): New command.
	(org-agenda-set-mode-name): Include archives info.

	* org.el (org-paste-subtree): Make sure the yanked headline is
	visible if it was yanked at a visible point.
	(org-move-item-up): Fix the bug with moving white space at the end
	of the item.
	(org-show-empty-lines-in-parent): New function.
2008-07-24 13:59:56 +00:00

131 lines
4.8 KiB
EmacsLisp

;;; org-vm.el --- Support for links to VM messages from within Org-mode
;; Copyright (C) 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
;; Author: Carsten Dominik <carsten at orgmode dot org>
;; Keywords: outlines, hypermedia, calendar, wp
;; Homepage: http://orgmode.org
;; Version: 6.06a
;;
;; This file is part of GNU Emacs.
;;
;; GNU Emacs is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;;; Commentary:
;; This file implements links to VM messages and folders from within Org-mode.
;; Org-mode loads this module by default - if this is not what you want,
;; configure the variable `org-modules'.
;;; Code:
(require 'org)
;; Declare external functions and variables
(declare-function vm-beginning-of-message "ext:vm-page" ())
(declare-function vm-follow-summary-cursor "ext:vm-motion" ())
(declare-function vm-get-header-contents "ext:vm-summary"
(message header-name-regexp &optional clump-sep))
(declare-function vm-isearch-narrow "ext:vm-search" ())
(declare-function vm-isearch-update "ext:vm-search" ())
(declare-function vm-select-folder-buffer "ext:vm-macro" ())
(declare-function vm-su-message-id "ext:vm-summary" (m))
(declare-function vm-su-subject "ext:vm-summary" (m))
(declare-function vm-summarize "ext:vm-summary" (&optional display raise))
(defvar vm-message-pointer)
(defvar vm-folder-directory)
;; Install the link type
(org-add-link-type "vm" 'org-vm-open)
(add-hook 'org-store-link-functions 'org-vm-store-link)
;; Implementation
(defun org-vm-store-link ()
"Store a link to a VM folder or message."
(when (or (eq major-mode 'vm-summary-mode)
(eq major-mode 'vm-presentation-mode))
(and (eq major-mode 'vm-presentation-mode) (vm-summarize))
(vm-follow-summary-cursor)
(save-excursion
(vm-select-folder-buffer)
(let* ((message (car vm-message-pointer))
(folder buffer-file-name)
(subject (vm-su-subject message))
(to (vm-get-header-contents message "To"))
(from (vm-get-header-contents message "From"))
(message-id (vm-su-message-id message))
desc link)
(org-store-link-props :type "vm" :from from :to to :subject subject
:message-id message-id)
(setq message-id (org-remove-angle-brackets message-id))
(setq folder (abbreviate-file-name folder))
(if (string-match (concat "^" (regexp-quote vm-folder-directory))
folder)
(setq folder (replace-match "" t t folder)))
(setq desc (org-email-link-description))
(setq link (org-make-link "vm:" folder "#" message-id))
(org-add-link-props :link link :description desc)
link))))
(defun org-vm-open (path)
"Follow a VM message link specified by PATH."
(let (folder article)
(if (not (string-match "\\`\\([^#]+\\)\\(#\\(.*\\)\\)?" path))
(error "Error in VM link"))
(setq folder (match-string 1 path)
article (match-string 3 path))
;; The prefix argument will be interpreted as read-only
(org-vm-follow-link folder article current-prefix-arg)))
(defun org-vm-follow-link (&optional folder article readonly)
"Follow a VM link to FOLDER and ARTICLE."
(require 'vm)
(setq article (org-add-angle-brackets article))
(if (string-match "^//\\([a-zA-Z]+@\\)?\\([^:]+\\):\\(.*\\)" folder)
;; ange-ftp or efs or tramp access
(let ((user (or (match-string 1 folder) (user-login-name)))
(host (match-string 2 folder))
(file (match-string 3 folder)))
(cond
((featurep 'tramp)
;; use tramp to access the file
(if (featurep 'xemacs)
(setq folder (format "[%s@%s]%s" user host file))
(setq folder (format "/%s@%s:%s" user host file))))
(t
;; use ange-ftp or efs
(require (if (featurep 'xemacs) 'efs 'ange-ftp))
(setq folder (format "/%s@%s:%s" user host file))))))
(when folder
(funcall (cdr (assq 'vm org-link-frame-setup)) folder readonly)
(sit-for 0.1)
(when article
(vm-select-folder-buffer)
(widen)
(let ((case-fold-search t))
(goto-char (point-min))
(if (not (re-search-forward
(concat "^" "message-id: *" (regexp-quote article))))
(error "Could not find the specified message in this folder"))
(vm-isearch-update)
(vm-isearch-narrow)
(vm-beginning-of-message)
(vm-summarize)))))
(provide 'org-vm)
;; arch-tag: cbc3047b-935e-4d2a-96e7-c5b0117aaa6d
;;; org-vm.el ends here