emacs-devel
[Top][All Lists]
Advanced

[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


From: Zoltan Kemenczy
Subject: Re: address@hidden: cc-engine:c-guess-basic-syntax related problem in latest CVS]
Date: 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
syntactic element
(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...
It's just
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...

Regards, Zoltan

----- Original Message -----
From: "Martin Stjernholm" <address@hidden>
To: "Zoltan Kemenczy" <address@hidden>
Cc: <address@hidden>; <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
is
> > read-only: #<buffer foo.c>" message in many places.  If the buffer is
made
> > 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
the
> > syntactic information is now returned as '(syntax-symbol point-integer)
list
> > (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
more
> > 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
> them?





reply via email to

[Prev in Thread] Current Thread [Next in Thread]