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

Last change on this file since 12109 was 12109, checked in by gb, 11 years ago

We shouldn't generally see #\Return characters in the buffer; if we do,
treat them as whitespace/delimiters.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 7.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(defattribute "Page Delimiter"
78  "This attribute is 1 for characters that separate pages, 0 otherwise.")
79(setf (character-attribute :page-delimiter nil) 1)
80(setf (character-attribute :page-delimiter #\page) 1)
81
82
83(defattribute "Lisp Syntax"
84  "These character attribute is used by the lisp mode commands, and possibly
85  other people.  The value of ths attribute is always a symbol.  Currently
86  defined values are:
87   NIL - No interesting properties.
88   :space - Acts like whitespace, should not include newline.
89   :newline - Newline, man.
90   :open-paren - An opening bracket.
91   :close-paren - A closing bracket.
92   :prefix - A character that is a part of any form it appears before.
93   :string-quote - The character that quotes a string.
94   :char-quote - The character that escapes a single character.
95   :comment - The character that comments out to end of line.
96   :constituent - Things that make up symbols."
97  'symbol nil)
98
99(setf (character-attribute :lisp-syntax #\space) :space)
100(setf (character-attribute :lisp-syntax #\tab) :space)
101
102(setf (character-attribute :lisp-syntax #\() :open-paren)
103(setf (character-attribute :lisp-syntax #\)) :close-paren)
104(setf (character-attribute :lisp-syntax #\') :prefix)
105(setf (character-attribute :lisp-syntax #\`) :prefix) 
106(setf (character-attribute :lisp-syntax #\#) :prefix)
107(setf (character-attribute :lisp-syntax #\,) :prefix)
108(setf (character-attribute :lisp-syntax #\") :string-quote)
109(setf (character-attribute :lisp-syntax #\\) :char-quote)
110(setf (character-attribute :lisp-syntax #\;) :comment)
111(setf (character-attribute :lisp-syntax #\newline) :newline)
112(setf (character-attribute :lisp-syntax nil) :newline)
113
114(do-alpha-chars (ch :both)
115  (setf (character-attribute :lisp-syntax ch) :constituent))
116
117(setf (character-attribute :lisp-syntax #\0) :constituent)
118(setf (character-attribute :lisp-syntax #\1) :constituent)
119(setf (character-attribute :lisp-syntax #\2) :constituent)
120(setf (character-attribute :lisp-syntax #\3) :constituent)
121(setf (character-attribute :lisp-syntax #\4) :constituent)
122(setf (character-attribute :lisp-syntax #\5) :constituent)
123(setf (character-attribute :lisp-syntax #\6) :constituent)
124(setf (character-attribute :lisp-syntax #\7) :constituent)
125(setf (character-attribute :lisp-syntax #\8) :constituent)
126(setf (character-attribute :lisp-syntax #\9) :constituent)
127
128(setf (character-attribute :lisp-syntax #\!) :constituent)
129(setf (character-attribute :lisp-syntax #\{) :constituent)
130(setf (character-attribute :lisp-syntax #\}) :constituent)
131(setf (character-attribute :lisp-syntax #\[) :constituent)
132(setf (character-attribute :lisp-syntax #\]) :constituent)
133(setf (character-attribute :lisp-syntax #\/) :constituent)
134(setf (character-attribute :lisp-syntax #\@) :constituent)
135(setf (character-attribute :lisp-syntax #\-) :constituent)
136(setf (character-attribute :lisp-syntax #\_) :constituent)
137(setf (character-attribute :lisp-syntax #\+) :constituent)
138(setf (character-attribute :lisp-syntax #\%) :constituent)
139(setf (character-attribute :lisp-syntax #\*) :constituent)
140(setf (character-attribute :lisp-syntax #\$) :constituent)
141(setf (character-attribute :lisp-syntax #\^) :constituent)
142(setf (character-attribute :lisp-syntax #\&) :constituent)
143(setf (character-attribute :lisp-syntax #\~) :constituent)
144(setf (character-attribute :lisp-syntax #\=) :constituent)
145(setf (character-attribute :lisp-syntax #\<) :constituent)
146(setf (character-attribute :lisp-syntax #\>) :constituent)
147(setf (character-attribute :lisp-syntax #\?) :constituent)
148(setf (character-attribute :lisp-syntax #\.) :constituent)
149(setf (character-attribute :lisp-syntax #\:) :constituent)
150
151
152(defattribute "Sentence Terminator"
153  "Used for terminating sentences -- ., !, ?.
154   Possibly could make type (mod 3) and use the value of 2 and 1 for spaces
155   to place after chacter."
156  '(mod 2)
157  0)
158
159(setf (character-attribute :sentence-terminator #\.) 1)
160(setf (character-attribute :sentence-terminator #\!) 1)
161(setf (character-attribute :sentence-terminator #\?) 1)
Note: See TracBrowser for help on using the repository browser.