source: trunk/ccl/hemlock/src/decls.lisp @ 711

Last change on this file since 711 was 711, checked in by gb, 16 years ago

New (shared) gap-cache stuff.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 2.8 KB
Line 
1(in-package :hemlock-internals)
2
3;;; Use #.*fast* for optimizations.
4
5(eval-when (compile eval load)
6  (defparameter *fast*
7    '(declare (optimize speed)))
8
9  (defparameter *fast*
10    '(declare)))
11
12
13;; Since the declaim form for functions looks clumsy and is
14;; syntax-wise different from defun, we define us a new declfun, which
15;; fixes this.
16
17(defmacro declfun (name lambda-list)
18  `(declaim (ftype (function
19                    ,(let ((q lambda-list)
20                           res)
21                          (do () ((or (null q)
22                                      (member (car q) '(&optional &rest &key))))
23                            (push 't res)
24                            (pop q))
25                          (when (eq (car q) '&optional)
26                            (push '&optional res)
27                            (pop q)
28                            (do () ((or (null q)
29                                        (member (car q) '(&rest &key))))
30                              (push 't res)))
31                          (when (eq (car q) '&rest)
32                            (push '&rest res)
33                            (pop q)
34                            (push 't res)
35                            (pop q))
36                          (when (eq (car q) '&key)
37                            (push '&key res)
38                            (pop q)
39                            (do () ((or (null q)
40                                        (member (car q) '(&allow-other-keys))))
41                              (push (list (intern (string (if (consp (car q))
42                                                              (if (consp (caar q))
43                                                                  (caaar q)
44                                                                  (caar q))
45                                                              (car q)))
46                                                  :keyword)
47                                          't)
48                                    res)
49                              (pop q)))
50                          (when (eq (car q) '&allow-other-keys)
51                            (push '&allow-other-keys res)
52                            (pop q))
53                          (reverse res))
54                    t)
55             ,name)))
56
57(declfun window-buffer (window))
58(declfun change-to-buffer (buffer))     ;filecoms.lisp
59
60(declfun hemlock::to-line-comment (mark start)) ;defined in comments.lisp used in lispbuf.lisp
61
62;;; Some special variables are forward-referenced, and we don't even
63;;; need to invent a new language to advise the compiler of that ...
64(declaim (special *mode-names* *current-buffer* *echo-area-buffer*
65                  *buffer-gap-context*
66                  *the-sentinel*
67                  *in-the-editor* *buffer-list* *things-to-do-once*
68                  *gc-notify-before* *gc-notify-after*))
Note: See TracBrowser for help on using the repository browser.