[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: address@hidden: cc-engine:c-guess-basic-syntax related problem in la
Re: address@hidden: cc-engine:c-guess-basic-syntax related problem in latest CVS]
Wed, 9 Jul 2003 22:08:16 -0400
Getting syntax information on write-protected C++ buffers does work now...
(however, visiting a .java file now doesn't load java-mode?? :-( . (don't
have time to look into the cc-mode autoloads) But after loading java-mode,
the syntactic information is returned correctly).
Regarding syntactic info 'predicates':
In gud-find-class certain lookups are performed a couple of times per
syntactic context as the information is parsed backward in the file looking
for any nested classes ('inclass syntactic elements). Two "predicates"
(there must be a better term for "getAttribute" type methods?) I found
useful to define (inside gud-find-class as local symbols) are:
(fset 'syntax-symbol (lambda (x) (car (car x)))) ; symbol of first
(fset 'syntax-point (lambda (x) (car (cdr (car x))))) ; point (integer) of
first syntactic element
If feeling pedantic, one could also define an iterator:
(fset 'syntax-remaining (lambda (x) (cdr x)))
to make reading code easier (a bit).
I did look through cc-engine to see if anything like the above existed...
common sense to have such predicates with the "objects", so if you agree,
redesign/name them for cc-engine, and I'll patch gud-jdb accordingly...
----- Original Message -----
From: "Martin Stjernholm" <address@hidden>
To: "Zoltan Kemenczy" <address@hidden>
Cc: <address@hidden>; <address@hidden>; <address@hidden>;
Sent: Tuesday, July 08, 2003 7:31 PM
Subject: Re: address@hidden: cc-engine:c-guess-basic-syntax related
problem in latest CVS]
> > From: "Zoltan Kemenczy" <address@hidden>
> > Subject: cc-engine:c-guess-basic-syntax related problem in latest CVS
> > To: <address@hidden>
> > Date: Tue Jul 8 04:11:46 2003 +0200
> > Try S-M-; (c-guess-basic-syntax) at different points within a buffer
> > visiting a C source file that is *write-protected*... - I get a "Buffer
> > read-only: #<buffer foo.c>" message in many places. If the buffer is
> > writeable, the syntactic information is returned...
> This has to do with functions that make "hidden buffer changes", i.e.
> change text properties for internal purposes. See the blurb on that
> near the top of cc-engine.el. c-guess-basic-syntax is a function that
> could do such hidden buffer changes, but I've now wrapped it so that
> it can be called in read only mode again.
> > A related question (that started all this) is that the point value of
> > syntactic information is now returned as '(syntax-symbol point-integer)
> > (it used to be a cons cell: '(symbol . point-integer)). This breaks my
> > gud-find-class function inside gud.el. I fixed that function (to use
> > maintainable predicate functions on the syntactic info as opposed to the
> > (car (cdr...)), but before I submit the patch, I'd like to ask if this
> > change to the '(syntax-symbol point-integer) is there to stay...
> It is. I had to do that change to be able to extend syntactic
> information. There's a note about it in NEWS (which I've extended a
> bit now).
> I think such predicate functions belong in CC Mode. How did you design