source: release/1.6/source/cocoa-ide/hemlock/unused/archive/elisp/hemlock-shims.lisp

Last change on this file was 6, checked in by Gary Byers, 21 years ago

Initial revision

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 2.7 KB
Line 
1(in-package "ELISP")
2
3(cl:defun mangle-key (key)
4 "Turn a CL-elisp key designator to a PHemlock KEY-EVENT"
5 (typecase key
6; (string (with-input-from-string (stream key)
7; (let ((*readtable* elisp-internals:*elisp-readtable*))
8; (elisp-internals::read-string-char stream :event))))
9 (string (map 'vector #'mangle-key key))
10 ((or vector array)
11 (map 'vector #'mangle-key key))
12 (hemlock-ext:key-event key)
13 ((or integer character)
14 (multiple-value-bind (ismeta ischar) (truncate (if (characterp key)
15 (char-code key)
16 key)
17 128)
18 (cl:let ((charspec (if (cl:= 1 ismeta) (list :meta))))
19 (when (< ischar 32)
20 (push :control charspec)
21 (setq ischar (1- (+ ischar (char-code #\a)))))
22 (push (code-char ischar) charspec)
23 (elisp-internals::emit-character (reverse charspec) :event)
24 )))))
25
26(cl:defun global-set-key (key command)
27 (let ((key (mangle-key key)))
28 (bind-key (string command) key :global)))
29
30(cl:defun local-set-key (key command)
31 (let ((key (mangle-key key)))
32 (bind-key (string command) key :mode major-mode)))
33
34(cl:defun use-local-map (keymap)
35 (cond ((and (listp keymap)
36 (eq (car keymap) 'keymap))
37 (cl:let ((has-menu-name (stringp (cadr keymap))))
38 (let ((char-table (if has-menu-name
39 (if (vectorp (caddr keymap))
40 (caddr keymap))
41 (if (vectorp (cadr keymap))
42 (cadr keymap))))
43 (the-alist (if has-menu-name
44 (if (vectorp (caddr keymap))
45 (cdddr keymap))
46 (if (vectorp (cadr keymap))
47 (cddr keymap)))))
48 ; iterate through the relevant sections
49 )))
50 ((symbolp keymap)
51 (use-local-map (eval keymap)))))
52
53(cl:defun get-buffer-create (buffer-name)
54 (or (getstring buffer-name *buffer-names*)
55 (make-buffer buffer-name)))
56
57(cl:defun get-buffer (buffer-name)
58 (getstring buffer-name *buffer-names*))
59
60(cl:defun commandp (function-designator)
61 (typecase function-designator
62 (symbol (hemlock-internals:commandp (getstring (string-downcase (string function-designator)) hemlock-internals:*command-names*)))
63 (function nil) ; Bug, but as far as I can tell, we can't portably
64 ; extract the name from the function object
65 (string (hemlock-internals:commandp (getstring (string-downcase function-designator) hemlock-internals:*command-names*)))
66 (t nil)))
67
68(cl:defun bolp ()
69 (= 0 (hemlock-internals:mark-charpos (hemlock-internals:current-point))))
70
71(cl:defun bobp ()
72 (and (= 0 (hemlock-internals::line-number (hemlock-internals:mark-line (hemlock-internals:current-point))))
73 (bolp)))
74
75(cl:defun abort-recursive-edit ()
76 (and (hemlock-internals:in-recursive-edit)
77 (hemlock-internals:exit-recursive-edit)))
Note: See TracBrowser for help on using the repository browser.