source: trunk/source/cocoa-ide/hemlock/src/defsyn.lisp @ 12511

Last change on this file since 12511 was 12511, checked in by gz, 10 years ago

Make a bunch of chars (like *diff) word constituents in Lisp mode

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 8.2 KB
Line 
1;;; -*- Log: hemlock.log; Package: Hemlock -*-
2;;;
3;;; **********************************************************************
4;;; This code was written as part of the CMU Common Lisp project at
5;;; Carnegie Mellon University, and has been placed in the public domain.
6;;;
7#+CMU (ext:file-comment
8  "$Header$")
9;;;
10;;; **********************************************************************
11;;;
12;;; This file contains definitions of various character attributes.
13;;;
14(in-package :hemlock)
15
16(defattribute "Whitespace"
17  "A value of 1 for this attribute indicates that the corresponding character
18  should be considered as whitespace.  This is used by the Blank-Line-P
19  function.")
20
21(setf (character-attribute :whitespace #\space) 1)
22(setf (character-attribute :whitespace #\linefeed) 1)
23(setf (character-attribute :whitespace #\tab) 1)
24(setf (character-attribute :whitespace #\newline) 1)
25(setf (character-attribute :whitespace #\return) 1)
26
27(defattribute "Word Delimiter"
28  "A value of 1 for this attribute indicates that the corresponding character
29  separates words.  This is used by the word manipulating commands.")
30
31(setf (character-attribute :word-delimiter nil) 1)
32(setf (character-attribute :word-delimiter #\!) 1)
33(setf (character-attribute :word-delimiter #\@) 1)
34(setf (character-attribute :word-delimiter #\#) 1)
35(setf (character-attribute :word-delimiter #\$) 1)
36(setf (character-attribute :word-delimiter #\%) 1)
37(setf (character-attribute :word-delimiter #\^) 1)
38(setf (character-attribute :word-delimiter #\&) 1)
39(setf (character-attribute :word-delimiter #\*) 1)
40(setf (character-attribute :word-delimiter #\() 1)
41(setf (character-attribute :word-delimiter #\)) 1)
42(setf (character-attribute :word-delimiter #\-) 1)
43(setf (character-attribute :word-delimiter #\_) 1)
44(setf (character-attribute :word-delimiter #\=) 1)
45(setf (character-attribute :word-delimiter #\+) 1)
46(setf (character-attribute :word-delimiter #\[) 1)
47(setf (character-attribute :word-delimiter #\]) 1)
48(setf (character-attribute :word-delimiter #\\) 1)
49(setf (character-attribute :word-delimiter #\|) 1)
50(setf (character-attribute :word-delimiter #\;) 1)
51(setf (character-attribute :word-delimiter #\:) 1)
52(setf (character-attribute :word-delimiter #\') 1)
53(setf (character-attribute :word-delimiter #\") 1)
54(setf (character-attribute :word-delimiter #\{) 1)
55(setf (character-attribute :word-delimiter #\}) 1)
56(setf (character-attribute :word-delimiter #\,) 1)
57(setf (character-attribute :word-delimiter #\.) 1)
58(setf (character-attribute :word-delimiter #\<) 1)
59(setf (character-attribute :word-delimiter #\>) 1)
60(setf (character-attribute :word-delimiter #\/) 1)
61(setf (character-attribute :word-delimiter #\?) 1)
62(setf (character-attribute :word-delimiter #\`) 1)
63(setf (character-attribute :word-delimiter #\~) 1)
64(setf (character-attribute :word-delimiter #\space) 1)
65(setf (character-attribute :word-delimiter #\linefeed) 1)
66(setf (character-attribute :word-delimiter
67                           #+CMU #\formfeed
68                           #+(or EXCL sbcl CLISP Clozure) #\page) 1)
69(setf (character-attribute :word-delimiter #\tab) 1)
70(setf (character-attribute :word-delimiter #\return) 1)
71
72(shadow-attribute :word-delimiter #\. 0 "Fundamental")
73(shadow-attribute :word-delimiter #\' 0 "Text")
74(shadow-attribute :word-delimiter #\backspace 0 "Text")
75(shadow-attribute :word-delimiter #\_ 0 "Text")
76
77;; These aren't generally used to separate words in a Lisp symbol
78(shadow-attribute :word-delimiter #\* 0 "Lisp")
79(shadow-attribute :word-delimiter #\! 0 "Lisp")
80(shadow-attribute :word-delimiter #\$ 0 "Lisp")
81(shadow-attribute :word-delimiter #\+ 0 "Lisp")
82(shadow-attribute :word-delimiter #\% 0 "Lisp")
83(shadow-attribute :word-delimiter #\^ 0 "Lisp")
84(shadow-attribute :word-delimiter #\& 0 "Lisp")
85(shadow-attribute :word-delimiter #\? 0 "Lisp")
86(shadow-attribute :word-delimiter #\_ 0 "Lisp")
87(shadow-attribute :word-delimiter #\= 0 "Lisp")
88(shadow-attribute :word-delimiter #\[ 0 "Lisp")
89(shadow-attribute :word-delimiter #\] 0 "Lisp")
90(shadow-attribute :word-delimiter #\\ 0 "Lisp")
91(shadow-attribute :word-delimiter #\| 0 "Lisp")
92(shadow-attribute :word-delimiter #\{ 0 "Lisp")
93(shadow-attribute :word-delimiter #\} 0 "Lisp")
94(shadow-attribute :word-delimiter #\< 0 "Lisp")
95(shadow-attribute :word-delimiter #\> 0 "Lisp")
96(shadow-attribute :word-delimiter #\/ 0 "Lisp")
97(shadow-attribute :word-delimiter #\~ 0 "Lisp")
98
99
100(defattribute "Page Delimiter"
101  "This attribute is 1 for characters that separate pages, 0 otherwise.")
102(setf (character-attribute :page-delimiter nil) 1)
103(setf (character-attribute :page-delimiter #\page) 1)
104
105
106(defattribute "Lisp Syntax"
107  "These character attribute is used by the lisp mode commands, and possibly
108  other people.  The value of ths attribute is always a symbol.  Currently
109  defined values are:
110   NIL - No interesting properties.
111   :space - Acts like whitespace, should not include newline.
112   :newline - Newline, man.
113   :open-paren - An opening bracket.
114   :close-paren - A closing bracket.
115   :prefix - A character that is a part of any form it appears before.
116   :string-quote - The character that quotes a string.
117   :char-quote - The character that escapes a single character.
118   :comment - The character that comments out to end of line.
119   :constituent - Things that make up symbols."
120  'symbol nil)
121
122(setf (character-attribute :lisp-syntax #\space) :space)
123(setf (character-attribute :lisp-syntax #\tab) :space)
124
125(setf (character-attribute :lisp-syntax #\() :open-paren)
126(setf (character-attribute :lisp-syntax #\)) :close-paren)
127(setf (character-attribute :lisp-syntax #\') :prefix)
128(setf (character-attribute :lisp-syntax #\`) :prefix) 
129(setf (character-attribute :lisp-syntax #\#) :prefix)
130(setf (character-attribute :lisp-syntax #\,) :prefix)
131(setf (character-attribute :lisp-syntax #\") :string-quote)
132(setf (character-attribute :lisp-syntax #\\) :char-quote)
133(setf (character-attribute :lisp-syntax #\;) :comment)
134(setf (character-attribute :lisp-syntax #\newline) :newline)
135(setf (character-attribute :lisp-syntax nil) :newline)
136
137(do-alpha-chars (ch :both)
138  (setf (character-attribute :lisp-syntax ch) :constituent))
139
140(setf (character-attribute :lisp-syntax #\0) :constituent)
141(setf (character-attribute :lisp-syntax #\1) :constituent)
142(setf (character-attribute :lisp-syntax #\2) :constituent)
143(setf (character-attribute :lisp-syntax #\3) :constituent)
144(setf (character-attribute :lisp-syntax #\4) :constituent)
145(setf (character-attribute :lisp-syntax #\5) :constituent)
146(setf (character-attribute :lisp-syntax #\6) :constituent)
147(setf (character-attribute :lisp-syntax #\7) :constituent)
148(setf (character-attribute :lisp-syntax #\8) :constituent)
149(setf (character-attribute :lisp-syntax #\9) :constituent)
150
151(setf (character-attribute :lisp-syntax #\!) :constituent)
152(setf (character-attribute :lisp-syntax #\{) :constituent)
153(setf (character-attribute :lisp-syntax #\}) :constituent)
154(setf (character-attribute :lisp-syntax #\[) :constituent)
155(setf (character-attribute :lisp-syntax #\]) :constituent)
156(setf (character-attribute :lisp-syntax #\/) :constituent)
157(setf (character-attribute :lisp-syntax #\@) :constituent)
158(setf (character-attribute :lisp-syntax #\-) :constituent)
159(setf (character-attribute :lisp-syntax #\_) :constituent)
160(setf (character-attribute :lisp-syntax #\+) :constituent)
161(setf (character-attribute :lisp-syntax #\%) :constituent)
162(setf (character-attribute :lisp-syntax #\*) :constituent)
163(setf (character-attribute :lisp-syntax #\$) :constituent)
164(setf (character-attribute :lisp-syntax #\^) :constituent)
165(setf (character-attribute :lisp-syntax #\&) :constituent)
166(setf (character-attribute :lisp-syntax #\~) :constituent)
167(setf (character-attribute :lisp-syntax #\=) :constituent)
168(setf (character-attribute :lisp-syntax #\<) :constituent)
169(setf (character-attribute :lisp-syntax #\>) :constituent)
170(setf (character-attribute :lisp-syntax #\?) :constituent)
171(setf (character-attribute :lisp-syntax #\.) :constituent)
172(setf (character-attribute :lisp-syntax #\:) :constituent)
173
174
175(defattribute "Sentence Terminator"
176  "Used for terminating sentences -- ., !, ?.
177   Possibly could make type (mod 3) and use the value of 2 and 1 for spaces
178   to place after chacter."
179  '(mod 2)
180  0)
181
182(setf (character-attribute :sentence-terminator #\.) 1)
183(setf (character-attribute :sentence-terminator #\!) 1)
184(setf (character-attribute :sentence-terminator #\?) 1)
Note: See TracBrowser for help on using the repository browser.