|
|
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.