Thread: [CEDET-devel] Semantic support for PicoLisp
Brought to you by:
zappo
From: Henrik S. <hsa...@gm...> - 2011-06-04 14:40:49
|
Hi All. I am "successfully" using CEDET with Clojure, successfully in the way that if I open a Clojure file I get the function list for it in a ECB function/method buffer so I can easily browse to any given function as well as see which functions are defined. I have no idea how this works since I can't find any Clojure lexers/parsers in the semantic/bovine/wisent folders. Anyway, this code browsing feature is what I'm looking for but for PicoLisp ( http://picolisp.com ) too. There already is a major mode for picolisp which seems to be working fine with regards to the instructions here: http://cedet.sourceforge.net/addlang.shtml in the sense that it seems to be doing all that is required there. Then I created picolisp.by and semantic-picolisp.el (attached), I simply based them on scheme.by and semantic-scm.el as I don't know anything about these things. These files generated the attached semantic-picolisp-by.el file. Firing up emacs and editing a file will however not display any defined functions in the method buffer. When i run semantic-test-all-format-tag-functions I get what you see in the attached screenshot. I run it when I have the attached simple.l open. Any ideas? It's a simple lisp we're talking about here so maybe there's some shortcut that will make the function buffer work properly without launching a completely new parser (thinking about why it works with clojure despite there not being any dedicated parser...) Thanks in advance! /Henrik Sarvell |
From: Eric M. L. <eri...@gm...> - 2011-06-14 11:33:09
|
Hi Henrik, I don't know much about picolisp, but if it is similar to Emacs Lisp and common Lisp, then you can probably do the same thing in semantic-el.el, and at the very end of that file, add a new hook similar to the one that is there for common lisp. If that works, then you are in good shape. As for the error, I think semantic-scm may have not been updated for the new tag formatting functions. Here is a revised version: (define-mode-local-override semantic-format-tag-prototype scheme-mode (tag &optional parent color) "Return a prototype for the Emacs Lisp nonterminal TAG." (let* ((tok (semantic-tag-class tag)) (args (semantic-tag-components tag)) ) (if (eq tok 'function) (concat (semantic-tag-name tag) " (" (mapconcat (lambda (a) a) args " ") ")") (semantic-format-tag-prototype-default tag parent color)))) I'd try just using the regular lisp parser first, which should be ok so long as the lexical syntax is the same as Emacs Lisp. Eric On 06/04/2011 10:40 AM, Henrik Sarvell wrote: > Hi All. > > I am "successfully" using CEDET with Clojure, successfully in the way > that if I open a Clojure file I get the function list for it in a ECB > function/method buffer so I can easily browse to any given function as > well as see which functions are defined. > > I have no idea how this works since I can't find any Clojure > lexers/parsers in the semantic/bovine/wisent folders. > > Anyway, this code browsing feature is what I'm looking for but for > PicoLisp ( http://picolisp.com ) too. > > There already is a major mode for picolisp which seems to be working > fine with regards to the instructions here: > http://cedet.sourceforge.net/addlang.shtml in the sense that it seems > to be doing all that is required there. > > Then I created picolisp.by and semantic-picolisp.el (attached), I > simply based them on scheme.by and semantic-scm.el as I don't know > anything about these things. > > These files generated the attached semantic-picolisp-by.el file. > > Firing up emacs and editing a file will however not display any > defined functions in the method buffer. > > When i run semantic-test-all-format-tag-functions I get what you see > in the attached screenshot. > > I run it when I have the attached simple.l open. > > Any ideas? It's a simple lisp we're talking about here so maybe > there's some shortcut that will make the function buffer work properly > without launching a completely new parser (thinking about why it works > with clojure despite there not being any dedicated parser...) > > Thanks in advance! > > /Henrik Sarvell > > > > Ozs7IHBpY29saXNwLmJ5IC0tIFBpY29MaXNwIEJORiBsYW5ndWFnZSBzcGVjaWZpY2F0aW9uCgol > cGFja2FnZSBzZW1hbnRpYy1waWNvbGlzcC1ieQoKJWxhbmd1YWdlbW9kZSAgcGljb2xpc3AtbW9k > ZQolc3RhcnQgICAgICAgICBwaWNvbGlzcAoKJXRva2VuIERFRklORSAgICAgICAgImRlIgoKJXB1 > dCBERUZJTkUgICAgICAgIHN1bW1hcnkgIkZ1bmN0aW9uOiAoZGUgc3ltYm9sIGV4cHJlc3Npb24p > IgoKJXRva2VuIDxvcGVuLXBhcmVuPiBPUEVOUEFSRU4gIigiCiV0b2tlbiA8Y2xvc2UtcGFyZW4+ > IENMT1NFUEFSRU4gIikiCgolJQoKcGljb2xpc3AgOiBzZW1hbnRpYy1saXN0CgkgKEVYUEFORCAk > MSBwaWNvbGlzcC1saXN0KQogICAgICAgOwoKcGljb2xpc3AtbGlzdCA6IE9QRU5QQVJFTiBwaWNv > bGlzcC1pbi1saXN0IENMT1NFUEFSRU4KCSAgICAgICggLCQyICkKCSAgICA7CgpwaWNvbGlzcC1p > bi1saXN0OiBERUZJTkUgc3ltYm9sIGV4cHJlc3Npb24KCQkoVkFSSUFCTEUtVEFHICQyIG5pbCAk > MyApCgkgICAgICB8IERFRklORSBuYW1lLWFyZ3Mgc2VxdWVuY2UKCQkoQ09ERS1UQUcgJDEgbmls > KQoJICAgICAgOwoKbmFtZS1hcmdzOiBzZW1hbnRpYy1saXN0CgkgICAoRVhQQU5EICQxIG5hbWUt > YXJnLWV4cGFuZCkKCSA7CgpuYW1lLWFyZy1leHBhbmQgOiBvcGVuLXBhcmVuIG5hbWUtYXJnLWV4 > cGFuZAoJCSAgKCAsJDIgKQoJCXwgc3ltYm9sIG5hbWUtYXJnLWV4cGFuZAoJCSAgKCAsKGNvbnMg > JDEgLCQyKSApCgkJfCA7OyBFTVBUWQoJCSAgKCAgKQoJCTsKCm9wdC1kb2MgOiBzdHJpbmcKCXwg > OzsgRU1QVFkKCTsKCnNlcXVlbmNlIDogZXhwcmVzc2lvbiBzZXF1ZW5jZQogICAgICAgICB8IGV4 > cHJlc3Npb24KICAgICAgICAgOwoKZXhwcmVzc2lvbiA6IHN5bWJvbAoJICAgfCBzZW1hbnRpYy1s > aXN0CgkgICB8IHN0cmluZwoJICAgfCBudW1iZXIKCSAgIDsKCjs7OyBwaWNvbGlzcC5ieSBlbmRz > IGhlcmUK > > > > CihkZSBUZXN0MSAoKSAKICAocHJpbnQgIlRlc3QxIikpCiAgCihkZSBUZXN0MSAoVmFyKSAKICAo > cHJpbnQgIlRoZSB2YXI6ICIgVmFyKSkK > > > > ------------------------------------------------------------------------------ > Simplify data backup and recovery for your virtual environment with vRanger. > Installation's a snap, and flexible recovery options mean your data is safe, > secure and there when you need it. Discover what all the cheering's about. > Get your free trial download today. > http://p.sf.net/sfu/quest-dev2dev2 > > > > _______________________________________________ > Cedet-devel mailing list > Ced...@li... > https://lists.sourceforge.net/lists/listinfo/cedet-devel |
From: Henrik S. <hsa...@gm...> - 2011-06-14 12:11:33
|
Thanks for the help Eric. It's funny, just after posting to the list I tried copying semantic-el.el to semantic-picolisp.el and changing it as required to work for PicoLisp and that did the trick, more here: http://www.prodevtips.com/2011/06/05/ecb-method-browsing-for-picolisp/ Probably not the cleanest solution but it works. On Tue, Jun 14, 2011 at 6:33 PM, Eric M. Ludlam <eri...@gm...>wrote: > Hi Henrik, > > I don't know much about picolisp, but if it is similar to Emacs Lisp and > common Lisp, then you can probably do the same thing in semantic-el.el, and > at the very end of that file, add a new hook similar to the one that is > there for common lisp. > > If that works, then you are in good shape. > > As for the error, I think semantic-scm may have not been updated for the > new tag formatting functions. Here is a revised version: > > (define-mode-local-override semantic-format-tag-prototype scheme-mode (tag > &optional parent color) > "Return a prototype for the Emacs Lisp nonterminal TAG." > (let* ((tok (semantic-tag-class tag)) > (args (semantic-tag-components tag)) > ) > (if (eq tok 'function) > (concat (semantic-tag-name tag) " (" > (mapconcat (lambda (a) a) args " ") > ")") > (semantic-format-tag-prototype-default tag parent color)))) > > I'd try just using the regular lisp parser first, which should be ok so > long as the lexical syntax is the same as Emacs Lisp. > > Eric > > > On 06/04/2011 10:40 AM, Henrik Sarvell wrote: > >> Hi All. >> >> I am "successfully" using CEDET with Clojure, successfully in the way >> that if I open a Clojure file I get the function list for it in a ECB >> function/method buffer so I can easily browse to any given function as >> well as see which functions are defined. >> >> I have no idea how this works since I can't find any Clojure >> lexers/parsers in the semantic/bovine/wisent folders. >> >> Anyway, this code browsing feature is what I'm looking for but for >> PicoLisp ( http://picolisp.com ) too. >> >> There already is a major mode for picolisp which seems to be working >> fine with regards to the instructions here: >> http://cedet.sourceforge.net/addlang.shtml in the sense that it seems >> to be doing all that is required there. >> >> Then I created picolisp.by and semantic-picolisp.el (attached), I >> simply based them on scheme.by and semantic-scm.el as I don't know >> anything about these things. >> >> These files generated the attached semantic-picolisp-by.el file. >> >> Firing up emacs and editing a file will however not display any >> defined functions in the method buffer. >> >> When i run semantic-test-all-format-tag-functions I get what you see >> in the attached screenshot. >> >> I run it when I have the attached simple.l open. >> >> Any ideas? It's a simple lisp we're talking about here so maybe >> there's some shortcut that will make the function buffer work properly >> without launching a completely new parser (thinking about why it works >> with clojure despite there not being any dedicated parser...) >> >> Thanks in advance! >> >> /Henrik Sarvell >> >> >> >> >> Ozs7IHBpY29saXNwLmJ5IC0tIFBpY29MaXNwIEJORiBsYW5ndWFnZSBzcGVjaWZpY2F0aW9uCgol >> >> cGFja2FnZSBzZW1hbnRpYy1waWNvbGlzcC1ieQoKJWxhbmd1YWdlbW9kZSAgcGljb2xpc3AtbW9k >> >> ZQolc3RhcnQgICAgICAgICBwaWNvbGlzcAoKJXRva2VuIERFRklORSAgICAgICAgImRlIgoKJXB1 >> >> dCBERUZJTkUgICAgICAgIHN1bW1hcnkgIkZ1bmN0aW9uOiAoZGUgc3ltYm9sIGV4cHJlc3Npb24p >> >> IgoKJXRva2VuIDxvcGVuLXBhcmVuPiBPUEVOUEFSRU4gIigiCiV0b2tlbiA8Y2xvc2UtcGFyZW4+ >> >> IENMT1NFUEFSRU4gIikiCgolJQoKcGljb2xpc3AgOiBzZW1hbnRpYy1saXN0CgkgKEVYUEFORCAk >> >> MSBwaWNvbGlzcC1saXN0KQogICAgICAgOwoKcGljb2xpc3AtbGlzdCA6IE9QRU5QQVJFTiBwaWNv >> >> bGlzcC1pbi1saXN0IENMT1NFUEFSRU4KCSAgICAgICggLCQyICkKCSAgICA7CgpwaWNvbGlzcC1p >> >> bi1saXN0OiBERUZJTkUgc3ltYm9sIGV4cHJlc3Npb24KCQkoVkFSSUFCTEUtVEFHICQyIG5pbCAk >> >> MyApCgkgICAgICB8IERFRklORSBuYW1lLWFyZ3Mgc2VxdWVuY2UKCQkoQ09ERS1UQUcgJDEgbmls >> >> KQoJICAgICAgOwoKbmFtZS1hcmdzOiBzZW1hbnRpYy1saXN0CgkgICAoRVhQQU5EICQxIG5hbWUt >> >> YXJnLWV4cGFuZCkKCSA7CgpuYW1lLWFyZy1leHBhbmQgOiBvcGVuLXBhcmVuIG5hbWUtYXJnLWV4 >> >> cGFuZAoJCSAgKCAsJDIgKQoJCXwgc3ltYm9sIG5hbWUtYXJnLWV4cGFuZAoJCSAgKCAsKGNvbnMg >> >> JDEgLCQyKSApCgkJfCA7OyBFTVBUWQoJCSAgKCAgKQoJCTsKCm9wdC1kb2MgOiBzdHJpbmcKCXwg >> >> OzsgRU1QVFkKCTsKCnNlcXVlbmNlIDogZXhwcmVzc2lvbiBzZXF1ZW5jZQogICAgICAgICB8IGV4 >> >> cHJlc3Npb24KICAgICAgICAgOwoKZXhwcmVzc2lvbiA6IHN5bWJvbAoJICAgfCBzZW1hbnRpYy1s >> >> aXN0CgkgICB8IHN0cmluZwoJICAgfCBudW1iZXIKCSAgIDsKCjs7OyBwaWNvbGlzcC5ieSBlbmRz >> IGhlcmUK >> >> >> >> >> CihkZSBUZXN0MSAoKSAKICAocHJpbnQgIlRlc3QxIikpCiAgCihkZSBUZXN0MSAoVmFyKSAKICAo >> cHJpbnQgIlRoZSB2YXI6ICIgVmFyKSkK >> >> >> >> >> ------------------------------------------------------------------------------ >> Simplify data backup and recovery for your virtual environment with >> vRanger. >> Installation's a snap, and flexible recovery options mean your data is >> safe, >> secure and there when you need it. Discover what all the cheering's about. >> Get your free trial download today. >> http://p.sf.net/sfu/quest-dev2dev2 >> >> >> >> _______________________________________________ >> Cedet-devel mailing list >> Ced...@li... >> https://lists.sourceforge.net/lists/listinfo/cedet-devel >> > |
From: Eric M. L. <eri...@gm...> - 2011-06-15 02:05:02
|
Hi, I'm glad you found a solution. I think all you really need to do is add: (add-hook 'picolisp-mode-hook 'semantic-default-elisp-setup) to either your .emacs, or into semantic-el.el. We can probably add the picolisp hook to make it a default if you find that it works well for you. Eric On 06/14/2011 08:11 AM, Henrik Sarvell wrote: > Thanks for the help Eric. > > It's funny, just after posting to the list I tried copying > semantic-el.el to semantic-picolisp.el and changing it as required to > work for PicoLisp and that did the trick, more here: > http://www.prodevtips.com/2011/06/05/ecb-method-browsing-for-picolisp/ > > Probably not the cleanest solution but it works. > > > On Tue, Jun 14, 2011 at 6:33 PM, Eric M. Ludlam <eri...@gm... > <mailto:eri...@gm...>> wrote: > > Hi Henrik, > > I don't know much about picolisp, but if it is similar to Emacs > Lisp and common Lisp, then you can probably do the same thing in > semantic-el.el, and at the very end of that file, add a new hook > similar to the one that is there for common lisp. > > If that works, then you are in good shape. > > As for the error, I think semantic-scm may have not been updated > for the new tag formatting functions. Here is a revised version: > > (define-mode-local-override semantic-format-tag-prototype > scheme-mode (tag &optional parent color) > "Return a prototype for the Emacs Lisp nonterminal TAG." > (let* ((tok (semantic-tag-class tag)) > (args (semantic-tag-components tag)) > ) > (if (eq tok 'function) > (concat (semantic-tag-name tag) " (" > (mapconcat (lambda (a) a) args " ") > ")") > (semantic-format-tag-prototype-default tag parent color)))) > > I'd try just using the regular lisp parser first, which should be ok > so long as the lexical syntax is the same as Emacs Lisp. > > Eric > > > On 06/04/2011 10:40 AM, Henrik Sarvell wrote: > > Hi All. > > I am "successfully" using CEDET with Clojure, successfully in > the way > that if I open a Clojure file I get the function list for it in > a ECB > function/method buffer so I can easily browse to any given > function as > well as see which functions are defined. > > I have no idea how this works since I can't find any Clojure > lexers/parsers in the semantic/bovine/wisent folders. > > Anyway, this code browsing feature is what I'm looking for but for > PicoLisp ( http://picolisp.com ) too. > > There already is a major mode for picolisp which seems to be working > fine with regards to the instructions here: > http://cedet.sourceforge.net/addlang.shtml in the sense that it > seems > to be doing all that is required there. > > Then I created picolisp.by <http://picolisp.by> and > semantic-picolisp.el (attached), I > simply based them on scheme.by <http://scheme.by> and > semantic-scm.el as I don't know > anything about these things. > > These files generated the attached semantic-picolisp-by.el file. > > Firing up emacs and editing a file will however not display any > defined functions in the method buffer. > > When i run semantic-test-all-format-tag-functions I get what you see > in the attached screenshot. > > I run it when I have the attached simple.l open. > > Any ideas? It's a simple lisp we're talking about here so maybe > there's some shortcut that will make the function buffer work > properly > without launching a completely new parser (thinking about why it > works > with clojure despite there not being any dedicated parser...) > > Thanks in advance! > > /Henrik Sarvell > > > > Ozs7IHBpY29saXNwLmJ5IC0tIFBpY29MaXNwIEJORiBsYW5ndWFnZSBzcGVjaWZpY2F0aW9uCgol > cGFja2FnZSBzZW1hbnRpYy1waWNvbGlzcC1ieQoKJWxhbmd1YWdlbW9kZSAgcGljb2xpc3AtbW9k > ZQolc3RhcnQgICAgICAgICBwaWNvbGlzcAoKJXRva2VuIERFRklORSAgICAgICAgImRlIgoKJXB1 > dCBERUZJTkUgICAgICAgIHN1bW1hcnkgIkZ1bmN0aW9uOiAoZGUgc3ltYm9sIGV4cHJlc3Npb24p > IgoKJXRva2VuIDxvcGVuLXBhcmVuPiBPUEVOUEFSRU4gIigiCiV0b2tlbiA8Y2xvc2UtcGFyZW4+ > IENMT1NFUEFSRU4gIikiCgolJQoKcGljb2xpc3AgOiBzZW1hbnRpYy1saXN0CgkgKEVYUEFORCAk > MSBwaWNvbGlzcC1saXN0KQogICAgICAgOwoKcGljb2xpc3AtbGlzdCA6IE9QRU5QQVJFTiBwaWNv > bGlzcC1pbi1saXN0IENMT1NFUEFSRU4KCSAgICAgICggLCQyICkKCSAgICA7CgpwaWNvbGlzcC1p > bi1saXN0OiBERUZJTkUgc3ltYm9sIGV4cHJlc3Npb24KCQkoVkFSSUFCTEUtVEFHICQyIG5pbCAk > MyApCgkgICAgICB8IERFRklORSBuYW1lLWFyZ3Mgc2VxdWVuY2UKCQkoQ09ERS1UQUcgJDEgbmls > KQoJICAgICAgOwoKbmFtZS1hcmdzOiBzZW1hbnRpYy1saXN0CgkgICAoRVhQQU5EICQxIG5hbWUt > YXJnLWV4cGFuZCkKCSA7CgpuYW1lLWFyZy1leHBhbmQgOiBvcGVuLXBhcmVuIG5hbWUtYXJnLWV4 > cGFuZAoJCSAgKCAsJDIgKQoJCXwgc3ltYm9sIG5hbWUtYXJnLWV4cGFuZAoJCSAgKCAsKGNvbnMg > JDEgLCQyKSApCgkJfCA7OyBFTVBUWQoJCSAgKCAgKQoJCTsKCm9wdC1kb2MgOiBzdHJpbmcKCXwg > OzsgRU1QVFkKCTsKCnNlcXVlbmNlIDogZXhwcmVzc2lvbiBzZXF1ZW5jZQogICAgICAgICB8IGV4 > cHJlc3Npb24KICAgICAgICAgOwoKZXhwcmVzc2lvbiA6IHN5bWJvbAoJICAgfCBzZW1hbnRpYy1s > aXN0CgkgICB8IHN0cmluZwoJICAgfCBudW1iZXIKCSAgIDsKCjs7OyBwaWNvbGlzcC5ieSBlbmRz > IGhlcmUK > > > > CihkZSBUZXN0MSAoKSAKICAocHJpbnQgIlRlc3QxIikpCiAgCihkZSBUZXN0MSAoVmFyKSAKICAo > cHJpbnQgIlRoZSB2YXI6ICIgVmFyKSkK > > > > ------------------------------------------------------------------------------ > Simplify data backup and recovery for your virtual environment > with vRanger. > Installation's a snap, and flexible recovery options mean your > data is safe, > secure and there when you need it. Discover what all the > cheering's about. > Get your free trial download today. > http://p.sf.net/sfu/quest-dev2dev2 > > > > _______________________________________________ > Cedet-devel mailing list > Ced...@li... > <mailto:Ced...@li...> > https://lists.sourceforge.net/lists/listinfo/cedet-devel > > > > > ------------------------------------------------------------------------------ > EditLive Enterprise is the world's most technically advanced content > authoring tool. Experience the power of Track Changes, Inline Image > Editing and ensure content is compliant with Accessibility Checking. > http://p.sf.net/sfu/ephox-dev2dev > > > > _______________________________________________ > Cedet-devel mailing list > Ced...@li... > https://lists.sourceforge.net/lists/listinfo/cedet-devel |
From: Henrik S. <hsa...@gm...> - 2011-06-15 05:58:49
|
You mean you think it would work with just that line, i.e. the semantic-picolisp.el thing I created is overkill? I suppose it would be if it wasn't for the fact that there are significant differences in syntax between elisp and picolisp. For instance, defining a function is done with de in picolisp and a class method is defined with dm. Or did I misunderstand you? On Wed, Jun 15, 2011 at 9:04 AM, Eric M. Ludlam <eri...@gm...>wrote: > Hi, > > I'm glad you found a solution. I think all you really need to do is add: > > (add-hook 'picolisp-mode-hook 'semantic-default-elisp-setup) > > to either your .emacs, or into semantic-el.el. > > We can probably add the picolisp hook to make it a default if you find that > it works well for you. > > Eric > > > On 06/14/2011 08:11 AM, Henrik Sarvell wrote: > >> Thanks for the help Eric. >> >> It's funny, just after posting to the list I tried copying >> semantic-el.el to semantic-picolisp.el and changing it as required to >> work for PicoLisp and that did the trick, more here: >> http://www.prodevtips.com/2011/06/05/ecb-method-browsing-for-picolisp/ >> >> Probably not the cleanest solution but it works. >> >> >> On Tue, Jun 14, 2011 at 6:33 PM, Eric M. Ludlam <eri...@gm... >> <mailto:eri...@gm...>> wrote: >> >> Hi Henrik, >> >> I don't know much about picolisp, but if it is similar to Emacs >> Lisp and common Lisp, then you can probably do the same thing in >> semantic-el.el, and at the very end of that file, add a new hook >> similar to the one that is there for common lisp. >> >> If that works, then you are in good shape. >> >> As for the error, I think semantic-scm may have not been updated >> for the new tag formatting functions. Here is a revised version: >> >> (define-mode-local-override semantic-format-tag-prototype >> scheme-mode (tag &optional parent color) >> "Return a prototype for the Emacs Lisp nonterminal TAG." >> (let* ((tok (semantic-tag-class tag)) >> (args (semantic-tag-components tag)) >> ) >> (if (eq tok 'function) >> (concat (semantic-tag-name tag) " (" >> (mapconcat (lambda (a) a) args " ") >> ")") >> (semantic-format-tag-prototype-default tag parent color)))) >> >> I'd try just using the regular lisp parser first, which should be ok >> so long as the lexical syntax is the same as Emacs Lisp. >> >> Eric >> >> >> On 06/04/2011 10:40 AM, Henrik Sarvell wrote: >> >> Hi All. >> >> I am "successfully" using CEDET with Clojure, successfully in >> the way >> that if I open a Clojure file I get the function list for it in >> a ECB >> function/method buffer so I can easily browse to any given >> function as >> well as see which functions are defined. >> >> I have no idea how this works since I can't find any Clojure >> lexers/parsers in the semantic/bovine/wisent folders. >> >> Anyway, this code browsing feature is what I'm looking for but for >> PicoLisp ( http://picolisp.com ) too. >> >> There already is a major mode for picolisp which seems to be >> working >> fine with regards to the instructions here: >> http://cedet.sourceforge.net/addlang.shtml in the sense that it >> seems >> to be doing all that is required there. >> >> Then I created picolisp.by <http://picolisp.by> and >> >> semantic-picolisp.el (attached), I >> simply based them on scheme.by <http://scheme.by> and >> >> semantic-scm.el as I don't know >> anything about these things. >> >> These files generated the attached semantic-picolisp-by.el file. >> >> Firing up emacs and editing a file will however not display any >> defined functions in the method buffer. >> >> When i run semantic-test-all-format-tag-functions I get what you >> see >> in the attached screenshot. >> >> I run it when I have the attached simple.l open. >> >> Any ideas? It's a simple lisp we're talking about here so maybe >> there's some shortcut that will make the function buffer work >> properly >> without launching a completely new parser (thinking about why it >> works >> with clojure despite there not being any dedicated parser...) >> >> Thanks in advance! >> >> /Henrik Sarvell >> >> >> >> >> Ozs7IHBpY29saXNwLmJ5IC0tIFBpY29MaXNwIEJORiBsYW5ndWFnZSBzcGVjaWZpY2F0aW9uCgol >> >> cGFja2FnZSBzZW1hbnRpYy1waWNvbGlzcC1ieQoKJWxhbmd1YWdlbW9kZSAgcGljb2xpc3AtbW9k >> >> ZQolc3RhcnQgICAgICAgICBwaWNvbGlzcAoKJXRva2VuIERFRklORSAgICAgICAgImRlIgoKJXB1 >> >> dCBERUZJTkUgICAgICAgIHN1bW1hcnkgIkZ1bmN0aW9uOiAoZGUgc3ltYm9sIGV4cHJlc3Npb24p >> >> IgoKJXRva2VuIDxvcGVuLXBhcmVuPiBPUEVOUEFSRU4gIigiCiV0b2tlbiA8Y2xvc2UtcGFyZW4+ >> >> IENMT1NFUEFSRU4gIikiCgolJQoKcGljb2xpc3AgOiBzZW1hbnRpYy1saXN0CgkgKEVYUEFORCAk >> >> MSBwaWNvbGlzcC1saXN0KQogICAgICAgOwoKcGljb2xpc3AtbGlzdCA6IE9QRU5QQVJFTiBwaWNv >> >> bGlzcC1pbi1saXN0IENMT1NFUEFSRU4KCSAgICAgICggLCQyICkKCSAgICA7CgpwaWNvbGlzcC1p >> >> bi1saXN0OiBERUZJTkUgc3ltYm9sIGV4cHJlc3Npb24KCQkoVkFSSUFCTEUtVEFHICQyIG5pbCAk >> >> MyApCgkgICAgICB8IERFRklORSBuYW1lLWFyZ3Mgc2VxdWVuY2UKCQkoQ09ERS1UQUcgJDEgbmls >> >> KQoJICAgICAgOwoKbmFtZS1hcmdzOiBzZW1hbnRpYy1saXN0CgkgICAoRVhQQU5EICQxIG5hbWUt >> >> YXJnLWV4cGFuZCkKCSA7CgpuYW1lLWFyZy1leHBhbmQgOiBvcGVuLXBhcmVuIG5hbWUtYXJnLWV4 >> >> cGFuZAoJCSAgKCAsJDIgKQoJCXwgc3ltYm9sIG5hbWUtYXJnLWV4cGFuZAoJCSAgKCAsKGNvbnMg >> >> JDEgLCQyKSApCgkJfCA7OyBFTVBUWQoJCSAgKCAgKQoJCTsKCm9wdC1kb2MgOiBzdHJpbmcKCXwg >> >> OzsgRU1QVFkKCTsKCnNlcXVlbmNlIDogZXhwcmVzc2lvbiBzZXF1ZW5jZQogICAgICAgICB8IGV4 >> >> cHJlc3Npb24KICAgICAgICAgOwoKZXhwcmVzc2lvbiA6IHN5bWJvbAoJICAgfCBzZW1hbnRpYy1s >> >> aXN0CgkgICB8IHN0cmluZwoJICAgfCBudW1iZXIKCSAgIDsKCjs7OyBwaWNvbGlzcC5ieSBlbmRz >> IGhlcmUK >> >> >> >> >> CihkZSBUZXN0MSAoKSAKICAocHJpbnQgIlRlc3QxIikpCiAgCihkZSBUZXN0MSAoVmFyKSAKICAo >> cHJpbnQgIlRoZSB2YXI6ICIgVmFyKSkK >> >> >> >> >> ------------------------------------------------------------------------------ >> Simplify data backup and recovery for your virtual environment >> with vRanger. >> Installation's a snap, and flexible recovery options mean your >> data is safe, >> secure and there when you need it. Discover what all the >> cheering's about. >> Get your free trial download today. >> http://p.sf.net/sfu/quest-dev2dev2 >> >> >> >> _______________________________________________ >> Cedet-devel mailing list >> Ced...@li... >> <mailto:Ced...@li...> >> >> https://lists.sourceforge.net/lists/listinfo/cedet-devel >> >> >> >> >> >> ------------------------------------------------------------------------------ >> EditLive Enterprise is the world's most technically advanced content >> authoring tool. Experience the power of Track Changes, Inline Image >> Editing and ensure content is compliant with Accessibility Checking. >> http://p.sf.net/sfu/ephox-dev2dev >> >> >> >> >> _______________________________________________ >> Cedet-devel mailing list >> Ced...@li... >> https://lists.sourceforge.net/lists/listinfo/cedet-devel >> > |
From: Henrik S. <hsa...@gm...> - 2011-06-20 06:54:15
|
Hi again, forget the earlier question, it just works which is great. Just one snag, PicoLisp uses # for commenting, not ;. In fact PicoLisp uses ; as a getter function to get values of object attributes. The problem is that as soon as a function contains ; it will disappear from the ECB list. I.e the following works and shows upp: (de Test1 (Obj) (print Obj)) But not this: (de Test2 (Obj) (print (; Obj name))) Commented lines are handled properly by picolisp-mode but in this case the semantic parser won't pick that up. Any ideas how I can remedy this? On Wed, Jun 15, 2011 at 9:04 AM, Eric M. Ludlam <eri...@gm...>wrote: > Hi, > > I'm glad you found a solution. I think all you really need to do is add: > > (add-hook 'picolisp-mode-hook 'semantic-default-elisp-setup) > > to either your .emacs, or into semantic-el.el. > > We can probably add the picolisp hook to make it a default if you find that > it works well for you. > > Eric > > > On 06/14/2011 08:11 AM, Henrik Sarvell wrote: > >> Thanks for the help Eric. >> >> It's funny, just after posting to the list I tried copying >> semantic-el.el to semantic-picolisp.el and changing it as required to >> work for PicoLisp and that did the trick, more here: >> http://www.prodevtips.com/**2011/06/05/ecb-method-** >> browsing-for-picolisp/<http://www.prodevtips.com/2011/06/05/ecb-method-browsing-for-picolisp/> >> >> Probably not the cleanest solution but it works. >> >> >> On Tue, Jun 14, 2011 at 6:33 PM, Eric M. Ludlam <eri...@gm... >> <mailto:eri...@gm...>> wrote: >> >> Hi Henrik, >> >> I don't know much about picolisp, but if it is similar to Emacs >> Lisp and common Lisp, then you can probably do the same thing in >> semantic-el.el, and at the very end of that file, add a new hook >> similar to the one that is there for common lisp. >> >> If that works, then you are in good shape. >> >> As for the error, I think semantic-scm may have not been updated >> for the new tag formatting functions. Here is a revised version: >> >> (define-mode-local-override semantic-format-tag-prototype >> scheme-mode (tag &optional parent color) >> "Return a prototype for the Emacs Lisp nonterminal TAG." >> (let* ((tok (semantic-tag-class tag)) >> (args (semantic-tag-components tag)) >> ) >> (if (eq tok 'function) >> (concat (semantic-tag-name tag) " (" >> (mapconcat (lambda (a) a) args " ") >> ")") >> (semantic-format-tag-**prototype-default tag parent color)))) >> >> I'd try just using the regular lisp parser first, which should be ok >> so long as the lexical syntax is the same as Emacs Lisp. >> >> Eric >> >> >> On 06/04/2011 10:40 AM, Henrik Sarvell wrote: >> >> Hi All. >> >> I am "successfully" using CEDET with Clojure, successfully in >> the way >> that if I open a Clojure file I get the function list for it in >> a ECB >> function/method buffer so I can easily browse to any given >> function as >> well as see which functions are defined. >> >> I have no idea how this works since I can't find any Clojure >> lexers/parsers in the semantic/bovine/wisent folders. >> >> Anyway, this code browsing feature is what I'm looking for but for >> PicoLisp ( http://picolisp.com ) too. >> >> There already is a major mode for picolisp which seems to be >> working >> fine with regards to the instructions here: >> http://cedet.sourceforge.net/**addlang.shtml<http://cedet.sourceforge.net/addlang.shtml>in the sense that it >> seems >> to be doing all that is required there. >> >> Then I created picolisp.by <http://picolisp.by> and >> >> semantic-picolisp.el (attached), I >> simply based them on scheme.by <http://scheme.by> and >> >> semantic-scm.el as I don't know >> anything about these things. >> >> These files generated the attached semantic-picolisp-by.el file. >> >> Firing up emacs and editing a file will however not display any >> defined functions in the method buffer. >> >> When i run semantic-test-all-format-tag-**functions I get what you >> see >> in the attached screenshot. >> >> I run it when I have the attached simple.l open. >> >> Any ideas? It's a simple lisp we're talking about here so maybe >> there's some shortcut that will make the function buffer work >> properly >> without launching a completely new parser (thinking about why it >> works >> with clojure despite there not being any dedicated parser...) >> >> Thanks in advance! >> >> /Henrik Sarvell >> >> >> >> Ozs7IHBpY29saXNwLmJ5IC0tIFBpY2**9MaXNwIEJORiBsYW5ndWFnZSBzcGVj** >> aWZpY2F0aW9uCgol >> cGFja2FnZSBzZW1hbnRpYy1waWNvbG**lzcC1ieQoKJWxhbmd1YWdlbW9kZSAg** >> cGljb2xpc3AtbW9k >> ZQolc3RhcnQgICAgICAgICBwaWNvbG**lzcAoKJXRva2VuIERFRklORSAgICAg** >> ICAgImRlIgoKJXB1 >> dCBERUZJTkUgICAgICAgIHN1bW1hcn**kgIkZ1bmN0aW9uOiAoZGUgc3ltYm9s** >> IGV4cHJlc3Npb24p >> IgoKJXRva2VuIDxvcGVuLXBhcmVuPi**BPUEVOUEFSRU4gIigiCiV0b2tlbiA8** >> Y2xvc2UtcGFyZW4+ >> IENMT1NFUEFSRU4gIikiCgolJQoKcG**ljb2xpc3AgOiBzZW1hbnRpYy1saXN0** >> CgkgKEVYUEFORCAk >> MSBwaWNvbGlzcC1saXN0KQogICAgIC**AgOwoKcGljb2xpc3AtbGlzdCA6IE9Q** >> RU5QQVJFTiBwaWNv >> bGlzcC1pbi1saXN0IENMT1NFUEFSRU**4KCSAgICAgICggLCQyICkKCSAgICA7** >> CgpwaWNvbGlzcC1p >> bi1saXN0OiBERUZJTkUgc3ltYm9sIG**V4cHJlc3Npb24KCQkoVkFSSUFCTEUt** >> VEFHICQyIG5pbCAk >> MyApCgkgICAgICB8IERFRklORSBuYW**1lLWFyZ3Mgc2VxdWVuY2UKCQkoQ09E** >> RS1UQUcgJDEgbmls >> KQoJICAgICAgOwoKbmFtZS1hcmdzOi**BzZW1hbnRpYy1saXN0CgkgICAoRVhQ** >> QU5EICQxIG5hbWUt >> YXJnLWV4cGFuZCkKCSA7CgpuYW1lLW**FyZy1leHBhbmQgOiBvcGVuLXBhcmVu** >> IG5hbWUtYXJnLWV4 >> cGFuZAoJCSAgKCAsJDIgKQoJCXwgc3**ltYm9sIG5hbWUtYXJnLWV4cGFuZAoJ** >> CSAgKCAsKGNvbnMg >> JDEgLCQyKSApCgkJfCA7OyBFTVBUWQ**oJCSAgKCAgKQoJCTsKCm9wdC1kb2Mg** >> OiBzdHJpbmcKCXwg >> OzsgRU1QVFkKCTsKCnNlcXVlbmNlID**ogZXhwcmVzc2lvbiBzZXF1ZW5jZQog** >> ICAgICAgICB8IGV4 >> cHJlc3Npb24KICAgICAgICAgOwoKZX**hwcmVzc2lvbiA6IHN5bWJvbAoJICAg** >> fCBzZW1hbnRpYy1s >> aXN0CgkgICB8IHN0cmluZwoJICAgfC**BudW1iZXIKCSAgIDsKCjs7OyBwaWNv** >> bGlzcC5ieSBlbmRz >> IGhlcmUK >> >> >> >> CihkZSBUZXN0MSAoKSAKICAocHJpbn**QgIlRlc3QxIikpCiAgCihkZSBUZXN0** >> MSAoVmFyKSAKICAo >> cHJpbnQgIlRoZSB2YXI6ICIgVmFyKS**kK >> >> >> >> ------------------------------**------------------------------** >> ------------------ >> Simplify data backup and recovery for your virtual environment >> with vRanger. >> Installation's a snap, and flexible recovery options mean your >> data is safe, >> secure and there when you need it. Discover what all the >> cheering's about. >> Get your free trial download today. >> http://p.sf.net/sfu/quest-**dev2dev2<http://p.sf.net/sfu/quest-dev2dev2> >> >> >> >> ______________________________**_________________ >> Cedet-devel mailing list >> Ced...@li...urceforge.**net<Ced...@li...> >> <mailto:Cedet-devel@lists.**sourceforge.net<Ced...@li...> >> > >> >> https://lists.sourceforge.net/**lists/listinfo/cedet-devel<https://lists.sourceforge.net/lists/listinfo/cedet-devel> >> >> >> >> >> ------------------------------**------------------------------** >> ------------------ >> EditLive Enterprise is the world's most technically advanced content >> authoring tool. Experience the power of Track Changes, Inline Image >> Editing and ensure content is compliant with Accessibility Checking. >> http://p.sf.net/sfu/ephox-**dev2dev <http://p.sf.net/sfu/ephox-dev2dev> >> >> >> >> >> ______________________________**_________________ >> Cedet-devel mailing list >> Ced...@li...urceforge.**net <Ced...@li...> >> https://lists.sourceforge.net/**lists/listinfo/cedet-devel<https://lists.sourceforge.net/lists/listinfo/cedet-devel> >> > |
From: Eric M. L. <eri...@gm...> - 2011-06-22 22:12:40
|
Hi, On 06/20/2011 02:54 AM, Henrik Sarvell wrote: > Hi again, forget the earlier question, it just works which is great. This now surprises me, since your last email about functions being created with 'de' instead of 'defun'. > Just one snag, PicoLisp uses # for commenting, not ;. > > In fact PicoLisp uses ; as a getter function to get values of object > attributes. > > The problem is that as soon as a function contains ; it will disappear > from the ECB list. > > I.e the following works and shows upp: > > (de Test1 (Obj) > (print Obj)) > > But not this: > > (de Test2 (Obj) > (print (; Obj name))) > > Commented lines are handled properly by picolisp-mode but in this case > the semantic parser won't pick that up. > > Any ideas how I can remedy this? This is because the elisp parser uses Emacs' 'read' function, which has ; built-in as a comment character. I'd assume that it is not possible to fix that state. That, combined with me not yet understanding why the elisp parser works makes me think your best bet is to start with the Scheme parser. That parser is quite simple (scheme.by) and could be updated for picolisp definition symbols. semantic-scm.el has customizations which will then fix the comment syntax by obeying the syntax table for picolisp. Eric |
From: Henrik S. <hsa...@gm...> - 2011-06-24 05:27:48
|
You ar correct Eric, sorry for the confusion, I had added your hook statement to my config but forgetting to delete the PicoLisp parser, after doing that it stopped working as you suspected. You posted a fix earlier that I used to replace the corresponding old code in my PicoLisp copy of semantic-scm.el, and it worked! I am now at the same place I was when using elisp as a template but with Scheme instead, the definitions are showing up properly except for functions containing semi-colons. Problem is of course that Scheme also uses ; for commenting (I suppose?) and I can't see anywhere in the Scheme files (scheme.by / semantic-scm.el) that this character is defined as being used for comments, so no easy fix, but now maybe it is possible to fix at least? I've also checked for instance make.by and semantic-make.el but couldn't see any comment handling there either. >From this I suppose you could infer that semantic somehow picks up stuff from the coding mode, in this case picolisp-mode which definitely handles # as comments with proper colors and all, however this is not happening in the PicoLisp case. On Thu, Jun 23, 2011 at 5:12 AM, Eric M. Ludlam <eri...@gm...>wrote: > Hi, > > > On 06/20/2011 02:54 AM, Henrik Sarvell wrote: > >> Hi again, forget the earlier question, it just works which is great. >> > > This now surprises me, since your last email about functions being created > with 'de' instead of 'defun'. > > > Just one snag, PicoLisp uses # for commenting, not ;. >> >> In fact PicoLisp uses ; as a getter function to get values of object >> attributes. >> >> The problem is that as soon as a function contains ; it will disappear >> from the ECB list. >> >> I.e the following works and shows upp: >> >> (de Test1 (Obj) >> (print Obj)) >> >> But not this: >> >> (de Test2 (Obj) >> (print (; Obj name))) >> >> Commented lines are handled properly by picolisp-mode but in this case >> the semantic parser won't pick that up. >> >> Any ideas how I can remedy this? >> > > This is because the elisp parser uses Emacs' 'read' function, which has ; > built-in as a comment character. I'd assume that it is not possible to fix > that state. > > That, combined with me not yet understanding why the elisp parser works > makes me think your best bet is to start with the Scheme parser. That > parser is quite simple (scheme.by) and could be updated for picolisp > definition symbols. semantic-scm.el has customizations which will then fix > the comment syntax by obeying the syntax table for picolisp. > > Eric > |
From: Henrik S. <hsa...@gm...> - 2011-06-24 09:35:41
|
Seems like we can forget what I said about the Scheme template in my last post. Methods probably showed in ECB due to some old caching. When I opened new files no methods showed until switched back to the elisp version/template. What I really would like is simply for all words that match "foo" in "(de foo " to show up in the method window. What is the easiest way to accomplish this? On Fri, Jun 24, 2011 at 12:27 PM, Henrik Sarvell <hsa...@gm...> wrote: > You ar correct Eric, sorry for the confusion, I had added your hook > statement to my config but forgetting to delete the PicoLisp parser, after > doing that it stopped working as you suspected. > > You posted a fix earlier that I used to replace the corresponding old code > in my PicoLisp copy of semantic-scm.el, and it worked! > > I am now at the same place I was when using elisp as a template but with > Scheme instead, the definitions are showing up properly except for functions > containing semi-colons. > > Problem is of course that Scheme also uses ; for commenting (I suppose?) > and I can't see anywhere in the Scheme files (scheme.by / semantic-scm.el) > that this character is defined as being used for comments, so no easy fix, > but now maybe it is possible to fix at least? > > I've also checked for instance make.by and semantic-make.el but couldn't > see any comment handling there either. > > From this I suppose you could infer that semantic somehow picks up stuff > from the coding mode, in this case picolisp-mode which definitely handles # > as comments with proper colors and all, however this is not happening in the > PicoLisp case. > > > > > On Thu, Jun 23, 2011 at 5:12 AM, Eric M. Ludlam <eri...@gm...>wrote: > >> Hi, >> >> >> On 06/20/2011 02:54 AM, Henrik Sarvell wrote: >> >>> Hi again, forget the earlier question, it just works which is great. >>> >> >> This now surprises me, since your last email about functions being created >> with 'de' instead of 'defun'. >> >> >> Just one snag, PicoLisp uses # for commenting, not ;. >>> >>> In fact PicoLisp uses ; as a getter function to get values of object >>> attributes. >>> >>> The problem is that as soon as a function contains ; it will disappear >>> from the ECB list. >>> >>> I.e the following works and shows upp: >>> >>> (de Test1 (Obj) >>> (print Obj)) >>> >>> But not this: >>> >>> (de Test2 (Obj) >>> (print (; Obj name))) >>> >>> Commented lines are handled properly by picolisp-mode but in this case >>> the semantic parser won't pick that up. >>> >>> Any ideas how I can remedy this? >>> >> >> This is because the elisp parser uses Emacs' 'read' function, which has ; >> built-in as a comment character. I'd assume that it is not possible to fix >> that state. >> >> That, combined with me not yet understanding why the elisp parser works >> makes me think your best bet is to start with the Scheme parser. That >> parser is quite simple (scheme.by) and could be updated for picolisp >> definition symbols. semantic-scm.el has customizations which will then fix >> the comment syntax by obeying the syntax table for picolisp. >> >> Eric >> > > |
From: Eric M. L. <eri...@gm...> - 2011-06-25 20:22:03
|
The correct way to do what you ask is to create a parser for picolisp. At this time, I think the scheme one is closest, but you (or someone) will need to understand some basics in Emacs Lisp and Semantic to convert something like Scheme over to pico lisp. To make the Scheme thing work you need scheme.by, and semantic-scm.el. In the picolisp version, look at the token DEFINE. change it to be "de", plus the same for the help. If there other such features, add those. Then look at scheme-in-list, and change any other syntax there. The syntax is in the semantic manual. At a most basic level: scheme-in-list: DEFINE symbol expression (VARIABLE-TAG $2 nil $3 ) ; where "scheme-in-list" is the name of a defined rule. DEFINE is a token, which is earlier defined as "define". The sequence DEFINE symbol expression means to match the word define, then any kind of valid symbol, then any one expression. Because scheme-in-list is only used in an expanded list, you don't need to match the parens. The part: (VARIABLE-TAG $2 nil $3 ) is the action, and the action runs when there is a match. In this case, the VARIABLE-TAG is a function call that expands out to creating a new valid uncooked semantic tag. Using these basics, you can create matches for all the picolisp valid syntax you care about, most likely all in this single rule. In semantic-scm.el, you can find the lexer. This has a matcher in it called semantic-lex-ignore-comments. comments are derived from the major mode, so if picolisp correctly defines your comment style, this should work as is. You may need to change semantic-lex-scheme-symbol to include any characters valid in a picolisp symbol if it is different. The other overrides might work as is. You would have to try them out to know for sure. Eric On 06/24/2011 05:35 AM, Henrik Sarvell wrote: > Seems like we can forget what I said about the Scheme template in my > last post. > > Methods probably showed in ECB due to some old caching. > > When I opened new files no methods showed until switched back to the > elisp version/template. > > What I really would like is simply for all words that match "foo" in > "(de foo " to show up in the method window. What is the easiest way to > accomplish this? > > > > On Fri, Jun 24, 2011 at 12:27 PM, Henrik Sarvell <hsa...@gm... > <mailto:hsa...@gm...>> wrote: > > You ar correct Eric, sorry for the confusion, I had added your hook > statement to my config but forgetting to delete the PicoLisp parser, > after doing that it stopped working as you suspected. > > You posted a fix earlier that I used to replace the corresponding > old code in my PicoLisp copy of semantic-scm.el, and it worked! > > I am now at the same place I was when using elisp as a template but > with Scheme instead, the definitions are showing up properly except > for functions containing semi-colons. > > Problem is of course that Scheme also uses ; for commenting (I > suppose?) and I can't see anywhere in the Scheme files (scheme.by > <http://scheme.by> / semantic-scm.el) that this character is defined > as being used for comments, so no easy fix, but now maybe it is > possible to fix at least? > > I've also checked for instance make.by <http://make.by> and > semantic-make.el but couldn't see any comment handling there either. > > From this I suppose you could infer that semantic somehow picks up > stuff from the coding mode, in this case picolisp-mode which > definitely handles # as comments with proper colors and all, however > this is not happening in the PicoLisp case. > > > > > On Thu, Jun 23, 2011 at 5:12 AM, Eric M. Ludlam > <eri...@gm... <mailto:eri...@gm...>> wrote: > > Hi, > > > On 06/20/2011 02:54 AM, Henrik Sarvell wrote: > > Hi again, forget the earlier question, it just works which > is great. > > > This now surprises me, since your last email about functions > being created with 'de' instead of 'defun'. > > > Just one snag, PicoLisp uses # for commenting, not ;. > > In fact PicoLisp uses ; as a getter function to get values > of object > attributes. > > The problem is that as soon as a function contains ; it will > disappear > from the ECB list. > > I.e the following works and shows upp: > > (de Test1 (Obj) > (print Obj)) > > But not this: > > (de Test2 (Obj) > (print (; Obj name))) > > Commented lines are handled properly by picolisp-mode but in > this case > the semantic parser won't pick that up. > > Any ideas how I can remedy this? > > > This is because the elisp parser uses Emacs' 'read' function, > which has ; built-in as a comment character. I'd assume that it > is not possible to fix that state. > > That, combined with me not yet understanding why the elisp > parser works makes me think your best bet is to start with the > Scheme parser. That parser is quite simple (scheme.by > <http://scheme.by>) and could be updated for picolisp definition > symbols. semantic-scm.el has customizations which will then fix > the comment syntax by obeying the syntax table for picolisp. > > Eric > > > > > > ------------------------------------------------------------------------------ > All the data continuously generated in your IT infrastructure contains a > definitive record of customers, application performance, security > threats, fraudulent activity and more. Splunk takes this data and makes > sense of it. Business sense. IT sense. Common sense.. > http://p.sf.net/sfu/splunk-d2d-c1 > > > > _______________________________________________ > Cedet-devel mailing list > Ced...@li... > https://lists.sourceforge.net/lists/listinfo/cedet-devel |
From: Henrik S. <hsa...@gm...> - 2011-06-26 05:53:41
|
Thanks for the help and the patience Eric. Using the Scheme setup is what I'm trying to do but unfortunately I'm failing. I was kind of hoping for some kind of cheat like just defining a few regexes to at least get basics working :) As far as I can see it should work, if I interpret the scheme.by correctly the only real difference is that a function in Scheme is defined (define-module (name arg1 ... )) but in PicoLisp it's (de name (arg1 ... )). I have tried to accommodate this fact in the attached picolisp.by but I am not sure if it's correct or not. As far as I can see there isn't much more to do in the semantic-picolisp.el file which is also attached. For completeness (if someone want to test) I have also attached the picolisp-mode in the form of the picolisp.el. A PicoLisp file ends with .l. Here comes the weird part: when I put the cursor on the d in for instance (de foo ()) I see what I've written in the summary section in the picolisp.by: "Function: (de name (arg1 arg1 ...) expression)" so obviously something is working even though ECB's method browser isn't picking up on it. Any further help in resolving this would be greatly appreciated, I have the feeling that the reason for the failure is trivial, something is misnamed or some such. On Sun, Jun 26, 2011 at 3:21 AM, Eric M. Ludlam <eri...@gm...>wrote: > The correct way to do what you ask is to create a parser for picolisp. At > this time, I think the scheme one is closest, but you (or someone) will need > to understand some basics in Emacs Lisp and Semantic to convert something > like Scheme over to pico lisp. > > To make the Scheme thing work you need scheme.by, and semantic-scm.el. In > the picolisp version, look at the token DEFINE. change it to be "de", plus > the same for the help. If there other such features, add those. Then look > at scheme-in-list, and change any other syntax there. The syntax is in the > semantic manual. At a most basic level: > > scheme-in-list: DEFINE symbol expression > (VARIABLE-TAG $2 nil $3 ) > ; > > where "scheme-in-list" is the name of a defined rule. DEFINE is a token, > which is earlier defined as "define". The sequence > > DEFINE symbol expression > > means to match the word define, then any kind of valid symbol, then any one > expression. Because scheme-in-list is only used in an expanded list, you > don't need to match the parens. > > The part: > > (VARIABLE-TAG $2 nil $3 ) > > is the action, and the action runs when there is a match. In this case, > the VARIABLE-TAG is a function call that expands out to creating a new valid > uncooked semantic tag. > > Using these basics, you can create matches for all the picolisp valid > syntax you care about, most likely all in this single rule. > > In semantic-scm.el, you can find the lexer. This has a matcher in it > called semantic-lex-ignore-comments. comments are derived from the major > mode, so if picolisp correctly defines your comment style, this should work > as is. > > You may need to change semantic-lex-scheme-symbol to include any characters > valid in a picolisp symbol if it is different. > > The other overrides might work as is. You would have to try them out to > know for sure. > > Eric > > > > On 06/24/2011 05:35 AM, Henrik Sarvell wrote: > >> Seems like we can forget what I said about the Scheme template in my >> last post. >> >> Methods probably showed in ECB due to some old caching. >> >> When I opened new files no methods showed until switched back to the >> elisp version/template. >> >> What I really would like is simply for all words that match "foo" in >> "(de foo " to show up in the method window. What is the easiest way to >> accomplish this? >> >> >> >> On Fri, Jun 24, 2011 at 12:27 PM, Henrik Sarvell <hsa...@gm... >> <mailto:hsa...@gm...>> wrote: >> >> You ar correct Eric, sorry for the confusion, I had added your hook >> statement to my config but forgetting to delete the PicoLisp parser, >> after doing that it stopped working as you suspected. >> >> You posted a fix earlier that I used to replace the corresponding >> old code in my PicoLisp copy of semantic-scm.el, and it worked! >> >> I am now at the same place I was when using elisp as a template but >> with Scheme instead, the definitions are showing up properly except >> for functions containing semi-colons. >> >> Problem is of course that Scheme also uses ; for commenting (I >> suppose?) and I can't see anywhere in the Scheme files (scheme.by >> <http://scheme.by> / semantic-scm.el) that this character is defined >> >> as being used for comments, so no easy fix, but now maybe it is >> possible to fix at least? >> >> I've also checked for instance make.by <http://make.by> and >> >> semantic-make.el but couldn't see any comment handling there either. >> >> From this I suppose you could infer that semantic somehow picks up >> stuff from the coding mode, in this case picolisp-mode which >> definitely handles # as comments with proper colors and all, however >> this is not happening in the PicoLisp case. >> >> >> >> >> On Thu, Jun 23, 2011 at 5:12 AM, Eric M. Ludlam >> <eri...@gm... <mailto:eri...@gm...>> wrote: >> >> Hi, >> >> >> On 06/20/2011 02:54 AM, Henrik Sarvell wrote: >> >> Hi again, forget the earlier question, it just works which >> is great. >> >> >> This now surprises me, since your last email about functions >> being created with 'de' instead of 'defun'. >> >> >> Just one snag, PicoLisp uses # for commenting, not ;. >> >> In fact PicoLisp uses ; as a getter function to get values >> of object >> attributes. >> >> The problem is that as soon as a function contains ; it will >> disappear >> from the ECB list. >> >> I.e the following works and shows upp: >> >> (de Test1 (Obj) >> (print Obj)) >> >> But not this: >> >> (de Test2 (Obj) >> (print (; Obj name))) >> >> Commented lines are handled properly by picolisp-mode but in >> this case >> the semantic parser won't pick that up. >> >> Any ideas how I can remedy this? >> >> >> This is because the elisp parser uses Emacs' 'read' function, >> which has ; built-in as a comment character. I'd assume that it >> is not possible to fix that state. >> >> That, combined with me not yet understanding why the elisp >> parser works makes me think your best bet is to start with the >> Scheme parser. That parser is quite simple (scheme.by >> <http://scheme.by>) and could be updated for picolisp definition >> >> symbols. semantic-scm.el has customizations which will then fix >> the comment syntax by obeying the syntax table for picolisp. >> >> Eric >> >> >> >> >> >> ------------------------------**------------------------------** >> ------------------ >> All the data continuously generated in your IT infrastructure contains a >> definitive record of customers, application performance, security >> threats, fraudulent activity and more. Splunk takes this data and makes >> sense of it. Business sense. IT sense. Common sense.. >> http://p.sf.net/sfu/splunk-**d2d-c1 <http://p.sf.net/sfu/splunk-d2d-c1> >> >> >> >> >> ______________________________**_________________ >> Cedet-devel mailing list >> Ced...@li...urceforge.**net <Ced...@li...> >> https://lists.sourceforge.net/**lists/listinfo/cedet-devel<https://lists.sourceforge.net/lists/listinfo/cedet-devel> >> > |