|
|
1.1 root 1: ;; Rebindings to imitate Gosmacs.
2: ;; Copyright (C) 1986 Free Software Foundation, Inc.
3:
4: ;; This file is part of GNU Emacs.
5:
6: ;; GNU Emacs is distributed in the hope that it will be useful,
7: ;; but WITHOUT ANY WARRANTY. No author or distributor
8: ;; accepts responsibility to anyone for the consequences of using it
9: ;; or for whether it serves any particular purpose or works at all,
10: ;; unless he says so in writing. Refer to the GNU Emacs General Public
11: ;; License for full details.
12:
13: ;; Everyone is granted permission to copy, modify and redistribute
14: ;; GNU Emacs, but only under the conditions described in the
15: ;; GNU Emacs General Public License. A copy of this license is
16: ;; supposed to have been given to you along with GNU Emacs so you
17: ;; can know your rights and responsibilities. It should be in a
18: ;; file named COPYING. Among other things, the copyright notice
19: ;; and this notice must be preserved on all copies.
20:
21:
22: (defvar non-gosmacs-binding-alist nil)
23:
24: (defun set-gosmacs-bindings ()
25: "Rebind some keys globally to make GNU Emacs resemble Gosling Emacs.
26: Use \\[set-gnu-bindings] to restore previous global bindings."
27: (interactive)
28: (setq non-gosmacs-binding-alist
29: (rebind-and-record
30: '(("\C-x\C-e" compile)
31: ("\C-x\C-f" save-buffers-kill-emacs)
32: ("\C-x\C-i" insert-file)
33: ("\C-x\C-m" save-some-buffers)
34: ("\C-x\C-n" next-error)
35: ("\C-x\C-o" switch-to-buffer)
36: ("\C-x\C-r" insert-file)
37: ("\C-x\C-u" undo)
38: ("\C-x\C-v" find-file-other-window)
39: ("\C-x\C-z" shrink-window)
40: ("\C-x!" shell-command)
41: ("\C-xd" delete-window)
42: ("\C-xn" gosmacs-next-window)
43: ("\C-xp" gosmacs-previous-window)
44: ("\C-xz" enlarge-window)
45: ("\C-z" scroll-one-line-up)
46: ("\e\C-c" save-buffers-kill-emacs)
47: ("\e!" line-to-top-of-window)
48: ("\e(" backward-paragraph)
49: ("\e)" forward-paragraph)
50: ("\e?" apropos)
51: ("\eh" delete-previous-word)
52: ("\ej" indent-sexp)
53: ("\eq" query-replace)
54: ("\er" replace-string)
55: ("\ez" scroll-one-line-down)
56: ("\C-_" suspend-emacs)))))
57:
58: (defun rebind-and-record (bindings)
59: "Establish many new global bindings and record the bindings replaced.
60: Arg is an alist whose elements are (KEY DEFINITION).
61: Value is a similar alist whose elements describe the same KEYs
62: but each with the old definition that was replaced,"
63: (let (old)
64: (while bindings
65: (let* ((this (car bindings))
66: (key (car this))
67: (newdef (nth 1 this)))
68: (setq old (cons (list key (lookup-key global-map key)) old))
69: (global-set-key key newdef))
70: (setq bindings (cdr bindings)))
71: (nreverse old)))
72:
73: (defun set-gnu-bindings ()
74: "Restore the global bindings that were changed by \\[set-gosmacs-bindings]."
75: (interactive)
76: (rebind-and-record non-gosmacs-binding-alist))
77:
78: (defun gosmacs-previous-window ()
79: "Select the window above or to the left of the window now selected.
80: From the window at the upper left corner, select the one at the lower right."
81: (interactive)
82: (select-window (previous-window)))
83:
84: (defun gosmacs-next-window ()
85: "Select the window below or to the right of the window now selected.
86: From the window at the lower right corner, select the one at the upper left."
87: (interactive)
88: (select-window (next-window)))
89:
90: (defun scroll-one-line-up (&optional arg)
91: "Scroll the selected window up (forward in the text) one line (or N lines)."
92: (interactive "p")
93: (scroll-up (or arg 1)))
94:
95: (defun scroll-one-line-down (&optional arg)
96: "Scroll the selected window down (backward in the text) one line (or N)."
97: (interactive "p")
98: (scroll-down (or arg 1)))
99:
100: (defun line-to-top-of-window ()
101: "Scroll the selected window up so that the current line is at the top."
102: (interactive)
103: (recenter 0))
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.