Mercurial > emacs
view lisp/org/org-vm.el @ 103344:d04aeff22966
2009-06-08 Adrian Robert <Adrian.B.Robert@gmail.com>
* nsterm.m (ns_use_system_highlight_color): Drop, unused.
2009-06-08 Adrian Robert <Adrian.B.Robert@gmail.com>
Changes to support :script/:lang/:otf in NS font driver.
* nsfont.m (nsfont_escape_name, nsfont_unescape_name)
(nsfont_get_family, nsfont_char_width): Rename to ns_ prefix to
indicate not part of font driver interface, and change callers.
(ns_get_family): Remove pointless null check.
(nsfont_spec_to_traits, nsfont_fmember_to_entity): Replace with
ns_spec_to_descriptor, ns_descriptor_to_entity.
(nsfont_trait_distance, nsfont_make_fontset_for_font): Remove.
(ns_attribute_value, ns_attribute_fvalue, ns_has_attribute)
(ns_spec_to_descriptor, ns_descriptor_to_entity)
(ns_charset_covers, ns_lang_to_script, ns_otf_to_script)
(ns_get_req_script, ns_accumulate_script_ranges)
(ns_script_to_charset, ns_get_covering_families, ns_findfonts):
New functions.
(nsfont_list, nsfont_match): Use ns_findfonts.
(nsfont_open): Use font descriptor instead of traits.
(nsfont_draw): Handle "automatic" (lookup-table) compositions.
(dump_glyphstring): Rename to ns_dump_glyphstring.
* nsfns.m (Fns_popup_font_panel): Use shared font manager.
* fontset.c (fontset_from_font): Remove NS-specific code.
2009-06-08 Peter Jones <pjones@pmade.com> (tiny change)
* nsterm.m (ns_draw_window_cursor): Respect cursor_type for
nonactive windows.
2009-06-08 Felix Mueller <felix@enqueue.eu> (tiny change)
* nsterm.m (ns_init_paths): Append path separator to INFOPATH
variable.
author | Adrian Robert <Adrian.B.Robert@gmail.com> |
---|---|
date | Mon, 08 Jun 2009 04:34:54 +0000 |
parents | 6d71fc980cde |
children | ac1a55cc2c38 |
line wrap: on
line source
;;; org-vm.el --- Support for links to VM messages from within Org-mode ;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 ;; Free Software Foundation, Inc. ;; Author: Carsten Dominik <carsten at orgmode dot org> ;; Keywords: outlines, hypermedia, calendar, wp ;; Homepage: http://orgmode.org ;; Version: 6.21b ;; ;; 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-preview-current-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 (require 'vm-search) (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-preview-current-message) (vm-summarize))))) (provide 'org-vm) ;; arch-tag: cbc3047b-935e-4d2a-96e7-c5b0117aaa6d ;;; org-vm.el ends here