Mercurial > emacs
view lisp/url/url-mailto.el @ 112370:7935463f385e
Fix NextStep build problems with globals.h introducion.
* src/globals.h (struct emacs_globals): Add f_ns_input_file,
f_ns_input_font, f_ns_input_fontsize, f_ns_input_line,
f_ns_input_color, f_ns_input_text, f_ns_working_text,
f_ns_input_spi_name, f_ns_input_spi_arg, f_ns_alternate_modifier,
f_ns_right_alternate_modifier, f_ns_command_modifier,
f_ns_right_command_modifier, f_ns_control_modifier,
f_ns_right_control_modifier, f_ns_function_modifier,
f_ns_antialias_text, f_ns_confirm_quit, f_Vns_icon_type_alist,
f_Vns_version_string, f_Vns_sent_selection_hooks,
f_Vns_lost_selection_hooks, f_Vselection_alist, f_Vns_reg_to_script
and corresponding defines.
* src/nsfns.m (Vmenu_bar_mode, Vtool_bar_mode): Remove declaration.
(Vns_icon_type_alist, Vns_version_string): Move to globals.h.
(syms_of_nsfns): Remove & from DEFVAR_LISP calls.
* src/nsfont.m (Vns_reg_to_script, ns_antialias_text): Move to
globals.h.
(syms_of_nsfont): Remove & from DEFVAR_LISP.
* src/nsselect.m (Vns_sent_selection_hooks, Vns_lost_selection_hooks
(Vselection_alist, Vselection_converter_alist): Move to globals.h.
(syms_of_nsselect): Remove & from DEFVAR_LISP.
* src/nsterm.m (ns_input_file, ns_input_font, ns_input_fontsize)
(ns_input_line, ns_input_color, ns_input_text, ns_working_text)
(ns_input_spi_name, ns_input_spi_arg)
(ns_alternate_modifier, ns_right_alternate_modifier)
(ns_command_modifier, ns_right_command_modifier, ns_control_modifier)
(ns_right_control_modifier, ns_function_modifier)
(ns_antialias_text, ns_confirm_quit): Move to globals.h.
(Vx_toolkit_scroll_bars, x_use_underline_position_properties)
(x_underline_at_descent_line): Remove declaration.
(syms_of_nsterm): Remove & from DEFVAR_LISP and DEFVAR_BOOL.
* src/nsmenu.m (Voverriding_local_map, Voverriding_local_map_menu_flag):
Remove declaration.
author | Jan D. <jan.h.d@swipnet.se> |
---|---|
date | Wed, 19 Jan 2011 23:11:33 +0100 |
parents | ef719132ddfa |
children |
line wrap: on
line source
;;; url-mail.el --- Mail Uniform Resource Locator retrieval code ;; Copyright (C) 1996, 1997, 1998, 1999, 2004, ;; 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. ;; Keywords: comm, data, processes ;; 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: ;;; Code: (require 'url-vars) (require 'url-parse) (require 'url-util) ;;;###autoload (defun url-mail (&rest args) (interactive "P") (if (fboundp 'message-mail) (apply 'message-mail args) (or (apply 'mail args) (error "Mail aborted")))) (defun url-mail-goto-field (field) (if (not field) (goto-char (point-max)) (let ((dest nil) (lim nil) (case-fold-search t)) (save-excursion (goto-char (point-min)) (if (re-search-forward (regexp-quote mail-header-separator) nil t) (setq lim (match-beginning 0))) (goto-char (point-min)) (if (re-search-forward (concat "^" (regexp-quote field) ":") lim t) (setq dest (match-beginning 0)))) (if dest (progn (goto-char dest) (end-of-line)) (goto-char lim) (insert (capitalize field) ": ") (save-excursion (insert "\n")))))) (declare-function mail-send-and-exit "sendmail") ;;;###autoload (defun url-mailto (url) "Handle the mailto: URL syntax." (if (url-user url) ;; malformed mailto URL (mailto://wmperry@gnu.org) instead of ;; mailto:wmperry@gnu.org (setf (url-filename url) (concat (url-user url) "@" (url-filename url)))) (setq url (url-filename url)) (let (to args source-url subject func headers-start) (if (string-match (regexp-quote "?") url) (setq headers-start (match-end 0) to (url-unhex-string (substring url 0 (match-beginning 0))) args (url-parse-query-string (substring url headers-start nil) t t)) (setq to (url-unhex-string url))) (setq source-url (url-view-url t)) (if (and url-request-data (not (assoc "subject" args))) (setq args (cons (list "subject" (concat "Automatic submission from " url-package-name "/" url-package-version)) args))) (if (and source-url (not (assoc "x-url-from" args))) (setq args (cons (list "x-url-from" source-url) args))) (let ((tolist (assoc "to" args))) (if tolist (if (not (string= to "")) (setcdr tolist (list (concat to ", " (cadr tolist))))) (setq args (cons (list "to" to) args)))) (setq subject (cdr-safe (assoc "subject" args))) (if (eq url-mail-command 'compose-mail) (compose-mail nil nil nil 'new) (if (eq url-mail-command 'mail) (mail 'new) (funcall url-mail-command))) (while args (if (string= (caar args) "body") (progn (goto-char (point-min)) (or (search-forward (concat "\n" mail-header-separator "\n") nil t) (goto-char (point-max))) (insert (mapconcat #'(lambda (string) (replace-regexp-in-string "\r\n" "\n" string)) (cdar args) "\n"))) (url-mail-goto-field (caar args)) (setq func (intern-soft (concat "mail-" (caar args)))) (insert (mapconcat 'identity (cdar args) ", "))) (setq args (cdr args))) ;; (url-mail-goto-field "User-Agent") ;; (insert url-package-name "/" url-package-version " URL/" url-version) (if (not url-request-data) (progn (set-buffer-modified-p nil) (if subject (url-mail-goto-field nil) (url-mail-goto-field "subject"))) (if url-request-extra-headers (mapconcat (lambda (x) (url-mail-goto-field (car x)) (insert (cdr x))) url-request-extra-headers "")) (goto-char (point-max)) (insert url-request-data) ;; It seems Microsoft-ish to send without warning. ;; Fixme: presumably this should depend on a privacy setting. (if (y-or-n-p "Send this auto-generated mail? ") (let ((buffer (current-buffer))) (cond ((eq url-mail-command 'compose-mail) (funcall (get mail-user-agent 'sendfunc) nil)) ;; otherwise, we can't be sure ((fboundp 'message-send-and-exit) (message-send-and-exit)) (t (mail-send-and-exit nil))) (kill-buffer buffer)))) nil)) (provide 'url-mailto) ;;; url-mailto.el ends here