Mercurial > emacs
annotate lisp/ps-samp.el @ 110410:f2e111723c3a
Merge changes made in Gnus trunk.
Reimplement nnimap, and do tweaks to the rest of the code to support that.
* gnus-int.el (gnus-finish-retrieve-group-infos)
(gnus-retrieve-group-data-early): New functions.
* gnus-range.el (gnus-range-nconcat): New function.
* gnus-start.el (gnus-get-unread-articles): Support early retrieval of
data.
(gnus-read-active-for-groups): Support finishing the early retrieval of
data.
* gnus-sum.el (gnus-summary-move-article): Pass the move-to group name
if the move is internal, so that nnimap can do fast internal moves.
* gnus.el (gnus-article-special-mark-lists): Add uid/active tuples, for
nnimap usage.
* nnimap.el: Rewritten.
* nnmail.el (nnmail-inhibit-default-split-group): New internal variable
to allow the mail splitting to not return a default group. This is
useful for nnimap, which will leave unmatched mail in the inbox.
* utf7.el (utf7-encode): Autoload.
Implement shell connection.
* nnimap.el (nnimap-open-shell-stream): New function.
(nnimap-open-connection): Use it.
Get the number of lines by using BODYSTRUCTURE.
(nnimap-transform-headers): Get the number of lines in each message.
(nnimap-retrieve-headers): Query for BODYSTRUCTURE so that we get the
number of lines.
Not all servers return UIDNEXT. Work past this problem.
Remove junk from end of file.
Fix typo in "bogus" section.
Make capabilties be case-insensitive.
Require cl when compiling.
Don't bug out if the LIST command doesn't have any parameters.
2010-09-17 Knut Anders Hatlen <kahatlen@gmail.com> (tiny change)
* nnimap.el (nnimap-get-groups): Don't bug out if the LIST command
doesn't have any parameters.
(mm-text-html-renderer): Document gnus-article-html.
2010-09-17 Julien Danjou <julien@danjou.info> (tiny fix)
* mm-decode.el (mm-text-html-renderer): Document gnus-article-html.
* dgnushack.el: Define netrc-credentials.
If the user doesn't have a /etc/services, supply some sensible port defaults.
Have `unseen-or-unread' select an unread unseen article first.
(nntp-open-server): Return whether the open was successful or not.
Throughout all files, replace (save-excursion (set-buffer ...)) with (with-current-buffer ... ).
Save result so that it doesn't say "failed" all the time.
Add ~/.authinfo to the default, since that's probably most useful for users.
Don't use the "finish" method when we're reading from the agent.
Add some more nnimap-relevant agent stuff to nnagent.el.
* nnimap.el (nnimap-with-process-buffer): Removed.
Revert one line that was changed by mistake in the last checkin.
(nnimap-open-connection): Don't error out when we can't make a connection
nnimap-related changes to avoid bugging out if we can't contact a server.
* gnus-start.el (gnus-get-unread-articles): Don't try to scan groups
from methods that are denied.
* nnimap.el (nnimap-possibly-change-group): Return nil if we can't log
in.
(nnimap-finish-retrieve-group-infos): Make sure we're not waiting for
nothing.
* gnus-sum.el (gnus-select-newsgroup): Indent.
author | Katsumi Yamaoka <yamaoka@jpl.org> |
---|---|
date | Sat, 18 Sep 2010 10:02:19 +0000 |
parents | 280c8ae2476d |
children | 417b1e4d63cd |
rev | line source |
---|---|
90736
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
1 ;;; ps-samp.el --- ps-print sample setup code |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
2 |
106815 | 3 ;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc. |
90736
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
4 |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
5 ;; Author: Jim Thompson (was <thompson@wg2.waii.com>) |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
6 ;; Jacques Duthen (was <duthen@cegelec-red.fr>) |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
7 ;; Vinicius Jose Latorre <viniciusjl@ig.com.br> |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
8 ;; Kenichi Handa <handa@m17n.org> (multi-byte characters) |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
9 ;; Maintainer: Kenichi Handa <handa@m17n.org> (multi-byte characters) |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
10 ;; Vinicius Jose Latorre <viniciusjl@ig.com.br> |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
11 ;; Keywords: wp, print, PostScript |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
12 ;; X-URL: http://www.emacswiki.org/cgi-bin/wiki/ViniciusJoseLatorre |
110015
280c8ae2476d
Add "Package:" file headers to denote built-in packages.
Chong Yidong <cyd@stupidchicken.com>
parents:
106815
diff
changeset
|
13 ;; Package: ps-print |
90736
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
14 |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
15 ;; This file is part of GNU Emacs. |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
16 |
94678
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
93873
diff
changeset
|
17 ;; GNU Emacs is free software: you can redistribute it and/or modify |
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
93873
diff
changeset
|
18 ;; it under the terms of the GNU General Public License as published by |
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
93873
diff
changeset
|
19 ;; the Free Software Foundation, either version 3 of the License, or |
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
93873
diff
changeset
|
20 ;; (at your option) any later version. |
90736
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
21 |
94678
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
93873
diff
changeset
|
22 ;; GNU Emacs is distributed in the hope that it will be useful, |
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
93873
diff
changeset
|
23 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of |
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
93873
diff
changeset
|
24 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
93873
diff
changeset
|
25 ;; GNU General Public License for more details. |
90736
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
26 |
94678
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
93873
diff
changeset
|
27 ;; You should have received a copy of the GNU General Public License |
ee5932bf781d
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
93873
diff
changeset
|
28 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. |
90736
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
29 |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
30 ;;; Commentary: |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
31 |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
32 ;; See ps-print.el for documentation. |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
33 |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
34 ;;; Code: |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
35 |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
36 |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
37 (eval-and-compile (require 'ps-print)) |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
38 |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
39 |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
40 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
41 ;;; Sample Setup Code: |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
42 |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
43 |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
44 ;; This stuff is for anybody that's brave enough to look this far, |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
45 ;; and able to figure out how to use it. It isn't really part of |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
46 ;; ps-print, but I'll leave it here in hopes it might be useful: |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
47 |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
48 ;; WARNING!!! The following code is *sample* code only. |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
49 ;; Don't use it unless you understand what it does! |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
50 |
90779
6ea6d3d1508d
Some code fix.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
90738
diff
changeset
|
51 ;; The key `f22' should probably be replaced by `print'. --Stef |
90736
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
52 |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
53 ;; A hook to bind to `rmail-mode-hook' to locally bind prsc and set the |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
54 ;; `ps-left-headers' specially for mail messages. |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
55 (defun ps-rmail-mode-hook () |
90779
6ea6d3d1508d
Some code fix.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
90738
diff
changeset
|
56 (local-set-key [(f22)] 'ps-rmail-print-message-from-summary) |
90736
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
57 (setq ps-header-lines 3 |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
58 ps-left-header |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
59 ;; The left headers will display the message's subject, its |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
60 ;; author, and the name of the folder it was in. |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
61 '(ps-article-subject ps-article-author buffer-name))) |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
62 |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
63 ;; See `ps-gnus-print-article-from-summary'. This function does the |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
64 ;; same thing for rmail. |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
65 (defun ps-rmail-print-message-from-summary () |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
66 (interactive) |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
67 (ps-print-message-from-summary 'rmail-summary-buffer "RMAIL")) |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
68 |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
69 ;; Used in `ps-rmail-print-article-from-summary', |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
70 ;; `ps-gnus-print-article-from-summary' and `ps-vm-print-message-from-summary'. |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
71 (defun ps-print-message-from-summary (summary-buffer summary-default) |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
72 (let ((ps-buf (or (and (boundp summary-buffer) |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
73 (symbol-value summary-buffer)) |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
74 summary-default))) |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
75 (and (get-buffer ps-buf) |
105994
009383a57ce8
* x-dnd.el (x-dnd-maybe-call-test-function):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
100908
diff
changeset
|
76 (with-current-buffer ps-buf |
90736
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
77 (ps-spool-buffer-with-faces))))) |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
78 |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
79 ;; Look in an article or mail message for the Subject: line. To be |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
80 ;; placed in `ps-left-headers'. |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
81 (defun ps-article-subject () |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
82 (save-excursion |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
83 (goto-char (point-min)) |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
84 (if (re-search-forward "^Subject:[ \t]+\\(.*\\)$" nil t) |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
85 (buffer-substring (match-beginning 1) (match-end 1)) |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
86 "Subject ???"))) |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
87 |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
88 ;; Look in an article or mail message for the From: line. Sorta-kinda |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
89 ;; understands RFC-822 addresses and can pull the real name out where |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
90 ;; it's provided. To be placed in `ps-left-headers'. |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
91 (defun ps-article-author () |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
92 (save-excursion |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
93 (goto-char (point-min)) |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
94 (if (re-search-forward "^From:[ \t]+\\(.*\\)$" nil t) |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
95 (let ((fromstring (buffer-substring (match-beginning 1) (match-end 1)))) |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
96 (cond |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
97 |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
98 ;; Try first to match addresses that look like |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
99 ;; thompson@wg2.waii.com (Jim Thompson) |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
100 ((string-match ".*[ \t]+(\\(.*\\))" fromstring) |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
101 (substring fromstring (match-beginning 1) (match-end 1))) |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
102 |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
103 ;; Next try to match addresses that look like |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
104 ;; Jim Thompson <thompson@wg2.waii.com> or |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
105 ;; "Jim Thompson" <thompson@wg2.waii.com> |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
106 ((string-match "\\(\"?\\)\\(.*\\)\\1[ \t]+<.*>" fromstring) |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
107 (substring fromstring (match-beginning 2) (match-end 2))) |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
108 |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
109 ;; Couldn't find a real name -- show the address instead. |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
110 (t fromstring))) |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
111 "From ???"))) |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
112 |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
113 ;; A hook to bind to `gnus-article-prepare-hook'. This will set the |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
114 ;; `ps-left-headers' specially for gnus articles. Unfortunately, |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
115 ;; `gnus-article-mode-hook' is called only once, the first time the *Article* |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
116 ;; buffer enters that mode, so it would only work for the first time |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
117 ;; we ran gnus. The second time, this hook wouldn't get set up. The |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
118 ;; only alternative is `gnus-article-prepare-hook'. |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
119 (defun ps-gnus-article-prepare-hook () |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
120 (setq ps-header-lines 3 |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
121 ps-left-header |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
122 ;; The left headers will display the article's subject, its |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
123 ;; author, and the newsgroup it was in. |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
124 '(ps-article-subject ps-article-author gnus-newsgroup-name))) |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
125 |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
126 ;; A hook to bind to `vm-mode-hook' to locally bind prsc and set the |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
127 ;; `ps-left-headers' specially for mail messages. |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
128 (defun ps-vm-mode-hook () |
90779
6ea6d3d1508d
Some code fix.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
90738
diff
changeset
|
129 (local-set-key [(f22)] 'ps-vm-print-message-from-summary) |
90736
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
130 (setq ps-header-lines 3 |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
131 ps-left-header |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
132 ;; The left headers will display the message's subject, its |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
133 ;; author, and the name of the folder it was in. |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
134 '(ps-article-subject ps-article-author buffer-name))) |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
135 |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
136 ;; Every now and then I forget to switch from the *Summary* buffer to |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
137 ;; the *Article* before hitting prsc, and a nicely formatted list of |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
138 ;; article subjects shows up at the printer. This function, bound to |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
139 ;; prsc for the gnus *Summary* buffer means I don't have to switch |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
140 ;; buffers first. |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
141 ;; sb: Updated for Gnus 5. |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
142 (defun ps-gnus-print-article-from-summary () |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
143 (interactive) |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
144 (ps-print-message-from-summary 'gnus-article-buffer "*Article*")) |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
145 |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
146 ;; See `ps-gnus-print-article-from-summary'. This function does the |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
147 ;; same thing for vm. |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
148 (defun ps-vm-print-message-from-summary () |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
149 (interactive) |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
150 (ps-print-message-from-summary 'vm-mail-buffer "")) |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
151 |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
152 ;; A hook to bind to bind to `gnus-summary-setup-buffer' to locally bind |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
153 ;; prsc. |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
154 (defun ps-gnus-summary-setup () |
90779
6ea6d3d1508d
Some code fix.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
90738
diff
changeset
|
155 (local-set-key [(f22)] 'ps-gnus-print-article-from-summary)) |
90736
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
156 |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
157 ;; Look in an article or mail message for the Subject: line. To be |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
158 ;; placed in `ps-left-headers'. |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
159 (defun ps-info-file () |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
160 (save-excursion |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
161 (goto-char (point-min)) |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
162 (if (re-search-forward "File:[ \t]+\\([^, \t\n]*\\)" nil t) |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
163 (buffer-substring (match-beginning 1) (match-end 1)) |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
164 "File ???"))) |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
165 |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
166 ;; Look in an article or mail message for the Subject: line. To be |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
167 ;; placed in `ps-left-headers'. |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
168 (defun ps-info-node () |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
169 (save-excursion |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
170 (goto-char (point-min)) |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
171 (if (re-search-forward "Node:[ \t]+\\([^,\t\n]*\\)" nil t) |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
172 (buffer-substring (match-beginning 1) (match-end 1)) |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
173 "Node ???"))) |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
174 |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
175 (defun ps-info-mode-hook () |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
176 (setq ps-left-header |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
177 ;; The left headers will display the node name and file name. |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
178 '(ps-info-node ps-info-file))) |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
179 |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
180 ;; WARNING! The following function is a *sample* only, and is *not* |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
181 ;; meant to be used as a whole unless you understand what the effects |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
182 ;; will be! (In fact, this is a copy of Jim's setup for ps-print -- |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
183 ;; I'd be very surprised if it was useful to *anybody*, without |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
184 ;; modification.) |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
185 |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
186 (defun ps-jts-ps-setup () |
90779
6ea6d3d1508d
Some code fix.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
90738
diff
changeset
|
187 (global-set-key [(f22)] 'ps-spool-buffer-with-faces) ;f22 is prsc |
6ea6d3d1508d
Some code fix.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
90738
diff
changeset
|
188 (global-set-key [(shift f22)] 'ps-spool-region-with-faces) |
6ea6d3d1508d
Some code fix.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
90738
diff
changeset
|
189 (global-set-key [(control f22)] 'ps-despool) |
90736
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
190 (add-hook 'gnus-article-prepare-hook 'ps-gnus-article-prepare-hook) |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
191 (add-hook 'gnus-summary-mode-hook 'ps-gnus-summary-setup) |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
192 (add-hook 'vm-mode-hook 'ps-vm-mode-hook) |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
193 (add-hook 'vm-mode-hooks 'ps-vm-mode-hook) |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
194 (add-hook 'Info-mode-hook 'ps-info-mode-hook) |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
195 (setq ps-spool-duplex t |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
196 ps-print-color-p nil |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
197 ps-lpr-command "lpr" |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
198 ps-lpr-switches '("-Jjct,duplex_long")) |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
199 'ps-jts-ps-setup) |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
200 |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
201 ;; WARNING! The following function is a *sample* only, and is *not* |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
202 ;; meant to be used as a whole unless it corresponds to your needs. |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
203 ;; (In fact, this is a copy of Jack's setup for ps-print -- |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
204 ;; I would not be that surprised if it was useful to *anybody*, |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
205 ;; without modification.) |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
206 |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
207 (defun ps-jack-setup () |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
208 (setq ps-print-color-p nil |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
209 ps-lpr-command "lpr" |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
210 ps-lpr-switches nil |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
211 |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
212 ps-paper-type 'a4 |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
213 ps-landscape-mode t |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
214 ps-number-of-columns 2 |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
215 |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
216 ps-left-margin (/ (* 72 1.0) 2.54) ; 1.0 cm |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
217 ps-right-margin (/ (* 72 1.0) 2.54) ; 1.0 cm |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
218 ps-inter-column (/ (* 72 1.0) 2.54) ; 1.0 cm |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
219 ps-bottom-margin (/ (* 72 1.5) 2.54) ; 1.5 cm |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
220 ps-top-margin (/ (* 72 1.5) 2.54) ; 1.5 cm |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
221 ps-header-offset (/ (* 72 1.0) 2.54) ; 1.0 cm |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
222 ps-header-line-pad .15 |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
223 ps-print-header t |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
224 ps-print-header-frame t |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
225 ps-header-lines 2 |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
226 ps-show-n-of-n t |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
227 ps-spool-duplex nil |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
228 |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
229 ps-font-family 'Courier |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
230 ps-font-size 5.5 |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
231 ps-header-font-family 'Helvetica |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
232 ps-header-font-size 6 |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
233 ps-header-title-font-size 8) |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
234 'ps-jack-setup) |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
235 |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
236 |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
237 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
238 |
93873
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
239 ;; If zeroconf is enabled, all CUPS printers can be detected. The |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
240 ;; "Postscript printer" menu will be modified dynamically, as printers |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
241 ;; are added or removed. |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
242 |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
243 ;; Preconditions: |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
244 ;; |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
245 ;; * Emacs has D-Bus support enabled. That is, D-Bus is installed on |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
246 ;; the system, and Emacs has been configured and built with the |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
247 ;; --with-dbus option. |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
248 ;; |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
249 ;; * The zeroconf daemon avahi-daemon is running. |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
250 ;; |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
251 ;; * CUPS has enabled the option "Share published printers connected |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
252 ;; to this system" (see <http://localhost:631/admin>). |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
253 |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
254 (eval-when-compile |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
255 (require 'cl)) |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
256 |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
257 (eval-and-compile |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
258 (require 'printing) |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
259 (require 'zeroconf)) |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
260 |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
261 ;; Add a Postscript printer to the "Postscript printer" menu. |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
262 (defun ps-add-printer (service) |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
263 (let ((name (zeroconf-service-name service)) |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
264 (text (zeroconf-service-txt service)) |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
265 (addr (zeroconf-service-address service)) |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
266 (port (zeroconf-service-port service)) |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
267 is-ps cups-queue) |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
268 ;; `text' is an array of key=value strings like ("Duplex=T" "Copies=T"). |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
269 (dolist (string text) |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
270 (let ((split (split-string string "=" t))) |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
271 ;; If it is a Postscript printer, there must be a string like |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
272 ;; "pdl=application/postscript,application/vnd.hp-PCL,...". |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
273 (when (and (string-equal "pdl" (car split)) |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
274 (string-match "application/postscript" (cadr split))) |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
275 (setq is-ps t)) |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
276 ;; A CUPS printer queue is coded as "rp=printers/<name>". |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
277 (when (and (string-equal "rp" (car split)) |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
278 (string-match "printers/\\(.+\\)" (cadr split))) |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
279 (setq cups-queue (match-string 1 (cadr split)))))) |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
280 ;; Add the printer. |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
281 (when is-ps |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
282 (if cups-queue |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
283 (add-to-list |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
284 'pr-ps-printer-alist (list (intern name) "lpr" nil "-P" cups-queue)) |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
285 ;; No CUPS printer, but a network printer. |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
286 (add-to-list |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
287 'pr-ps-printer-alist (list (intern name) "cupsdoprint" |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
288 '("-P" "default") |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
289 "-H" (format "%s:%s" addr port)))) |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
290 (pr-update-menus t)))) |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
291 |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
292 ;; Remove a printer from the "Postscript printer" menu. |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
293 (defun ps-remove-printer (service) |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
294 (setq pr-ps-printer-alist |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
295 (delete (assoc (intern (zeroconf-service-name service)) |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
296 pr-ps-printer-alist) |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
297 pr-ps-printer-alist)) |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
298 (pr-update-menus t)) |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
299 |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
300 ;; Activate the functions in zeroconf. |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
301 (defun ps-make-dynamic-printer-menu () |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
302 (when (featurep 'dbusbind) |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
303 (zeroconf-init) |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
304 (zeroconf-service-add-hook "_ipp._tcp" :new 'ps-add-printer) |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
305 (zeroconf-service-add-hook "_ipp._tcp" :removed 'ps-remove-printer))) |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
306 |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
307 |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
308 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
64def2c58ad1
* ps-samp.el (ps-add-printer, ps-remove-printer)
Michael Albinus <michael.albinus@gmx.de>
parents:
91332
diff
changeset
|
309 |
90736
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
310 (provide 'ps-samp) |
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
311 |
90738
a77c806ee80a
Changes from arch/CVS synchronization
Miles Bader <miles@gnu.org>
parents:
90736
diff
changeset
|
312 ;; arch-tag: 99c415d3-be39-43c6-aa32-7ee33ba19600 |
90736
ef1369583937
Split XEmacs/Emacs definitions and sample setup code into separate files
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff
changeset
|
313 ;;; ps-samp.el ends here |