Thread: [cedet-semantic] Completion with Xemacs not working
Brought to you by:
zappo
From: Nicolas P. <nic...@ya...> - 2005-10-23 00:05:14
|
Hello, I have some problem with Intellisense, it seems that I've got some problem to make it work with C struct : Here is my init.el : ***************************************************************** (setq semantic-load-turn-useful-things-on t) (require 'cedet) (require 'semantic-ia) ***************************************************************** And here is the code which is not working ***************************************************************** #include <stdio.h> typedef struct { int tata; int titi; } T_toto; int main(void) { T_toto var; var.tata = 456; var.titi = 123; printf("%d %d\n", var.tata, var.titi); return 0; } ***************************************************************** I created a DB with "semanticdb-save-all-db" and try to use "semantic-complete-analyze-inline" but I got the following message : "inline completion not needed" Well, then I type "var.t" and try "semantic-ia-complete-symbol" I got "No smart completions found" If I try "semantic-analyze-current-context" I got : ***************************************************************** Context Type: #<semantic-analyze-context context> Bounds: (143 . 144) Prefix: class T_toto var "t" Prefix Classes: 'function 'variable Prefix Types: 'nil -------- LocalVars: class T_toto var class t printf (class var ,class tata ,class var ,class titi ) ***************************************************************** What am I doing wrong ? I'm working with cedet 1:1.0pre3-1 and Xemacs 21.4.17 (Debian Testing) Thanks in advance, |
From: Eric M. L. <er...@si...> - 2005-10-23 01:34:55
|
Hi, You found a bug in the C parser. You seem to have created something with typedefs no one has tested yet. I made a small change to bovine/c.by and bovine/semantic-c.el which then allowed your example to work. http://cvs.sourceforge.net/viewcvs.py/cedet/cedet/semantic/bovine/ Be sure to get c.by V 1.29, and semantic-c.el V 1.40. The above link can take a few hours before it reflects the changes I have submitted. Eric >>> Nicolas Pernetty <nic...@ya...> seems to think that: >Hello, > >I have some problem with Intellisense, it seems that I've got some >problem to make it work with C struct : > >Here is my init.el : >***************************************************************** >(setq semantic-load-turn-useful-things-on t) >(require 'cedet) >(require 'semantic-ia) >***************************************************************** > >And here is the code which is not working > >***************************************************************** >#include <stdio.h> > >typedef struct >{ > int tata; > int titi; >} T_toto; > >int main(void) >{ > T_toto var; > > var.tata = 456; > var.titi = 123; > > printf("%d %d\n", var.tata, var.titi); > return 0; >} >***************************************************************** > >I created a DB with "semanticdb-save-all-db" >and try to use "semantic-complete-analyze-inline" but I got the >following message : "inline completion not needed" > >Well, then I type "var.t" and try "semantic-ia-complete-symbol" I got >"No smart completions found" > >If I try "semantic-analyze-current-context" I got : >***************************************************************** >Context Type: #<semantic-analyze-context context> >Bounds: (143 . 144) >Prefix: class T_toto var > "t" >Prefix Classes: 'function > 'variable >Prefix Types: 'nil >-------- >LocalVars: class T_toto var > class t printf (class var ,class tata ,class var ,class >titi ) >***************************************************************** > >What am I doing wrong ? > >I'm working with cedet 1:1.0pre3-1 and Xemacs 21.4.17 (Debian Testing) > >Thanks in advance, > > >------------------------------------------------------- >This SF.Net email is sponsored by the JBoss Inc. >Get Certified Today * Register for a JBoss Training Course >Free Certification Exam for All Training Attendees Through End of 2005 >Visit http://www.jboss.com/services/certification for more information >_______________________________________________ >cedet-semantic mailing list >ced...@li... >https://lists.sourceforge.net/lists/listinfo/cedet-semantic > -- Eric Ludlam: za...@gn..., er...@si... Home: http://www.ludlam.net Siege: www.siege-engine.com Emacs: http://cedet.sourceforge.net GNU: www.gnu.org |
From: Nicolas P. <nic...@ya...> - 2005-10-23 11:24:09
|
Hello, Thanks I downloaded the last CVS version and it works now. But the completions choice/menu are 'strange' : 1) if I type 'semantic-ia-complete-symbol', it offers me the choice of 'int tata' and 'int titi' which result if I click on them in 'var.tint tata' and 'var.tint titi' (not correct !). 2) if I type 'semantic-ia-complete-symbol-menu', a popup menu appears and when I click on the symbols, result is correct ('var.tata' or 'var.titi') BUT if the completion is unique (for instance if I type 'var.ti') , I got an error : (malformed-list [("titi" variable (:type "int") (reparse-symbol classsubparts) [36 45])]) delq(nil [("titi" variable (:type "int") (reparse-symbol classsubparts) [36 45])]) ad-Orig-imenu--create-menu-1("Completions" [("titi" variable (:type "int") (reparse-symbol classsubparts) [36 45])]) (setq ad-return-value (ad-Orig-imenu--create-menu-1 title list)) (if (and (null list) (not ...)) (setq ad-return-value "-") (setq ad-return-value (ad-Orig-imenu--create-menu-1 title list))) (let (ad-return-value) (if (and ... ...) (setq ad-return-value "-") (setq ad-return-value ...)) ad-return-value) imenu--create-menu-1("Completions" [("titi" variable (:type "int") (reparse-symbol classsubparts) [36 45])]) imenu--mouse-menu((("titi : int" . [...])) #<buttondown-event button3> "Completions") I also have 2 more questions (if you got enough time !) : a) I've read that there is some kind of auto checking while typing, resulting in underlining (color ?) what the parser doesn't understand. I've tried semantic-complete-analyze-inline ('inline completion not needed') and semantic-show-unmatched-syntax-mode (everything I type is in inverse video for 2 seconds, then go back to normal, even incorrect lines, for instance with mismatch parenthesis). Have I missed something ? b) I notice that 'semantic-ia-complete-symbol' doesn't work with structs, for instance if I type 'T_to' in the previous prog, and try 'semantic-ia-complete-symbol' I got 'No smart completions found', If I type 'semantic-analyse-current-context' I got : Context Type: #<semantic-analyze-context context> Bounds: (97 . 101) Prefix: "T_to" Prefix Classes: 'function 'variable -------- LocalVars: class T_toto var But 'tag-complete-symbol' works for that (given that you have created TAGS before). It seems that TAGS try to complete types and semantic try to complete variables, am I correct ? Is there a way to make the two of them work together ? Thanks for your help, and great and useful work by the way ! Regards, *********** REPLY SEPARATOR *********** On Sat, 22 Oct 2005 21:34:45 -0400, "Eric M. Ludlam" <er...@si...> wrote : > Hi, > > You found a bug in the C parser. You seem to have created something > with typedefs no one has tested yet. I made a small change to > bovine/c.by and bovine/semantic-c.el which then allowed your example > to work. > > http://cvs.sourceforge.net/viewcvs.py/cedet/cedet/semantic/bovine/ > > Be sure to get c.by V 1.29, and semantic-c.el V 1.40. > The above link can take a few hours before it reflects the > changes I have submitted. > > Eric > > >>> Nicolas Pernetty <nic...@ya...> seems to think that: > >Hello, > > > >I have some problem with Intellisense, it seems that I've got some > >problem to make it work with C struct : > > > >Here is my init.el : > >***************************************************************** > >(setq semantic-load-turn-useful-things-on t) > >(require 'cedet) > >(require 'semantic-ia) > >***************************************************************** > > > >And here is the code which is not working > > > >***************************************************************** > >#include <stdio.h> > > > >typedef struct > >{ > > int tata; > > int titi; > >} T_toto; > > > >int main(void) > >{ > > T_toto var; > > > > var.tata = 456; > > var.titi = 123; > > > > printf("%d %d\n", var.tata, var.titi); > > return 0; > >} > >***************************************************************** > > > >I created a DB with "semanticdb-save-all-db" > >and try to use "semantic-complete-analyze-inline" but I got the > >following message : "inline completion not needed" > > > >Well, then I type "var.t" and try "semantic-ia-complete-symbol" I got > >"No smart completions found" > > > >If I try "semantic-analyze-current-context" I got : > >***************************************************************** > >Context Type: #<semantic-analyze-context context> > >Bounds: (143 . 144) > >Prefix: class T_toto var > > "t" > >Prefix Classes: 'function > > 'variable > >Prefix Types: 'nil > >-------- > >LocalVars: class T_toto var > > class t printf (class var ,class tata ,class var ,class > >titi ) > >***************************************************************** > > > >What am I doing wrong ? > > > >I'm working with cedet 1:1.0pre3-1 and Xemacs 21.4.17 (Debian > >Testing) > > > >Thanks in advance, > > > > > >------------------------------------------------------- > >This SF.Net email is sponsored by the JBoss Inc. > >Get Certified Today * Register for a JBoss Training Course > >Free Certification Exam for All Training Attendees Through End of > >2005 Visit http://www.jboss.com/services/certification for more > >information _______________________________________________ > >cedet-semantic mailing list > >ced...@li... > >https://lists.sourceforge.net/lists/listinfo/cedet-semantic > > > |
From: Eric M. L. <er...@si...> - 2005-10-23 14:38:40
|
Hi, >>> Nicolas Pernetty <nic...@ya...> seems to think that: >Hello, > >Thanks I downloaded the last CVS version and it works now. >But the completions choice/menu are 'strange' : >1) if I type 'semantic-ia-complete-symbol', it offers me the choice of >'int tata' and 'int titi' which result if I click on them in 'var.tint >tata' and 'var.tint titi' (not correct !). Hmmm. I rarely ever click in the completion window. You can fix that by changing `semantic-ia-completion-format-tag-function' to the symbol `semantic-format-tag-name'. The 'int' and other possible decorations like function () or whatnot are there to help express what the tag is. If you then typed more, and did `semantic-ia-complete-symbol' again, it would not include the 'int' and such. The `semantic-ia' functions are basically very simple entries into the semantic analyzer API. You might be more interested in `semantic-complete-analyze-inline' for a more complex and (hopefully!) better completion UI. >2) if I type 'semantic-ia-complete-symbol-menu', a popup menu appears >and when I click on the symbols, result is correct ('var.tata' or >'var.titi') BUT if the completion is unique (for instance if I type >'var.ti') , I got an error : I fixed this with CVS version 1.9 of semantic-ia.el. >I also have 2 more questions (if you got enough time !) : > >a) I've read that there is some kind of auto checking while typing, >resulting in underlining (color ?) what the parser doesn't understand. >I've tried semantic-complete-analyze-inline ('inline completion not >needed') and semantic-show-unmatched-syntax-mode (everything I type is >in inverse video for 2 seconds, then go back to normal, even incorrect >lines, for instance with mismatch parenthesis). >Have I missed something ? The mode is `semantic-show-unmatched-syntax-mode', but you described `semantic-highlight-edits-mode'. Unmatched syntax mode for C will not detect errors inside the body of a function because function bodies are not (yet) parsed. >b) I notice that 'semantic-ia-complete-symbol' doesn't work with >structs, for instance if I type 'T_to' in the previous prog, and try >'semantic-ia-complete-symbol' I got 'No smart completions found', If I >type 'semantic-analyse-current-context' I got : > >Context Type: #<semantic-analyze-context context> >Bounds: (97 . 101) >Prefix: "T_to" >Prefix Classes: 'function > 'variable >-------- >LocalVars: class T_toto var > >But 'tag-complete-symbol' works for that (given that you have created >TAGS before). >It seems that TAGS try to complete types and semantic try to complete >variables, am I correct ? >Is there a way to make the two of them work together ? [ ... ] If you are completing something like this: int myfun() { T_to-!- where -!- is the cursor, then you probably should use `senator-complete-symbol', because there is nothing to be 'smart' about. It's just some basic global symbol that needs matching. If you have this however: int myfun() { T_toto var; var.t-!- Then you can use `semantic-ia-*' or other 'analyzer' type completion because there is a distinct context that needs to be expanding that the global symbol completer cannot know about. Ideally, these two concepts would be merged, but I just haven't gotten around to that yet. I put a small change into semantic-ia.el (cvs version 1.10) to do this for `semantic-ia-complete-symbol', but it will not translate into smarts for the other completion routines. Eric -- Eric Ludlam: za...@gn..., er...@si... Home: http://www.ludlam.net Siege: www.siege-engine.com Emacs: http://cedet.sourceforge.net GNU: www.gnu.org |
From: Nicolas P. <nic...@ya...> - 2005-10-23 18:39:25
|
> >2) if I type 'semantic-ia-complete-symbol-menu', a popup menu appears > >and when I click on the symbols, result is correct ('var.tata' or > >'var.titi') BUT if the completion is unique (for instance if I type > >'var.ti') , I got an error : > > I fixed this with CVS version 1.9 of semantic-ia.el. Ok I've just tried and it doesn't seems to work (malformed list...), here is the stacktrace : # bind (standard-output stack-trace-on-signal debug-on-signal stack-trace-on-error debug-on-error) delq(nil [("titi" variable (:type "int") (reparse-symbol classsubparts) [36 45])]) # bind (list title) ad-Orig-imenu--create-menu-1("Completions" [("titi" variable (:type "int") (reparse-symbol classsubparts) [36 45])]) (setq ad-return-value (ad-Orig-imenu--create-menu-1 title list)) (if (and (null list) (not ...)) (setq ad-return-value "-") (setq ad-return-value (ad-Orig-imenu--create-menu-1 title list))) # bind (ad-return-value) (let (ad-return-value) (if (and ... ...) (setq ad-return-value "-") (setq ad-return-value ...)) ad-return-value) # bind (list title) imenu--create-menu-1("Completions" [("titi" variable (:type "int") (reparse-symbol classsubparts) [36 45])]) # bind (imenu--popup-menu-p menu title event index-alist) imenu--mouse-menu((("titi : int" . [...])) #<buttondown-event button3> "Completions") (let ((ans ...)) (when ans (if ... ...) (delete-region ... ...) (semantic-ia-insert-tag ans))) # bind (pre syms a) (let* ((a ...) (syms ...) (pre ...)) (if (not syms) (error "No completions available")) (let (...) (when ans ... ... ...))) # bind (point) semantic-ia-complete-symbol-menu(149) # bind (command-debug-status) call-interactively(semantic-ia-complete-symbol-menu) command-execute(semantic-ia-complete-symbol-menu t) # bind (_execute_command_keys_ _execute_command_name_ prefix-arg) execute-extended-command(nil) # bind (command-debug-status) call-interactively(execute-extended-command) # (condition-case ... . error) # (catch top-level ...) Maybe you can try to reproduce what is done for senator-completion-menu-popu (this one work) ? > >a) I've read that there is some kind of auto checking while typing, > >resulting in underlining (color ?) what the parser doesn't > >understand. I've tried semantic-complete-analyze-inline ('inline > >completion not needed') and semantic-show-unmatched-syntax-mode > >(everything I type is in inverse video for 2 seconds, then go back > >to normal, even incorrect lines, for instance with mismatch > >parenthesis). Have I missed something ? > > The mode is `semantic-show-unmatched-syntax-mode', but you described > `semantic-highlight-edits-mode'. > > Unmatched syntax mode for C will not detect errors inside the body of > a function because function bodies are not (yet) parsed. Can you described an example where we should have something underlined ? Whatever I type, it doesn't change at all... > >b) I notice that 'semantic-ia-complete-symbol' doesn't work with > >structs, for instance if I type 'T_to' in the previous prog, and try > >'semantic-ia-complete-symbol' I got 'No smart completions found', If > >I type 'semantic-analyse-current-context' I got : > > > >Context Type: #<semantic-analyze-context context> > >Bounds: (97 . 101) > >Prefix: "T_to" > >Prefix Classes: 'function > > 'variable > >-------- > >LocalVars: class T_toto var > > > >But 'tag-complete-symbol' works for that (given that you have created > >TAGS before). > >It seems that TAGS try to complete types and semantic try to complete > >variables, am I correct ? > >Is there a way to make the two of them work together ? > [ ... ] > > If you are completing something like this: > > int myfun() > { > T_to-!- > > where -!- is the cursor, then you probably should use > `senator-complete-symbol', because there is nothing to be 'smart' > about. It's just some basic global symbol that needs matching. > > If you have this however: > > int myfun() > { > T_toto var; > > var.t-!- > > Then you can use `semantic-ia-*' or other 'analyzer' type completion > because there is a distinct context that needs to be expanding that > the global symbol completer cannot know about. > > Ideally, these two concepts would be merged, but I just haven't gotten > around to that yet. > > I put a small change into semantic-ia.el (cvs version 1.10) to do this > for `semantic-ia-complete-symbol', but it will not translate into > smarts for the other completion routines. > > Eric > Ok I'm beginning to understand the logic behind. The patch you applied works, no problem. Ideally could you put it also in 'semantic-ia-complete-symbol-menu' to call 'senator-completion-menu-popup' when it doesn't find anything ? Thanks for the quick answer by the way ! Regards, |
From: Eric M. L. <er...@si...> - 2005-10-24 00:21:14
|
>>> Nicolas Pernetty <nic...@ya...> seems to think that: > >> >2) if I type 'semantic-ia-complete-symbol-menu', a popup menu appears >> >and when I click on the symbols, result is correct ('var.tata' or >> >'var.titi') BUT if the completion is unique (for instance if I type >> >'var.ti') , I got an error : >> >> I fixed this with CVS version 1.9 of semantic-ia.el. > >Ok I've just tried and it doesn't seems to work (malformed list...), here is the >stacktrace : > ># bind (standard-output stack-trace-on-signal debug-on-signal stack-trace-on-error debug-on-error) > delq(nil [("titi" variable (:type "int") (reparse-symbol classsubparts) [36 45])]) > # bind (list title) > ad-Orig-imenu--create-menu-1("Completions" [("titi" variable (:type "int") (reparse-symbol classsubparts) [36 45])]) > (setq ad-return-value (ad-Orig-imenu--create-menu-1 title list)) > (if (and (null list) (not ...)) (setq ad-return-value "-") (setq ad-return-value (ad-Orig-imenu--create-menu-1 title list))) [ ... ] Is this XEmacs? I couldn't get a failure in Emacs 22.0.whatever These two functions in semantic-ia are fast tools on top of the analyzer. The completion engines I've spent more time on are in semantic-complete.el, such as semantic-complete-analyze-inline, or semantic-idle-completions-mode. >Maybe you can try to reproduce what is done for senator-completion-menu-popu (this one work) ? It already uses senator's menu code. >> >a) I've read that there is some kind of auto checking while typing, >> >resulting in underlining (color ?) what the parser doesn't >> >understand. I've tried semantic-complete-analyze-inline ('inline >> >completion not needed') and semantic-show-unmatched-syntax-mode >> >(everything I type is in inverse video for 2 seconds, then go back >> >to normal, even incorrect lines, for instance with mismatch >> >parenthesis). Have I missed something ? >> >> The mode is `semantic-show-unmatched-syntax-mode', but you described >> `semantic-highlight-edits-mode'. >> >> Unmatched syntax mode for C will not detect errors inside the body of >> a function because function bodies are not (yet) parsed. > >Can you described an example where we should have something underlined ? >Whatever I type, it doesn't change at all... If semantic-show-unmatched-syntax-mode is on, then something like this: int int int main() { } would underline some 'int's, but: int main() { int int int i; } would not. >> >b) I notice that 'semantic-ia-complete-symbol' doesn't work with >> >structs, for instance if I type 'T_to' in the previous prog, and try >> >'semantic-ia-complete-symbol' I got 'No smart completions found', If >> >I type 'semantic-analyse-current-context' I got : >> > >> >Context Type: #<semantic-analyze-context context> >> >Bounds: (97 . 101) >> >Prefix: "T_to" >> >Prefix Classes: 'function >> > 'variable >> >-------- >> >LocalVars: class T_toto var >> > >> >But 'tag-complete-symbol' works for that (given that you have created >> >TAGS before). >> >It seems that TAGS try to complete types and semantic try to complete >> >variables, am I correct ? >> >Is there a way to make the two of them work together ? >> [ ... ] >> >> If you are completing something like this: >> >> int myfun() >> { >> T_to-!- >> >> where -!- is the cursor, then you probably should use >> `senator-complete-symbol', because there is nothing to be 'smart' >> about. It's just some basic global symbol that needs matching. >> >> If you have this however: >> >> int myfun() >> { >> T_toto var; >> >> var.t-!- >> >> Then you can use `semantic-ia-*' or other 'analyzer' type completion >> because there is a distinct context that needs to be expanding that >> the global symbol completer cannot know about. >> >> Ideally, these two concepts would be merged, but I just haven't gotten >> around to that yet. >> >> I put a small change into semantic-ia.el (cvs version 1.10) to do this >> for `semantic-ia-complete-symbol', but it will not translate into >> smarts for the other completion routines. >> >> Eric >> > >Ok I'm beginning to understand the logic behind. The patch you applied >works, no problem. >Ideally could you put it also in 'semantic-ia-complete-symbol-menu' >to call 'senator-completion-menu-popup' when it doesn't find anything ? [ ... ] Give it a try. ;) Eric -- Eric Ludlam: za...@gn..., er...@si... Home: http://www.ludlam.net Siege: www.siege-engine.com Emacs: http://cedet.sourceforge.net GNU: www.gnu.org |
From: Nicolas P. <nic...@ya...> - 2005-10-24 18:43:29
|
> >> >2) if I type 'semantic-ia-complete-symbol-menu', a popup menu > >> >appears and when I click on the symbols, result is correct > >> >('var.tata' or 'var.titi') BUT if the completion is unique (for > >> >instance if I type 'var.ti') , I got an error : > >> > >> I fixed this with CVS version 1.9 of semantic-ia.el. > > > >Ok I've just tried and it doesn't seems to work (malformed list...), > >here is the stacktrace : > > > ># bind (standard-output stack-trace-on-signal debug-on-signal > >stack-trace-on-error debug-on-error) > > delq(nil [("titi" variable (:type "int") (reparse-symbol > > classsubparts) [36 45])]) # bind (list title) > > ad-Orig-imenu--create-menu-1("Completions" [("titi" variable > > (:type "int") (reparse-symbol classsubparts) [36 45])]) (setq > > ad-return-value (ad-Orig-imenu--create-menu-1 title list)) (if (and > > (null list) (not ...)) (setq ad-return-value "-") (setq > > ad-return-value (ad-Orig-imenu--create-menu-1 title list))) > [ ... ] > > Is this XEmacs? I couldn't get a failure in Emacs 22.0.whatever Well I've just tried again with Xemacs, and this time activate 'debug on error', same error but with this you may have more information : Debugger entered--Lisp error: (malformed-list [("titi" variable (:type "int") (reparse-symbol classsubparts) [36 45])]) delq(nil [("titi" variable (:type "int") (reparse-symbol classsubparts) [36 45])]) ad-Orig-imenu--create-menu-1("Completions" [("titi" variable (:type "int") (reparse-symbol classsubparts) [36 45])]) (setq ad-return-value (ad-Orig-imenu--create-menu-1 title list)) (if (and (null list) (not ...)) (setq ad-return-value "-") (setq ad-return-value (ad-Orig-imenu--create-menu-1 title list))) (let (ad-return-value) (if (and ... ...) (setq ad-return-value "-") (setq ad-return-value ...)) ad-return-value) imenu--create-menu-1("Completions" [("titi" variable (:type "int") (reparse-symbol classsubparts) [36 45])]) imenu--mouse-menu((("titi : int" . [...])) #<buttondown-event button3> "Completions") (let ((ans ...)) (when ans (if ... ...) (delete-region ... ...) (semantic-ia-insert-tag ans))) (let* ((a ...) (syms ...) (pre ...)) (if (not syms) (error "No completions available")) (let (...) (when ans ... ... ...))) semantic-ia-complete-symbol-menu(148) call-interactively(semantic-ia-complete-symbol-menu) command-execute(semantic-ia-complete-symbol-menu t) execute-extended-command(nil) call-interactively(execute-extended-command) Maybe I can do something to help you ? Add a print in the middle of the code for instance ? (I'm a real beginner in Elisp, so I couldn't figure it by myself...) > These two functions in semantic-ia are fast tools on top of the > analyzer. The completion engines I've spent more time on are in > semantic-complete.el, such as semantic-complete-analyze-inline, or > semantic-idle-completions-mode. > > >Maybe you can try to reproduce what is done for > >senator-completion-menu-popu (this one work) ? > > It already uses senator's menu code. Ah ? they seems different... Maybe it's that I couldn't grasp what they mean > >> >a) I've read that there is some kind of auto checking while > >> >typing, resulting in underlining (color ?) what the parser doesn't > >> >understand. I've tried semantic-complete-analyze-inline ('inline > >> >completion not needed') and semantic-show-unmatched-syntax-mode > >> >(everything I type is in inverse video for 2 seconds, then go back > >> >to normal, even incorrect lines, for instance with mismatch > >> >parenthesis). Have I missed something ? > >> > >> The mode is `semantic-show-unmatched-syntax-mode', but you > >> described `semantic-highlight-edits-mode'. > >> > >> Unmatched syntax mode for C will not detect errors inside the body > >> of a function because function bodies are not (yet) parsed. > > > >Can you described an example where we should have something > >underlined ? Whatever I type, it doesn't change at all... > > If semantic-show-unmatched-syntax-mode is on, then something like > this: > > int int int main() > { > } > > would underline some 'int's, but: > > int main() > { > int int int i; > > } > > would not. It doesn't work... Nothing happened at all, even if it's written 'show-unmatched-syntax minor mode is enabled' > > >> >b) I notice that 'semantic-ia-complete-symbol' doesn't work with > >> >structs, for instance if I type 'T_to' in the previous prog, and > >> >try 'semantic-ia-complete-symbol' I got 'No smart completions > >> >found', If I type 'semantic-analyse-current-context' I got : > >> > > >> >Context Type: #<semantic-analyze-context context> > >> >Bounds: (97 . 101) > >> >Prefix: "T_to" > >> >Prefix Classes: 'function > >> > 'variable > >> >-------- > >> >LocalVars: class T_toto var > >> > > >> >But 'tag-complete-symbol' works for that (given that you have > >> >created TAGS before). > >> >It seems that TAGS try to complete types and semantic try to > >> >complete variables, am I correct ? > >> >Is there a way to make the two of them work together ? > >> [ ... ] > >> > >> If you are completing something like this: > >> > >> int myfun() > >> { > >> T_to-!- > >> > >> where -!- is the cursor, then you probably should use > >> `senator-complete-symbol', because there is nothing to be 'smart' > >> about. It's just some basic global symbol that needs matching. > >> > >> If you have this however: > >> > >> int myfun() > >> { > >> T_toto var; > >> > >> var.t-!- > >> > >> Then you can use `semantic-ia-*' or other 'analyzer' type > >> completion because there is a distinct context that needs to be > >> expanding that the global symbol completer cannot know about. > >> > >> Ideally, these two concepts would be merged, but I just haven't > >> gotten around to that yet. > >> > >> I put a small change into semantic-ia.el (cvs version 1.10) to do > >> this for `semantic-ia-complete-symbol', but it will not translate > >> into smarts for the other completion routines. > >> > >> Eric > >> > > > >Ok I'm beginning to understand the logic behind. The patch you > >applied works, no problem. > >Ideally could you put it also in 'semantic-ia-complete-symbol-menu' > >to call 'senator-completion-menu-popup' when it doesn't find > >anything ? > [ ... ] > > Give it a try. ;) > Well I for sure can try ! ;-) But as I told you I'm a real beginner in Elisp... I've spent 2 hours trying to correct the EDE code of cedet to correctly display the menu for Xemacs, but haven't managed to even understand the code. This one may look easier though... Thanks, |
From: Eric M. L. <er...@si...> - 2005-10-25 03:00:26
|
>>> Nicolas Pernetty <nic...@ya...> seems to think that: >> >> >2) if I type 'semantic-ia-complete-symbol-menu', a popup menu >> >> >appears and when I click on the symbols, result is correct >> >> >('var.tata' or 'var.titi') BUT if the completion is unique (for >> >> >instance if I type 'var.ti') , I got an error : >> >> >> >> I fixed this with CVS version 1.9 of semantic-ia.el. >> > >> >Ok I've just tried and it doesn't seems to work (malformed list...), >> >here is the stacktrace : >> > >> ># bind (standard-output stack-trace-on-signal debug-on-signal >> >stack-trace-on-error debug-on-error) >> > delq(nil [("titi" variable (:type "int") (reparse-symbol >> > classsubparts) [36 45])]) # bind (list title) >> > ad-Orig-imenu--create-menu-1("Completions" [("titi" variable >> > (:type "int") (reparse-symbol classsubparts) [36 45])]) (setq >> > ad-return-value (ad-Orig-imenu--create-menu-1 title list)) (if (and >> > (null list) (not ...)) (setq ad-return-value "-") (setq >> > ad-return-value (ad-Orig-imenu--create-menu-1 title list))) >> [ ... ] >> >> Is this XEmacs? I couldn't get a failure in Emacs 22.0.whatever > >Well I've just tried again with Xemacs, and this time activate 'debug >on error', same error but with this you may have more information : > >Debugger entered--Lisp error: (malformed-list [("titi" variable (:type "int") (reparse-symbol classsubparts) [36 45])]) > delq(nil [("titi" variable (:type "int") (reparse-symbol classsubparts) [36 45])]) > ad-Orig-imenu--create-menu-1("Completions" [("titi" variable (:type "int") (reparse-symbol classsubparts) [36 45])]) > (setq ad-return-value (ad-Orig-imenu--create-menu-1 title list)) > (if (and (null list) (not ...)) (setq ad-return-value "-") (setq ad-return-value (ad-Orig-imenu--create-menu-1 title list))) > (let (ad-return-value) (if (and ... ...) (setq ad-return-value "-") (setq ad-return-value ...)) ad-return-value) > imenu--create-menu-1("Completions" [("titi" variable (:type "int") (reparse-symbol classsubparts) [36 45])]) > imenu--mouse-menu((("titi : int" . [...])) #<buttondown-event button3> "Completions") > (let ((ans ...)) (when ans (if ... ...) (delete-region ... ...) (semantic-ia-insert-tag ans))) > (let* ((a ...) (syms ...) (pre ...)) (if (not syms) (error "No completions available")) (let (...) (when ans ... ... ...))) > semantic-ia-complete-symbol-menu(148) > call-interactively(semantic-ia-complete-symbol-menu) > command-execute(semantic-ia-complete-symbol-menu t) > execute-extended-command(nil) > call-interactively(execute-extended-command) > >Maybe I can do something to help you ? >Add a print in the middle of the code for instance ? (I'm a real >beginner in Elisp, so I couldn't figure it by myself...) I looks like things are getting tied up in semantic-imenu.el around line 55. Perhaps David (who wrote that bit) has a suggestion? [ ... ] >> >> >a) I've read that there is some kind of auto checking while >> >> >typing, resulting in underlining (color ?) what the parser doesn't >> >> >understand. I've tried semantic-complete-analyze-inline ('inline >> >> >completion not needed') and semantic-show-unmatched-syntax-mode >> >> >(everything I type is in inverse video for 2 seconds, then go back >> >> >to normal, even incorrect lines, for instance with mismatch >> >> >parenthesis). Have I missed something ? >> >> >> >> The mode is `semantic-show-unmatched-syntax-mode', but you >> >> described `semantic-highlight-edits-mode'. >> >> >> >> Unmatched syntax mode for C will not detect errors inside the body >> >> of a function because function bodies are not (yet) parsed. >> > >> >Can you described an example where we should have something >> >underlined ? Whatever I type, it doesn't change at all... >> >> If semantic-show-unmatched-syntax-mode is on, then something like >> this: >> >> int int int main() >> { >> } >> >> would underline some 'int's, but: >> >> int main() >> { >> int int int i; >> >> } >> >> would not. > >It doesn't work... Nothing happened at all, even if it's written >'show-unmatched-syntax minor mode is enabled' Use M-x list-faces-display (or the XEmacs equivalent) and make sure that the face `semantic-unmatched-syntax-face' is visibly different from the default. [ ... ] Good Luck Eric -- Eric Ludlam: za...@gn..., er...@si... Home: http://www.ludlam.net Siege: www.siege-engine.com Emacs: http://cedet.sourceforge.net GNU: www.gnu.org |