jcgs@harlqn.harlqn.uucp (John Sturdy) (01/11/89)
Here are some oddments I wrote, that I've been finding particularly
useful lately. This isn't really a package, just a bag of scraps!
----------------------------------------------------------------
;;; -*-emacs-lisp-*- /harlqn/usr/users/jcgs/new-stuff.el
;;; Last edited: Tue Jan 10 16:58:38 1989 by jcgs (John Sturdy) on harlqn
(defun define-lisp-key (key command)
"Define KEY to run COMMAND in all lisp modes."
(define-key lisp-mode-map key command)
(define-key emacs-lisp-mode-map key command)
(define-key lisp-interaction-mode-map key command)
(define-key inferior-lisp-mode-map key command))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; A couple of commands for structure-style editing ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun pick-up-sexp-at-point ()
"Put the expression that starts at point into the kill ring."
(interactive)
(save-excursion
(mark-sexp 1)
(copy-region-as-kill (point) (mark))
(exit-recursive-edit)))
(defun wander-yank ()
"Let the user wander around in a recursive edit inside a
save-excursion, then do a yank - presumably the user picks something
up into the kill ring during the recursive edit."
(interactive)
(save-excursion
(save-window-excursion
(recursive-edit)))
(yank 1))
(define-lisp-key "\e[" 'wander-yank)
(define-lisp-key "\e]" 'pick-up-sexp-at-point)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Useful with inferior Lisps, shells, telnets... ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun other-window-file-name ()
"Insert at point the name of the file in the next window.
Particularly useful in a shell window."
(interactive)
(let ((name (save-window-excursion
(buffer-file-name
(window-buffer
(other-window 1))))))
(if name (insert name)
(message "Other window has no file"))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; For elisp hacking, when you can remember the keystrokes but not the name! ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun insert-key-command (key-sequence)
"Insert at point the emacs function name bound to KEY-SEQUENCE."
(interactive "kInsert emacs function for key sequence: ")
(insert (symbol-name (key-binding key-sequence)) " "))
;;; end of new-stuff.el
----------------------------------------------------------------
--
__John When asked to attend a court case, Father Moses took with him
a leaking jug of water. Asked about it, he said: "You ask me to judge
the faults of another, while mine run out like water behind me."
jcgs@uk.co.harlqn (UK notation) jcgs@harlqn.co.uk (most places)
...!mcvax!ukc!harlqn!jcgs (uucp - really has more stages, but ukc knows us)
John Sturdy Telephone +44-223-872522
Harlequin Ltd, Barrington Hall, Barrington, Cambridge, UKnews@bbn.COM (News system owner ID) (01/13/89)
A minor nit-pick with a recent posting: > From: jcgs@harlqn.harlqn.uucp (John Sturdy) > Date: 10 Jan 89 18:07:22 GMT > Sender: news@harlqn.UUCP > Organization: Harlequin Ltd, Cambridge, England > Lines: 73 > > Here are some oddments I wrote, that I've been finding particularly > useful lately. This isn't really a package, just a bag of scraps! > ---------------------------------------------------------------- > ;;; -*-emacs-lisp-*- /harlqn/usr/users/jcgs/new-stuff.el > ;;; Last edited: Tue Jan 10 16:58:38 1989 by jcgs (John Sturdy) on harlqn > > (defun define-lisp-key (key command) > "Define KEY to run COMMAND in all lisp modes." > (define-key lisp-mode-map key command) > (define-key emacs-lisp-mode-map key command) > (define-key lisp-interaction-mode-map key command) > (define-key inferior-lisp-mode-map key command)) > [other useful stuff deleted] This WOULD be useful if you needed to do it: however, you don't. While i'm not certain i understand the reasons why, i am certain of the outcome: if instead of using define-key you use local-set-key, all these other modes "inherit" the binding. So if i use local-set-key inside lisp-mode-hook to perform some binding, i also get it for free in emacs-lisp-mode, etc., suggesting that local-set-key is a better way to go (and it probably says that somewhere :-). ........................................ Sean Boisen -- sboisen@bbn.com BBN Systems and Technologies Corporation, Cambridge MA Disclaimer: these opinions void where prohibited by lawyers. Sean