comparison lisp/progmodes/cc-defs.el @ 106911:497e3aa2f614

Fix bug#5395: typing '#' in an empty C buffer throws "args out of range". * progmodes/cc-defs.el: (c-set-cpp-delimiters, c-clear-cpp-delimiters): Check for EOB playing the role of delimiter.
author Alan Mackenzie <acm@muc.de>
date Tue, 19 Jan 2010 22:10:19 +0000
parents 855f55740303
children 1786f2e6a856
comparison
equal deleted inserted replaced
106910:a38986b4badb 106911:497e3aa2f614
1215 ;; propery '(14) (generic comment delimiter). 1215 ;; propery '(14) (generic comment delimiter).
1216 (defmacro c-set-cpp-delimiters (beg end) 1216 (defmacro c-set-cpp-delimiters (beg end)
1217 ;; This macro does a hidden buffer change. 1217 ;; This macro does a hidden buffer change.
1218 `(progn 1218 `(progn
1219 (c-put-char-property ,beg 'category 'c-cpp-delimiter) 1219 (c-put-char-property ,beg 'category 'c-cpp-delimiter)
1220 (c-put-char-property ,end 'category 'c-cpp-delimiter))) 1220 (if (< ,end (point-max))
1221 (c-put-char-property ,end 'category 'c-cpp-delimiter))))
1221 (defmacro c-clear-cpp-delimiters (beg end) 1222 (defmacro c-clear-cpp-delimiters (beg end)
1222 ;; This macro does a hidden buffer change. 1223 ;; This macro does a hidden buffer change.
1223 `(progn 1224 `(progn
1224 (c-clear-char-property ,beg 'category) 1225 (c-clear-char-property ,beg 'category)
1225 (c-clear-char-property ,end 'category))) 1226 (if (< ,end (point-max))
1227 (c-clear-char-property ,end 'category))))
1226 1228
1227 (defsubst c-comment-out-cpps () 1229 (defsubst c-comment-out-cpps ()
1228 ;; Render all preprocessor constructs syntactically commented out. 1230 ;; Render all preprocessor constructs syntactically commented out.
1229 (put 'c-cpp-delimiter 'syntax-table c-cpp-delimiter)) 1231 (put 'c-cpp-delimiter 'syntax-table c-cpp-delimiter))
1230 (defsubst c-uncomment-out-cpps () 1232 (defsubst c-uncomment-out-cpps ()