annotate lisp/s-region.el @ 24419:30e478cd167e

(shell-command-default-error-buffer): Renamed from shell-command-on-region-default-error-buffer. (shell-command-on-region): Mention in echo area when there is some error output. Mention success or failure, too. Accumulate multiple error outputs going forward, with formfeed in between. Display the error buffer when we have put something in it. (shell-command): Add the ERROR-BUFFER argument feature.
author Karl Heuer <kwzh@gnu.org>
date Mon, 01 Mar 1999 03:19:32 +0000
parents 727cf56647a4
children b174db545cfd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6220
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1 ;;; s-region.el --- set region using shift key.
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
2
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
3 ;; Copyright (C) 1994, 1995 Free Software Foundation, Inc.
6220
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4
17977
727cf56647a4 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
5 ;; Author: Morten Welinder <terra@diku.dk>
6220
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
6 ;; Keywords: terminals
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
7 ;; Favourite-brand-of-beer: None, I hate beer.
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
8
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
9 ;; This file is part of GNU Emacs.
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
10
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
11 ;; GNU Emacs is free software; you can redistribute it and/or modify
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
12 ;; it under the terms of the GNU General Public License as published by
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
13 ;; the Free Software Foundation; either version 2, or (at your option)
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
14 ;; any later version.
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
15
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
16 ;; GNU Emacs is distributed in the hope that it will be useful,
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
19 ;; GNU General Public License for more details.
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
20
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
21 ;; You should have received a copy of the GNU General Public License
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
22 ;; along with GNU Emacs; see the file COPYING. If not, write to the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
23 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14040
diff changeset
24 ;; Boston, MA 02111-1307, USA.
6220
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
25
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
26 ;;; Commentary:
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
27
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
28 ;; Having loaded this code you can set the region by holding down the
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
29 ;; shift key and move the cursor to the other end of the region. The
14040
187735b53d52 Comment fixes.
Karl Heuer <kwzh@gnu.org>
parents: 12103
diff changeset
30 ;; functionality provided by this code is similar to that provided by
6220
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
31 ;; the editors of Borland International's compilers for ms-dos.
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
32
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
33 ;; Currently, s-region-move may be bound only to events that are vectors
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
34 ;; of length one and whose last element is a symbol. Also, the functions
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
35 ;; that are given this kind of overlay should be (interactive "p")
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
36 ;; functions.
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
37
7991
f2e16be5a263 Don't bind keys C-insert, C-delete, and
Richard M. Stallman <rms@gnu.org>
parents: 6220
diff changeset
38 ;; If the following keys are not already bound then...
6220
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
39 ;; C-insert is bound to copy-region-as-kill
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
40 ;; S-delete is bound to kill-region
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
41 ;; S-insert is bound to yank
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
42
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
43 ;;; Code:
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
44
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
45 (defvar s-region-overlay (make-overlay 1 1))
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
46 (overlay-put s-region-overlay 'face 'region)
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
47 (overlay-put s-region-overlay 'priority 1000000) ; for hilit19
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
48
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
49 (defun s-region-unshift (key)
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
50 "Remove shift modifier from last keypress KEY and return that as a key."
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
51 (if (vectorp key)
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
52 (let ((last (aref key (1- (length key)))))
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
53 (if (symbolp last)
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
54 (let* ((keyname (symbol-name last))
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
55 (pos (string-match "S-" keyname)))
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
56 (if pos
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
57 ;; We skip all initial parts of the event assuming that
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
58 ;; those are setting up the prefix argument to the command.
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
59 (vector (intern (concat (substring keyname 0 pos)
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
60 (substring keyname (+ 2 pos)))))
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
61 (error "Non-shifted key: %S" key)))
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
62 (error "Key does not end in a symbol: %S" key)))
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
63 (error "Non-vector key: %S" key)))
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
64
12103
5a4f4ce4ebb6 Delete version number.
Karl Heuer <kwzh@gnu.org>
parents: 11653
diff changeset
65 (defun s-region-move-p1 (&rest arg)
5a4f4ce4ebb6 Delete version number.
Karl Heuer <kwzh@gnu.org>
parents: 11653
diff changeset
66 "This is an overlay function to point-moving keys that are interactive \"p\""
5a4f4ce4ebb6 Delete version number.
Karl Heuer <kwzh@gnu.org>
parents: 11653
diff changeset
67 (interactive "p")
5a4f4ce4ebb6 Delete version number.
Karl Heuer <kwzh@gnu.org>
parents: 11653
diff changeset
68 (apply (function s-region-move) arg))
5a4f4ce4ebb6 Delete version number.
Karl Heuer <kwzh@gnu.org>
parents: 11653
diff changeset
69
5a4f4ce4ebb6 Delete version number.
Karl Heuer <kwzh@gnu.org>
parents: 11653
diff changeset
70 (defun s-region-move-p2 (&rest arg)
5a4f4ce4ebb6 Delete version number.
Karl Heuer <kwzh@gnu.org>
parents: 11653
diff changeset
71 "This is an overlay function to point-moving keys that are interactive \"P\""
5a4f4ce4ebb6 Delete version number.
Karl Heuer <kwzh@gnu.org>
parents: 11653
diff changeset
72 (interactive "P")
5a4f4ce4ebb6 Delete version number.
Karl Heuer <kwzh@gnu.org>
parents: 11653
diff changeset
73 (apply (function s-region-move) arg))
5a4f4ce4ebb6 Delete version number.
Karl Heuer <kwzh@gnu.org>
parents: 11653
diff changeset
74
6220
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
75 (defun s-region-move (&rest arg)
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
76 (if (if mark-active (not (equal last-command 's-region-move)) t)
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
77 (set-mark-command nil)
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
78 (message "")) ; delete the "Mark set" message
12103
5a4f4ce4ebb6 Delete version number.
Karl Heuer <kwzh@gnu.org>
parents: 11653
diff changeset
79 (setq this-command 's-region-move)
6220
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
80 (apply (key-binding (s-region-unshift (this-command-keys))) arg)
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
81 (move-overlay s-region-overlay (mark) (point) (current-buffer))
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
82 (sit-for 1)
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
83 (delete-overlay s-region-overlay))
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
84
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
85 (defun s-region-bind (keylist &optional map)
12103
5a4f4ce4ebb6 Delete version number.
Karl Heuer <kwzh@gnu.org>
parents: 11653
diff changeset
86 "Bind shifted keys in KEYLIST to s-region-move-p1 or s-region-move-p2.
5a4f4ce4ebb6 Delete version number.
Karl Heuer <kwzh@gnu.org>
parents: 11653
diff changeset
87 Each key in KEYLIST is shifted and bound to one of the s-region-move
5a4f4ce4ebb6 Delete version number.
Karl Heuer <kwzh@gnu.org>
parents: 11653
diff changeset
88 functions provided it is already bound to some command or other.
5a4f4ce4ebb6 Delete version number.
Karl Heuer <kwzh@gnu.org>
parents: 11653
diff changeset
89 Optional third argument MAP specifies keymap to add binding to, defaulting
5a4f4ce4ebb6 Delete version number.
Karl Heuer <kwzh@gnu.org>
parents: 11653
diff changeset
90 to global keymap."
5a4f4ce4ebb6 Delete version number.
Karl Heuer <kwzh@gnu.org>
parents: 11653
diff changeset
91 (let ((p2 (list 'scroll-up 'scroll-down
5a4f4ce4ebb6 Delete version number.
Karl Heuer <kwzh@gnu.org>
parents: 11653
diff changeset
92 'beginning-of-buffer 'end-of-buffer)))
5a4f4ce4ebb6 Delete version number.
Karl Heuer <kwzh@gnu.org>
parents: 11653
diff changeset
93 (or map (setq map global-map))
5a4f4ce4ebb6 Delete version number.
Karl Heuer <kwzh@gnu.org>
parents: 11653
diff changeset
94 (while keylist
5a4f4ce4ebb6 Delete version number.
Karl Heuer <kwzh@gnu.org>
parents: 11653
diff changeset
95 (let* ((key (car keylist))
5a4f4ce4ebb6 Delete version number.
Karl Heuer <kwzh@gnu.org>
parents: 11653
diff changeset
96 (binding (key-binding key)))
5a4f4ce4ebb6 Delete version number.
Karl Heuer <kwzh@gnu.org>
parents: 11653
diff changeset
97 (if (commandp binding)
5a4f4ce4ebb6 Delete version number.
Karl Heuer <kwzh@gnu.org>
parents: 11653
diff changeset
98 (define-key
5a4f4ce4ebb6 Delete version number.
Karl Heuer <kwzh@gnu.org>
parents: 11653
diff changeset
99 map
5a4f4ce4ebb6 Delete version number.
Karl Heuer <kwzh@gnu.org>
parents: 11653
diff changeset
100 (vector (intern (concat "S-" (symbol-name (aref key 0)))))
5a4f4ce4ebb6 Delete version number.
Karl Heuer <kwzh@gnu.org>
parents: 11653
diff changeset
101 (cond ((memq binding p2)
5a4f4ce4ebb6 Delete version number.
Karl Heuer <kwzh@gnu.org>
parents: 11653
diff changeset
102 's-region-move-p2)
5a4f4ce4ebb6 Delete version number.
Karl Heuer <kwzh@gnu.org>
parents: 11653
diff changeset
103 (t 's-region-move-p1)))))
5a4f4ce4ebb6 Delete version number.
Karl Heuer <kwzh@gnu.org>
parents: 11653
diff changeset
104 (setq keylist (cdr keylist)))))
6220
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
105
12103
5a4f4ce4ebb6 Delete version number.
Karl Heuer <kwzh@gnu.org>
parents: 11653
diff changeset
106 ;; Single keys (plus modifiers) only!
6220
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
107 (s-region-bind
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
108 (list [right] [left] [up] [down]
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
109 [C-left] [C-right] [C-up] [C-down]
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
110 [M-left] [M-right] [M-up] [M-down]
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
111 [next] [previous] [home] [end]
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
112 [C-next] [C-previous] [C-home] [C-end]
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
113 [M-next] [M-previous] [M-home] [M-end]))
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
114
7991
f2e16be5a263 Don't bind keys C-insert, C-delete, and
Richard M. Stallman <rms@gnu.org>
parents: 6220
diff changeset
115 (or (global-key-binding [C-insert])
f2e16be5a263 Don't bind keys C-insert, C-delete, and
Richard M. Stallman <rms@gnu.org>
parents: 6220
diff changeset
116 (global-set-key [C-insert] 'copy-region-as-kill))
11653
5416e2c64d19 (S-delete): Fix typo (was C-delete).
Richard M. Stallman <rms@gnu.org>
parents: 7991
diff changeset
117 (or (global-key-binding [S-delete])
7991
f2e16be5a263 Don't bind keys C-insert, C-delete, and
Richard M. Stallman <rms@gnu.org>
parents: 6220
diff changeset
118 (global-set-key [S-delete] 'kill-region))
f2e16be5a263 Don't bind keys C-insert, C-delete, and
Richard M. Stallman <rms@gnu.org>
parents: 6220
diff changeset
119 (or (global-key-binding [S-insert])
f2e16be5a263 Don't bind keys C-insert, C-delete, and
Richard M. Stallman <rms@gnu.org>
parents: 6220
diff changeset
120 (global-set-key [S-insert] 'yank))
6220
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
121
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
122 (provide 's-region)
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
123
42589aecdd59 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
124 ;; s-region.el ends here.