source: trunk/ccl/hemlock/src/defsyn.lisp @ 6

Last change on this file since 6 was 6, checked in by gb, 17 years ago

Initial revision

  • 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
26(defattribute "Word Delimiter"
27  "A value of 1 for this attribute indicates that the corresponding character
28  separates words.  This is used by the word manipulating commands.")
29
30(setf (character-attribute :word-delimiter nil) 1)
31(setf (character-attribute :word-delimiter #\!) 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 #\space) 1)
64(setf (character-attribute :word-delimiter #\linefeed) 1)
65(setf (character-attribute :word-delimiter
66                           #+CMU #\formfeed
67                           #+(or EXCL sbcl CLISP OpenMCL) #\page) 1)
68(setf (character-attribute :word-delimiter #\tab) 1)
69(setf (character-attribute :word-delimiter #\newline) 1)
70
71(shadow-attribute :word-delimiter #\. 0 "Fundamental")
72(shadow-attribute :word-delimiter #\' 0 "Text")
73(shadow-attribute :word-delimiter #\backspace 0 "Text")
74(shadow-attribute :word-delimiter #\_ 0 "Text")
75
76(defattribute "Page Delimiter"
77  "This attribute is 1 for characters that separate pages, 0 otherwise.")
78(setf (character-attribute :page-delimiter nil) 1)
79(setf (character-attribute :page-delimiter #\page) 1)
80
81
82(defattribute "Lisp Syntax"
83  "These character attribute is used by the lisp mode commands, and possibly
84  other people.  The value of ths attribute is always a symbol.  Currently
85  defined values are:
86   NIL - No interesting properties.
87   :space - Acts like whitespace, should not include newline.
88   :newline - Newline, man.
89   :open-paren - An opening bracket.
90   :close-paren - A closing bracket.
91   :prefix - A character that is a part of any form it appears before.
92   :string-quote - The character that quotes a string.
93   :char-quote - The character that escapes a single character.
94   :comment - The character that comments out to end of line.
95   :constituent - Things that make up symbols."
96  'symbol nil)
97
98(setf (character-attribute :lisp-syntax #\space) :space)
99(setf (character-attribute :lisp-syntax #\tab) :space)
100
101(setf (character-attribute :lisp-syntax #\() :open-paren)
102(setf (character-attribute :lisp-syntax #\)) :close-paren)
103(setf (character-attribute :lisp-syntax #\') :prefix)
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 #\") :string-quote)
108(setf (character-attribute :lisp-syntax #\\) :char-quote)
109(setf (character-attribute :lisp-syntax #\;) :comment)
110(setf (character-attribute :lisp-syntax #\newline) :newline)
111(setf (character-attribute :lisp-syntax nil) :newline)
112
113(do-alpha-chars (ch :both)
114  (setf (character-attribute :lisp-syntax ch) :constituent))
115
116(setf (character-attribute :lisp-syntax #\0) :constituent)
117(setf (character-attribute :lisp-syntax #\1) :constituent)
118(setf (character-attribute :lisp-syntax #\2) :constituent)
119(setf (character-attribute :lisp-syntax #\3) :constituent)
120(setf (character-attribute :lisp-syntax #\4) :constituent)
121(setf (character-attribute :lisp-syntax #\5) :constituent)
122(setf (character-attribute :lisp-syntax #\6) :constituent)
123(setf (character-attribute :lisp-syntax #\7) :constituent)
124(setf (character-attribute :lisp-syntax #\8) :constituent)
125(setf (character-attribute :lisp-syntax #\9) :constituent)
126
127(setf (character-attribute :lisp-syntax #\!) :constituent)
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
150
151(defattribute "Sentence Terminator"
152  "Used for terminating sentences -- ., !, ?.
153   Possibly could make type (mod 3) and use the value of 2 and 1 for spaces
154   to place after chacter."
155  '(mod 2)
156  0)
157
158(setf (character-attribute :sentence-terminator #\.) 1)
159(setf (character-attribute :sentence-terminator #\!) 1)
160(setf (character-attribute :sentence-terminator #\?) 1)
Note: See TracBrowser for help on using the repository browser.