Thread: [cedet-semantic] Completion-UI support for Semantic
Brought to you by:
zappo
From: Toby C. <ts...@ca...> - 2008-06-21 16:42:08
|
Hi, I've just posted a basic version of Completion-UI support for Semantic to the Emacs wiki at www.emacswiki.org/cgi-bin/wiki/CompletionUI#toc4. (Eric - sorry for misspelling your name!) Since there's been a brief mention by Eric on the list before that this was in the works, I thought it was worth announcing it here. View this as a preliminary version. It works, but it can definitely be improved a lot, and I'd welcome any contributions since I don't have huge amounts of time to work on it. For those who don't know (show of hands? OK, that's everyone in the audience) completion-UI is a library I maintain which abstracts the user-interface for in-buffer completion in Emacs from the method used to find those completions. The idea is that every Emacs mode that implements some kind of completion can avoid reinventing the wheel, and concentrate on their unique way of finding completions, rather than replicate a lot of code for displaying them to the user. I also take the philosophy that decisions about user interfaces should be left up to the user, so I've tried to make completion-UI as customizable and configurable as possible (with sane defaults...hopefully!). But if many completion modes make use it, you still only have to configure things once and for all, for all of them. There were already examples on the wiki of how to use Completion-UI with Etags and Dabbrevs. Semantic support is only slightly more effort than these. There's also been interest in including it mainline Emacs at some point. (I confess, I'm guilty for delaying this, because I haven't had time to fully document the library for programmers, or clear up a few outstanding issues, which I want to do before handing it over.) A selection of the goodies that this brings: * Viewing, inserting and cycling through completions within the buffer, highlighting the completion as you go. This can be very similar to hippie-expand (although depending on customization settings it can also work quite differently :) * Insert completions using single-character hotkeys. If you use this, you'll probably also want to display the completions, at least in the echo area. * Display completions in a tooltip, and use the arrow keys to select from it. * Display completions in a pop-up frame below the point. This is not dissimilar to the tooltip, but it additionally lets you toggle between displaying some or all completions. * Display completions in a menu. This lets you toggle to browsing all possible completions organised into a hierarchical "deck-of-cards" sequence of submenus. * `auto-completion-mode' automatically completes as you type! This is both more and less useful than you might think. Despite what you might imagine, it doesn't get in your way at all when typing, leaving you free to type normally and ignore it until you feel like making use of it. On the other hand, the Semantic completion isn't always fast enough to keep up, in which case Emacs will "lag" behind your typing. You can configure it to complete after a time-delay, and/or only complete words that are longer than some minimum length, which helps. * Massively customizable! My goal with completion-UI is to replicate every possible completion interface within reason, and some beyond reason :) Customization options let you configure things to more or less simulate all other completion interfaces I know of. And it's left entirely up to you to decide how you want in-buffer completion to work; completion-UI tries to make no assumptions, under the assumption (oops!) that you know best what you want. Hope it's of interest, Toby |
From: Ming-Wei C. <mch...@ui...> - 2008-10-11 20:48:50
|
Hi Toby, First, this is really great and I hope I saw this eariler, since I like the your completion package a lot. However, could you please explain it a little bit about how to setup this to work with the semantic package? I try to use your code on emacswiki but feel very confused about how should I use this. Usually when using semantic, I will use semantic-ia-complete-symbol if I want to see some competition. What should I do now if I want to use it with the competition ui package? Could you please provide an example (or a procedure ?)? Best, Ming-Wei Toby Cubitt <ts...@ca...> writes: > Hi, > > I've just posted a basic version of Completion-UI support for Semantic > to the Emacs wiki at www.emacswiki.org/cgi-bin/wiki/CompletionUI#toc4. > (Eric - sorry for misspelling your name!) > > .... > > Hope it's of interest, > > Toby > > ------------------------------------------------------------------------- > Check out the new SourceForge.net Marketplace. > It's the best place to buy or sell services for > just about anything Open Source. > http://sourceforge.net/services/buy/index.php > _______________________________________________ > cedet-semantic mailing list > ced...@li... > https://lists.sourceforge.net/lists/listinfo/cedet-semantic |
From: Wei W. <ww...@ac...> - 2008-10-11 23:54:28
|
Ming-Wei Chang wrote: > Hi Toby, > > First, this is really great and I hope I saw this eariler, since I > like the your completion package a lot. However, could you please > explain it a little bit about how to setup this to work with the > semantic package? > > I try to use your code on emacswiki but feel very confused about how > should I use this. Usually when using semantic, I will use > semantic-ia-complete-symbol if I want to see some competition. What > should I do now if I want to use it with the competition ui package? > Could you please provide an example (or a procedure ?)? > > Best, > > Ming-Wei > I also tried completion-ui package, I kept getting errors: Auto-Completion mode enabled funcall: Symbol's function definition is void: nil [11 times] Mark set [2 times] Wrote /home/wweng/test.c I am using emacs 23. Any suggestions? Thanks Wei |
From: bread <bre...@gm...> - 2008-10-12 03:08:15
|
maybe u can try company-mode ( http://nschum.de/src/emacs/company-mode/ ) , i tried and found it's really amazing. u can find a preview demo on that page, too. On Sun, Oct 12, 2008 at 4:48 AM, Ming-Wei Chang <mch...@ui...> wrote: > > Hi Toby, > > First, this is really great and I hope I saw this eariler, since I > like the your completion package a lot. However, could you please > explain it a little bit about how to setup this to work with the > semantic package? > > I try to use your code on emacswiki but feel very confused about how > should I use this. Usually when using semantic, I will use > semantic-ia-complete-symbol if I want to see some competition. What > should I do now if I want to use it with the competition ui package? > Could you please provide an example (or a procedure ?)? > > Best, > > Ming-Wei > > Toby Cubitt <ts...@ca...> writes: > > > Hi, > > > > I've just posted a basic version of Completion-UI support for Semantic > > to the Emacs wiki at www.emacswiki.org/cgi-bin/wiki/CompletionUI#toc4. > > (Eric - sorry for misspelling your name!) > > > > .... > > > > Hope it's of interest, > > > > Toby > > > -- Zhiqiu Kong (孔直秋) |
From: Toby C. <ts...@ca...> - 2008-10-12 17:53:42
|
Hi Ming-Wei, To use the completion-UI Semantic support, you just need to cut-and-paste the EmacsWiki code into a file, load the code in Emacs (e.g. visit the file and run `eval-buffer'), and run the `completion-setup-semantic' command in the buffer in which you want to use completion-UI and Semantic (and also enable Semantic, of course). This should set everything up correctly. Then you can use any of the myriad completion-UI features, e.g. `auto-completion-mode' (though with Semantic, this is probably the least useful completion-UI feature...) or "M-<tab>" to complete the word at point. I just tested this with a new CVS checkout of CEDET, and it works for me. Though it took a little bit of jiggling to get Semantic working (my advice: read the INSTALL file more carefully than I did :). BTW, I just fixed a small bug in the EmacsWiki code, which prevented the completion browser from working. There's no separate documentation for completion-UI yet (and I've been saying "yet" for many years now :) but at least all the options are reasonably well explained in the completion-ui customization group. On a separate note, I was testing completion-UI + Semantic in an elisp buffer, and the completions that Semantic *didn't* find were odd: typing "(def" and completing gave no completions at all. Typing "(defu" gave "defun*" as a completion, but not "defun". Strange. But that's a Semantic issue (Eric?). Completion-UI can only work with whatever completions it's given! Company-mode looks nice. From what I can tell, it implements a subset of the completion-UI in-buffer completion interfaces (what I call dynamic completion, completion cycling, echo-area text, and tooltips), and also provides pre-defined support for various completion mechanisms. Equivalents for some of these in completion-UI are on the EmacsWiki page, others you'd need to write yourself (much easier than it sounds!). Hope that helps, Toby Ming-Wei Chang wrote: > Hi Toby, > > First, this is really great and I hope I saw this eariler, since I > like the your completion package a lot. However, could you please > explain it a little bit about how to setup this to work with the > semantic package? > > I try to use your code on emacswiki but feel very confused about how > should I use this. Usually when using semantic, I will use > semantic-ia-complete-symbol if I want to see some competition. What > should I do now if I want to use it with the competition ui package? > Could you please provide an example (or a procedure ?)? > > Best, > > Ming-Wei > > Toby Cubitt <ts...@ca...> writes: > >> Hi, >> >> I've just posted a basic version of Completion-UI support for Semantic >> to the Emacs wiki at www.emacswiki.org/cgi-bin/wiki/CompletionUI#toc4. >> (Eric - sorry for misspelling your name!) >> >> .... >> >> Hope it's of interest, >> >> Toby >> >> ------------------------------------------------------------------------- >> Check out the new SourceForge.net Marketplace. >> It's the best place to buy or sell services for >> just about anything Open Source. >> http://sourceforge.net/services/buy/index.php >> _______________________________________________ >> cedet-semantic mailing list >> ced...@li... >> https://lists.sourceforge.net/lists/listinfo/cedet-semantic > > ------------------------------------------------------------------------- > This SF.Net email is sponsored by the Moblin Your Move Developer's challenge > Build the coolest Linux based applications with Moblin SDK & win great prizes > Grand prize is a trip for two to an Open Source event anywhere in the world > http://moblin-contest.org/redirect.php?banner_id=100&url=/ > _______________________________________________ > cedet-semantic mailing list > ced...@li... > https://lists.sourceforge.net/lists/listinfo/cedet-semantic |
From: bread <bre...@gm...> - 2008-10-13 03:15:44
|
Hi, Tony I just tried the codes on Emacswiki (Example Using SemanticBovinator), but when i "eval-buffer", and then M-x completion-setup-semantic , i was told that "completion-map" can not be found. And i think it's because: (define-key completion-map "." 'completion-self-insert)) I'm using the latest cedet from CVS now. P.S: what about make a demo and put the link on Emacswiki? Users just can not image what the real effect is by only seeing the codes. :) Thanks On Mon, Oct 13, 2008 at 1:53 AM, Toby Cubitt <ts...@ca...> wrote: > > Hi Ming-Wei, > > To use the completion-UI Semantic support, you just need to > cut-and-paste the EmacsWiki code into a file, load the code in Emacs > (e.g. visit the file and run `eval-buffer'), and run the > `completion-setup-semantic' command in the buffer in which you want to > use completion-UI and Semantic (and also enable Semantic, of course). > > This should set everything up correctly. Then you can use any of the > myriad completion-UI features, e.g. `auto-completion-mode' (though with > Semantic, this is probably the least useful completion-UI feature...) or > "M-<tab>" to complete the word at point. > > I just tested this with a new CVS checkout of CEDET, and it works for > me. Though it took a little bit of jiggling to get Semantic working (my > advice: read the INSTALL file more carefully than I did :). BTW, I just > fixed a small bug in the EmacsWiki code, which prevented the completion > browser from working. > > There's no separate documentation for completion-UI yet (and I've been > saying "yet" for many years now :) but at least all the options are > reasonably well explained in the completion-ui customization group. > > > On a separate note, I was testing completion-UI + Semantic in an elisp > buffer, and the completions that Semantic *didn't* find were odd: typing > "(def" and completing gave no completions at all. Typing "(defu" gave > "defun*" as a completion, but not "defun". Strange. But that's a > Semantic issue (Eric?). Completion-UI can only work with whatever > completions it's given! > > Company-mode looks nice. From what I can tell, it implements a subset of > the completion-UI in-buffer completion interfaces (what I call dynamic > completion, completion cycling, echo-area text, and tooltips), and also > provides pre-defined support for various completion mechanisms. > Equivalents for some of these in completion-UI are on the EmacsWiki > page, others you'd need to write yourself (much easier than it sounds!). > > Hope that helps, > > Toby > -- Zhiqiu Kong (孔直秋) |
From: Toby C. <ts...@ca...> - 2008-10-13 10:09:23
|
Hi, bread wrote: > Hi, Tony Actually, it's ToBy, with a "b" :) > I just tried the codes on Emacswiki (Example Using > SemanticBovinator), but when i "eval-buffer", and then M-x > completion-setup-semantic , i was told that "completion-map" can not > be found. And i think it's because: > > (define-key completion-map "." 'completion-self-insert)) You need to load the completion-UI library too! OK, OK, I forgot to say that in my email, though the fact that the code is on the completion-UI page, which has a link to download the library at the top, was supposed to be a big clue... :) > I'm using the latest cedet from CVS now. > > P.S: what about make a demo and put the link on Emacswiki? Users just > can not image what the real effect is by only seeing the codes. :) Someone posted some screenshots on the EmacsWiki PredictiveMode page, and since predictive-mode uses completion-UI for it's user interface, it looks identical to completion-UI + Semantic. But you're right, a video demo would be good. I just need to find the time... Toby |
From: bread <bre...@gm...> - 2008-10-13 15:24:57
|
Hi, Toby Sorry for my mistakes on your names and not noticing the download link , and it seems all these 2 has been fixed. :) I tried M-TAB after M-x completion-setup-semantic , but i was told that "No tags table loaded; Try M-x visit-tag-table"。 P.S: i've seen the screenshots and it's really amazing. and just as what u said, it has more functions than company-mode. On Mon, Oct 13, 2008 at 4:22 PM, Toby Cubitt <ts...@ca...> wrote: > > Hi, > > bread wrote: > > Hi, Tony > > Actually, it's ToBy, with a "b" :) > > > > I just tried the codes on Emacswiki (Example Using > > SemanticBovinator), but when i "eval-buffer", and then M-x > > completion-setup-semantic , i was told that "completion-map" can not > > be found. And i think it's because: > > > > (define-key completion-map "." 'completion-self-insert)) > > You need to load the completion-UI library too! OK, OK, I forgot to say > that in my email, though the fact that the code is on the completion-UI > page, which has a link to download the library at the top, was supposed > to be a big clue... :) > > > > I'm using the latest cedet from CVS now. > > > > P.S: what about make a demo and put the link on Emacswiki? Users just > > can not image what the real effect is by only seeing the codes. :) > > Someone posted some screenshots on the EmacsWiki PredictiveMode page, > and since predictive-mode uses completion-UI for it's user interface, it > looks identical to completion-UI + Semantic. > > But you're right, a video demo would be good. I just need to find the > time... > > Toby > > -- Zhiqiu Kong (孔直秋) |
From: Toby C. <ts...@ca...> - 2008-10-13 17:21:38
|
Hi, bread wrote: > I tried M-TAB after M-x completion-setup-semantic , but i was told that "No > tags table loaded; Try M-x visit-tag-table"$B!#(B This is a CEDET error message, so has nothing to do with completion-UI. It sounds like you haven't enabled Semantic in the buffer. I'm not a Semantic expert, but you'll probably want to enable `semantic-idle-scheduler-mode' at least. If it still doesn't work, try getting Semantic to work in the buffer first, before trying to enable completion-UI. I recommend reading the INSTALL file that accompanies CEDET carefully... HTH, Toby |
From: bread <bre...@gm...> - 2008-10-14 05:53:23
|
Hi, I'm sure semantic worked for me, as i can use company-mode properly and semantic-ia-complete-symbol-menu to pop up a menu of completions. what's more, i think allowing users to re-bind the function of M-TAB with other keys will be more flexible since some users may use M-TAB to switch between windows. Thanks. 2008/10/14 Toby Cubitt <ts...@ca...> > > Hi, > > bread wrote: > > I tried M-TAB after M-x completion-setup-semantic , but i was told that > "No > > tags table loaded; Try M-x visit-tag-table"。 > > This is a CEDET error message, so has nothing to do with completion-UI. > It sounds like you haven't enabled Semantic in the buffer. I'm not a > Semantic expert, but you'll probably want to enable > `semantic-idle-scheduler-mode' at least. > > If it still doesn't work, try getting Semantic to work in the buffer > first, before trying to enable completion-UI. I recommend reading the > INSTALL file that accompanies CEDET carefully... > > HTH, > > Toby > -- Zhiqiu Kong (孔直秋) |
From: Toby C. <ts...@ca...> - 2008-10-14 06:51:05
|
Hi, There's little more I can add. "No tags table loaded" is not a completion-UI error message (grep the code if you don't believe me), so something else is responsible. And I can't reproduce this problem. I still suspect there's something not quite configured right in your buffer. If the code is throwing a lisp error (rather than just printing a message), you could `toggle-debug-on-error', repeat the steps that produce the error, and look at the backtrace to show you the function calls that caused the error. I still expect that it's one of the Semantic functions, but this would confirm it. Otherwise, you could edebug the completion-UI Semantic support code, and step through it to figure out where the problem occurs. If you still can't figure out what's going on, you could send me (off list) the contents of the backtrace, or details of the results of stepping through the code. > I'm sure semantic worked for me, as i can use company-mode properly and > semantic-ia-complete-symbol-menu to pop up a menu of completions. Company mode's Semantic support code is very, very similar to the completion-UI support code...except that it's surrounded by "(ignore-errors...)". So the fact that company-mode works doesn't tell me much :) The fact that `semantic-ia-complete-symbol-menu' works does seem to indicate that Semantic is correctly enabled, but I'm not familiar enough with Semantic to know what's going on without being able to reproduce the error myself... > what's more, i think allowing users to re-bind the function of M-TAB with > other keys will be more flexible since some users may use M-TAB to switch > between windows. Errmmmm...did you look at completion-UI? I know it's not documented very well, but it does most things in the conventional Emacs way...including binding keys in keymaps (imaginatively called `completion-map' etc.) which can be rebound to your heart's content. Moreover, M-/ is bound to the same command as M-TAB, for precisely the reason you cite. Toby >> Hi, >> >> bread wrote: >>> I tried M-TAB after M-x completion-setup-semantic , but i was told that >> "No >>> tags table loaded; Try M-x visit-tag-table"$B!#(B >> This is a CEDET error message, so has nothing to do with completion-UI. >> It sounds like you haven't enabled Semantic in the buffer. I'm not a >> Semantic expert, but you'll probably want to enable >> `semantic-idle-scheduler-mode' at least. >> >> If it still doesn't work, try getting Semantic to work in the buffer >> first, before trying to enable completion-UI. I recommend reading the >> INSTALL file that accompanies CEDET carefully... >> >> HTH, >> >> Toby >> > > > ------------------------------------------------------------------------ > > ------------------------------------------------------------------------- > This SF.Net email is sponsored by the Moblin Your Move Developer's challenge > Build the coolest Linux based applications with Moblin SDK & win great prizes > Grand prize is a trip for two to an Open Source event anywhere in the world > http://moblin-contest.org/redirect.php?banner_id=100&url=/ > > > ------------------------------------------------------------------------ > > _______________________________________________ > cedet-semantic mailing list > ced...@li... > https://lists.sourceforge.net/lists/listinfo/cedet-semantic |
From: Eric M. L. <er...@si...> - 2008-10-14 11:28:05
|
Hi, The message: No tags table loaded; Try M-x visit-tag-table" is in complete-tag in etags.el. I assumed it was that the semantic setup for completion ui was not reconfigured as expected, and completion-ui was defaulting to etags completion instead. Eric >>> Toby Cubitt <ts...@ca...> seems to think that: > >Hi, > >There's little more I can add. "No tags table loaded" is not a >completion-UI error message (grep the code if you don't believe me), so >something else is responsible. And I can't reproduce this problem. I >still suspect there's something not quite configured right in your buffer. > >If the code is throwing a lisp error (rather than just printing a >message), you could `toggle-debug-on-error', repeat the steps that >produce the error, and look at the backtrace to show you the function >calls that caused the error. I still expect that it's one of the >Semantic functions, but this would confirm it. > >Otherwise, you could edebug the completion-UI Semantic support code, and >step through it to figure out where the problem occurs. > >If you still can't figure out what's going on, you could send me (off >list) the contents of the backtrace, or details of the results of >stepping through the code. > > >> I'm sure semantic worked for me, as i can use company-mode properly and >> semantic-ia-complete-symbol-menu to pop up a menu of completions. > >Company mode's Semantic support code is very, very similar to the >completion-UI support code...except that it's surrounded by >"(ignore-errors...)". So the fact that company-mode works doesn't tell >me much :) > >The fact that `semantic-ia-complete-symbol-menu' works does seem to >indicate that Semantic is correctly enabled, but I'm not familiar enough >with Semantic to know what's going on without being able to reproduce >the error myself... > > >> what's more, i think allowing users to re-bind the function of M-TAB with >> other keys will be more flexible since some users may use M-TAB to switch >> between windows. > >Errmmmm...did you look at completion-UI? I know it's not documented very >well, but it does most things in the conventional Emacs way...including >binding keys in keymaps (imaginatively called `completion-map' etc.) >which can be rebound to your heart's content. > >Moreover, M-/ is bound to the same command as M-TAB, for precisely the >reason you cite. > >Toby > > > > >>> Hi, >>> >>> bread wrote: >>>> I tried M-TAB after M-x completion-setup-semantic , but i was told that >>> "No >>>> tags table loaded; Try M-x visit-tag-table"$B!#(B >>> This is a CEDET error message, so has nothing to do with completion-UI. >>> It sounds like you haven't enabled Semantic in the buffer. I'm not a >>> Semantic expert, but you'll probably want to enable >>> `semantic-idle-scheduler-mode' at least. >>> >>> If it still doesn't work, try getting Semantic to work in the buffer >>> first, before trying to enable completion-UI. I recommend reading the >>> INSTALL file that accompanies CEDET carefully... >>> >>> HTH, >>> >>> Toby >>> >> >> >> ------------------------------------------------------------------------ >> >> ------------------------------------------------------------------------- >> This SF.Net email is sponsored by the Moblin Your Move Developer's challenge >> Build the coolest Linux based applications with Moblin SDK & win great prizes >> Grand prize is a trip for two to an Open Source event anywhere in the world >> http://moblin-contest.org/redirect.php?banner_id=100&url=/ >> >> >> ------------------------------------------------------------------------ >> >> _______________________________________________ >> cedet-semantic mailing list >> ced...@li... >> https://lists.sourceforge.net/lists/listinfo/cedet-semantic > >------------------------------------------------------------------------- >This SF.Net email is sponsored by the Moblin Your Move Developer's challenge >Build the coolest Linux based applications with Moblin SDK & win great prizes >Grand prize is a trip for two to an Open Source event anywhere in the world >http://moblin-contest.org/redirect.php?banner_id=100&url=/ >_______________________________________________ >cedet-semantic mailing list >ced...@li... >https://lists.sourceforge.net/lists/listinfo/cedet-semantic > |
From: Toby C. <ts...@ca...> - 2008-10-14 13:23:22
|
Hi Eric, Thanks for finally injecting some intelligent input into my wild speculations :) Completion-UI doesn't default to any kind of completion. Until you set the `completion-function' variable, it does absolutely nothing at all. So somewhere, someone would have to explicitly set `completion-function' to the etags wrapper function (in a .emacs?). But running `completion-setup-semantic' sets `completion-function' (buffer-locally), overriding whatever was there before. So I don't see how it completion-UI could be calling the etags wrapper instead of the Semantic one, unless someone told it to. I have this vague recollection that Semantic might use etags in some major-modes (elisp?). Does that recollection have any reflection in reality? Could that explain why it's complaining? Otherwise, the answer lies in a backtrace... Toby Eric M. Ludlam wrote: > Hi, > > The message: > > No tags table loaded; Try M-x visit-tag-table" > > is in complete-tag in etags.el. > > I assumed it was that the semantic setup for completion ui was not > reconfigured as expected, and completion-ui was defaulting to etags > completion instead. > > Eric > >>>> Toby Cubitt <ts...@ca...> seems to think that: >> Hi, >> >> There's little more I can add. "No tags table loaded" is not a >> completion-UI error message (grep the code if you don't believe me), so >> something else is responsible. And I can't reproduce this problem. I >> still suspect there's something not quite configured right in your buffer. >> >> If the code is throwing a lisp error (rather than just printing a >> message), you could `toggle-debug-on-error', repeat the steps that >> produce the error, and look at the backtrace to show you the function >> calls that caused the error. I still expect that it's one of the >> Semantic functions, but this would confirm it. >> >> Otherwise, you could edebug the completion-UI Semantic support code, and >> step through it to figure out where the problem occurs. >> >> If you still can't figure out what's going on, you could send me (off >> list) the contents of the backtrace, or details of the results of >> stepping through the code. >> >> >>> I'm sure semantic worked for me, as i can use company-mode properly and >>> semantic-ia-complete-symbol-menu to pop up a menu of completions. >> Company mode's Semantic support code is very, very similar to the >> completion-UI support code...except that it's surrounded by >> "(ignore-errors...)". So the fact that company-mode works doesn't tell >> me much :) >> >> The fact that `semantic-ia-complete-symbol-menu' works does seem to >> indicate that Semantic is correctly enabled, but I'm not familiar enough >> with Semantic to know what's going on without being able to reproduce >> the error myself... >> >> >>> what's more, i think allowing users to re-bind the function of M-TAB with >>> other keys will be more flexible since some users may use M-TAB to switch >>> between windows. >> Errmmmm...did you look at completion-UI? I know it's not documented very >> well, but it does most things in the conventional Emacs way...including >> binding keys in keymaps (imaginatively called `completion-map' etc.) >> which can be rebound to your heart's content. >> >> Moreover, M-/ is bound to the same command as M-TAB, for precisely the >> reason you cite. >> >> Toby >> >> >> >> >>>> Hi, >>>> >>>> bread wrote: >>>>> I tried M-TAB after M-x completion-setup-semantic , but i was told that >>>> "No >>>>> tags table loaded; Try M-x visit-tag-table"$B!#(B > >>> This is a CEDET error message, so has nothing to do with completion-UI. >>>> It sounds like you haven't enabled Semantic in the buffer. I'm not a >>>> Semantic expert, but you'll probably want to enable >>>> `semantic-idle-scheduler-mode' at least. >>>> >>>> If it still doesn't work, try getting Semantic to work in the buffer >>>> first, before trying to enable completion-UI. I recommend reading the >>>> INSTALL file that accompanies CEDET carefully... >>>> >>>> HTH, >>>> >>>> Toby >>>> >>> >>> ------------------------------------------------------------------------ >>> >>> ------------------------------------------------------------------------- >>> This SF.Net email is sponsored by the Moblin Your Move Developer's challenge >>> Build the coolest Linux based applications with Moblin SDK & win great prizes >>> Grand prize is a trip for two to an Open Source event anywhere in the world >>> http://moblin-contest.org/redirect.php?banner_id=100&url=/ >>> >>> >>> ------------------------------------------------------------------------ >>> >>> _______________________________________________ >>> cedet-semantic mailing list >>> ced...@li... >>> https://lists.sourceforge.net/lists/listinfo/cedet-semantic >> ------------------------------------------------------------------------- >> This SF.Net email is sponsored by the Moblin Your Move Developer's challenge >> Build the coolest Linux based applications with Moblin SDK & win great prizes >> Grand prize is a trip for two to an Open Source event anywhere in the world >> http://moblin-contest.org/redirect.php?banner_id=100&url=/ >> _______________________________________________ >> cedet-semantic mailing list >> ced...@li... >> https://lists.sourceforge.net/lists/listinfo/cedet-semantic >> > > ------------------------------------------------------------------------- > This SF.Net email is sponsored by the Moblin Your Move Developer's challenge > Build the coolest Linux based applications with Moblin SDK & win great prizes > Grand prize is a trip for two to an Open Source event anywhere in the world > http://moblin-contest.org/redirect.php?banner_id=100&url=/ > _______________________________________________ > cedet-semantic mailing list > ced...@li... > https://lists.sourceforge.net/lists/listinfo/cedet-semantic |
From: Eric M. L. <er...@si...> - 2008-10-14 14:38:30
|
I just noticed that the default binding of M-TAB is `complete-symbol' which has doc that says: --- Perform tags completion on the text around point. Completes to the set of names listed in the current tags table. --- so it sounds like the keybinding M-TAB was never rebound to completion-UI. Eric >>> Toby Cubitt <ts...@ca...> seems to think that: > >Hi Eric, > >Thanks for finally injecting some intelligent input into my wild >speculations :) > >Completion-UI doesn't default to any kind of completion. Until you set >the `completion-function' variable, it does absolutely nothing at all. >So somewhere, someone would have to explicitly set `completion-function' >to the etags wrapper function (in a .emacs?). But running >`completion-setup-semantic' sets `completion-function' (buffer-locally), >overriding whatever was there before. So I don't see how it >completion-UI could be calling the etags wrapper instead of the Semantic >one, unless someone told it to. > >I have this vague recollection that Semantic might use etags in some >major-modes (elisp?). Does that recollection have any reflection in >reality? Could that explain why it's complaining? > >Otherwise, the answer lies in a backtrace... > >Toby > > >Eric M. Ludlam wrote: >> Hi, >> >> The message: >> >> No tags table loaded; Try M-x visit-tag-table" >> >> is in complete-tag in etags.el. >> >> I assumed it was that the semantic setup for completion ui was not >> reconfigured as expected, and completion-ui was defaulting to etags >> completion instead. >> >> Eric >> >>>>> Toby Cubitt <ts...@ca...> seems to think that: >>> Hi, >>> >>> There's little more I can add. "No tags table loaded" is not a >>> completion-UI error message (grep the code if you don't believe me), so >>> something else is responsible. And I can't reproduce this problem. I >>> still suspect there's something not quite configured right in your buffer. >>> >>> If the code is throwing a lisp error (rather than just printing a >>> message), you could `toggle-debug-on-error', repeat the steps that >>> produce the error, and look at the backtrace to show you the function >>> calls that caused the error. I still expect that it's one of the >>> Semantic functions, but this would confirm it. >>> >>> Otherwise, you could edebug the completion-UI Semantic support code, and >>> step through it to figure out where the problem occurs. >>> >>> If you still can't figure out what's going on, you could send me (off >>> list) the contents of the backtrace, or details of the results of >>> stepping through the code. >>> >>> >>>> I'm sure semantic worked for me, as i can use company-mode properly and >>>> semantic-ia-complete-symbol-menu to pop up a menu of completions. >>> Company mode's Semantic support code is very, very similar to the >>> completion-UI support code...except that it's surrounded by >>> "(ignore-errors...)". So the fact that company-mode works doesn't tell >>> me much :) >>> >>> The fact that `semantic-ia-complete-symbol-menu' works does seem to >>> indicate that Semantic is correctly enabled, but I'm not familiar enough >>> with Semantic to know what's going on without being able to reproduce >>> the error myself... >>> >>> >>>> what's more, i think allowing users to re-bind the function of M-TAB with >>>> other keys will be more flexible since some users may use M-TAB to switch >>>> between windows. >>> Errmmmm...did you look at completion-UI? I know it's not documented very >>> well, but it does most things in the conventional Emacs way...including >>> binding keys in keymaps (imaginatively called `completion-map' etc.) >>> which can be rebound to your heart's content. >>> >>> Moreover, M-/ is bound to the same command as M-TAB, for precisely the >>> reason you cite. >>> >>> Toby >>> >>> >>> >>> >>>>> Hi, >>>>> >>>>> bread wrote: >>>>>> I tried M-TAB after M-x completion-setup-semantic , but i was told that >>>>> "No >>>>>> tags table loaded; Try M-x visit-tag-table"$B!#(B >> >>> This is a CEDET error message, so has nothing to do with completion-UI. >>>>> It sounds like you haven't enabled Semantic in the buffer. I'm not a >>>>> Semantic expert, but you'll probably want to enable >>>>> `semantic-idle-scheduler-mode' at least. >>>>> >>>>> If it still doesn't work, try getting Semantic to work in the buffer >>>>> first, before trying to enable completion-UI. I recommend reading the >>>>> INSTALL file that accompanies CEDET carefully... >>>>> >>>>> HTH, >>>>> >>>>> Toby >>>>> >>>> >>>> ------------------------------------------------------------------------ >>>> >>>> ------------------------------------------------------------------------- >>>> This SF.Net email is sponsored by the Moblin Your Move Developer's challenge >>>> Build the coolest Linux based applications with Moblin SDK & win great prizes >>>> Grand prize is a trip for two to an Open Source event anywhere in the world >>>> http://moblin-contest.org/redirect.php?banner_id=100&url=/ >>>> >>>> >>>> ------------------------------------------------------------------------ >>>> >>>> _______________________________________________ >>>> cedet-semantic mailing list >>>> ced...@li... >>>> https://lists.sourceforge.net/lists/listinfo/cedet-semantic >>> ------------------------------------------------------------------------- >>> This SF.Net email is sponsored by the Moblin Your Move Developer's challenge >>> Build the coolest Linux based applications with Moblin SDK & win great prizes >>> Grand prize is a trip for two to an Open Source event anywhere in the world >>> http://moblin-contest.org/redirect.php?banner_id=100&url=/ >>> _______________________________________________ >>> cedet-semantic mailing list >>> ced...@li... >>> https://lists.sourceforge.net/lists/listinfo/cedet-semantic >>> >> >> ------------------------------------------------------------------------- >> This SF.Net email is sponsored by the Moblin Your Move Developer's challenge >> Build the coolest Linux based applications with Moblin SDK & win great prizes >> Grand prize is a trip for two to an Open Source event anywhere in the world >> http://moblin-contest.org/redirect.php?banner_id=100&url=/ >> _______________________________________________ >> cedet-semantic mailing list >> ced...@li... >> https://lists.sourceforge.net/lists/listinfo/cedet-semantic > >------------------------------------------------------------------------- >This SF.Net email is sponsored by the Moblin Your Move Developer's challenge >Build the coolest Linux based applications with Moblin SDK & win great prizes >Grand prize is a trip for two to an Open Source event anywhere in the world >http://moblin-contest.org/redirect.php?banner_id=100&url=/ >_______________________________________________ >cedet-semantic mailing list >ced...@li... >https://lists.sourceforge.net/lists/listinfo/cedet-semantic > |
From: Toby C. <ts...@ca...> - 2008-10-14 15:31:03
|
Hmmmm... M-TAB is bound in `completion-map', which is added to the `minor-mode-map-alist' when the completion-ui library is loaded. So either something is overriding that (a minor-mode map that appears earlier in the alist?), or the completion-UI library isn't actually being loaded at all. Easy test: try "M-x complete-word-at-point". If that fails, completion-UI isn't loaded. If it works, try "M-/" (or better still, "C-h k M-/" and check whether it's bound to `complete-word-at-point'). If that works, the M-TAB binding is being overridden by something else. Use "C-h k M-TAB" to see what might be doing this. In other words, I still believe this to be a simple configuration issue, and would like to rule this out before expending further effort on it :) I don't usually like adding `require' statements within function bodies, but perhaps in the case of the EmacsWiki code snippets, it might be a good idea. It would at least give an obvious error message and rule out some trivial issues. Toby Eric M. Ludlam wrote: > I just noticed that the default binding of M-TAB is `complete-symbol' > which has doc that says: > > --- > Perform tags completion on the text around point. > Completes to the set of names listed in the current tags table. > --- > > so it sounds like the keybinding M-TAB was never rebound to > completion-UI. > > Eric > >>>> Toby Cubitt <ts...@ca...> seems to think that: >> Hi Eric, >> >> Thanks for finally injecting some intelligent input into my wild >> speculations :) >> >> Completion-UI doesn't default to any kind of completion. Until you set >> the `completion-function' variable, it does absolutely nothing at all. >> So somewhere, someone would have to explicitly set `completion-function' >> to the etags wrapper function (in a .emacs?). But running >> `completion-setup-semantic' sets `completion-function' (buffer-locally), >> overriding whatever was there before. So I don't see how it >> completion-UI could be calling the etags wrapper instead of the Semantic >> one, unless someone told it to. >> >> I have this vague recollection that Semantic might use etags in some >> major-modes (elisp?). Does that recollection have any reflection in >> reality? Could that explain why it's complaining? >> >> Otherwise, the answer lies in a backtrace... >> >> Toby >> >> >> Eric M. Ludlam wrote: >>> Hi, >>> >>> The message: >>> >>> No tags table loaded; Try M-x visit-tag-table" >>> >>> is in complete-tag in etags.el. >>> >>> I assumed it was that the semantic setup for completion ui was not >>> reconfigured as expected, and completion-ui was defaulting to etags >>> completion instead. >>> >>> Eric >>> >>>>>> Toby Cubitt <ts...@ca...> seems to think that: >>>> Hi, >>>> >>>> There's little more I can add. "No tags table loaded" is not a >>>> completion-UI error message (grep the code if you don't believe me), so >>>> something else is responsible. And I can't reproduce this problem. I >>>> still suspect there's something not quite configured right in your buffer. >>>> >>>> If the code is throwing a lisp error (rather than just printing a >>>> message), you could `toggle-debug-on-error', repeat the steps that >>>> produce the error, and look at the backtrace to show you the function >>>> calls that caused the error. I still expect that it's one of the >>>> Semantic functions, but this would confirm it. >>>> >>>> Otherwise, you could edebug the completion-UI Semantic support code, and >>>> step through it to figure out where the problem occurs. >>>> >>>> If you still can't figure out what's going on, you could send me (off >>>> list) the contents of the backtrace, or details of the results of >>>> stepping through the code. >>>> >>>> >>>>> I'm sure semantic worked for me, as i can use company-mode properly and >>>>> semantic-ia-complete-symbol-menu to pop up a menu of completions. >>>> Company mode's Semantic support code is very, very similar to the >>>> completion-UI support code...except that it's surrounded by >>>> "(ignore-errors...)". So the fact that company-mode works doesn't tell >>>> me much :) >>>> >>>> The fact that `semantic-ia-complete-symbol-menu' works does seem to >>>> indicate that Semantic is correctly enabled, but I'm not familiar enough >>>> with Semantic to know what's going on without being able to reproduce >>>> the error myself... >>>> >>>> >>>>> what's more, i think allowing users to re-bind the function of M-TAB with >>>>> other keys will be more flexible since some users may use M-TAB to switch >>>>> between windows. >>>> Errmmmm...did you look at completion-UI? I know it's not documented very >>>> well, but it does most things in the conventional Emacs way...including >>>> binding keys in keymaps (imaginatively called `completion-map' etc.) >>>> which can be rebound to your heart's content. >>>> >>>> Moreover, M-/ is bound to the same command as M-TAB, for precisely the >>>> reason you cite. >>>> >>>> Toby >>>> >>>> >>>> >>>> >>>>>> Hi, >>>>>> >>>>>> bread wrote: >>>>>>> I tried M-TAB after M-x completion-setup-semantic , but i was told that >>>>>> "No >>>>>>> tags table loaded; Try M-x visit-tag-table"$B!#(B >>> >>> This is a CEDET error message, so has nothing to do with completion-UI. >>>>>> It sounds like you haven't enabled Semantic in the buffer. I'm not a >>>>>> Semantic expert, but you'll probably want to enable >>>>>> `semantic-idle-scheduler-mode' at least. >>>>>> >>>>>> If it still doesn't work, try getting Semantic to work in the buffer >>>>>> first, before trying to enable completion-UI. I recommend reading the >>>>>> INSTALL file that accompanies CEDET carefully... >>>>>> >>>>>> HTH, >>>>>> >>>>>> Toby |
From: Toby C. <ts...@ca...> - 2008-10-15 13:57:46
|
For the record, the problem was due to not running `completion-setup-semantic' in *every* buffer where you want to use completion-UI's Semantic support. That function is intended to be used in hooks. I only made it an interactive command to make it easy to try it out. I take full responsibility for not making this clear! :) To recap how to use completion-UI with semantic: 1. download completion-UI.el and save it somewhere in your `load-path' 2. copy-and-paste the code snippets from the EmacsWiki completionUI page into a file, and load that file in Emacs using `load-file' 3. open a file where you want to use Semantic and completion-UI 4. enable `semantic-idle-scheduler-mode' if you haven't set this up automatically (a good idea, but maybe not strictly necessary?) 5. run `completion-setup-semantic' 6. use M-TAB or M-/ to complete the thing at point, or enable auto-completion-mode, or use any of the other completion-UI features (see the completion-UI customization group to get some idea) Yes, this is complicated, confusing, and poorly documented. That's because the completion-UI Semantic support is very rudimentary at the moment (though it *does* work). By all means give it a try, and I'm happy to point you in the right direction, but unless you're a fairly experienced Emacs user you might run into problems you don't know how to solve. (These comments apply *only* to the completion-UI Semantic support, *not* to Semantic itself, or even to completion-UI itself, which are both much more mature. Also, be aware that the intended audience of completion-UI is other Elisp package authors, not Emacs users. I.e. there's no useful user documentation, and you might need to know some Elisp to use it!) I will improve the Semantic support eventually, and once I deem it usable by the average Emacs user (whoever that is!) I'll package it up and distribute it with completion-UI itself. But I have other priorities at the moment. Code contributions are always welcome! Toby Toby Cubitt wrote: > Hmmmm... M-TAB is bound in `completion-map', which is added to the > `minor-mode-map-alist' when the completion-ui library is loaded. So > either something is overriding that (a minor-mode map that appears > earlier in the alist?), or the completion-UI library isn't actually > being loaded at all. > > Easy test: try "M-x complete-word-at-point". If that fails, > completion-UI isn't loaded. If it works, try "M-/" (or better still, > "C-h k M-/" and check whether it's bound to `complete-word-at-point'). > If that works, the M-TAB binding is being overridden by something else. > Use "C-h k M-TAB" to see what might be doing this. > > In other words, I still believe this to be a simple configuration issue, > and would like to rule this out before expending further effort on it :) > > I don't usually like adding `require' statements within function bodies, > but perhaps in the case of the EmacsWiki code snippets, it might be a > good idea. It would at least give an obvious error message and rule out > some trivial issues. > > Toby > > > Eric M. Ludlam wrote: >> I just noticed that the default binding of M-TAB is `complete-symbol' >> which has doc that says: >> >> --- >> Perform tags completion on the text around point. >> Completes to the set of names listed in the current tags table. >> --- >> >> so it sounds like the keybinding M-TAB was never rebound to >> completion-UI. >> >> Eric >> >>>>> Toby Cubitt <ts...@ca...> seems to think that: >>> Hi Eric, >>> >>> Thanks for finally injecting some intelligent input into my wild >>> speculations :) >>> >>> Completion-UI doesn't default to any kind of completion. Until you set >>> the `completion-function' variable, it does absolutely nothing at all. >>> So somewhere, someone would have to explicitly set `completion-function' >>> to the etags wrapper function (in a .emacs?). But running >>> `completion-setup-semantic' sets `completion-function' (buffer-locally), >>> overriding whatever was there before. So I don't see how it >>> completion-UI could be calling the etags wrapper instead of the Semantic >>> one, unless someone told it to. >>> >>> I have this vague recollection that Semantic might use etags in some >>> major-modes (elisp?). Does that recollection have any reflection in >>> reality? Could that explain why it's complaining? >>> >>> Otherwise, the answer lies in a backtrace... >>> >>> Toby >>> >>> >>> Eric M. Ludlam wrote: >>>> Hi, >>>> >>>> The message: >>>> >>>> No tags table loaded; Try M-x visit-tag-table" >>>> >>>> is in complete-tag in etags.el. >>>> >>>> I assumed it was that the semantic setup for completion ui was not >>>> reconfigured as expected, and completion-ui was defaulting to etags >>>> completion instead. >>>> >>>> Eric >>>> >>>>>>> Toby Cubitt <ts...@ca...> seems to think that: >>>>> Hi, >>>>> >>>>> There's little more I can add. "No tags table loaded" is not a >>>>> completion-UI error message (grep the code if you don't believe me), so >>>>> something else is responsible. And I can't reproduce this problem. I >>>>> still suspect there's something not quite configured right in your buffer. >>>>> >>>>> If the code is throwing a lisp error (rather than just printing a >>>>> message), you could `toggle-debug-on-error', repeat the steps that >>>>> produce the error, and look at the backtrace to show you the function >>>>> calls that caused the error. I still expect that it's one of the >>>>> Semantic functions, but this would confirm it. >>>>> >>>>> Otherwise, you could edebug the completion-UI Semantic support code, and >>>>> step through it to figure out where the problem occurs. >>>>> >>>>> If you still can't figure out what's going on, you could send me (off >>>>> list) the contents of the backtrace, or details of the results of >>>>> stepping through the code. >>>>> >>>>> >>>>>> I'm sure semantic worked for me, as i can use company-mode properly and >>>>>> semantic-ia-complete-symbol-menu to pop up a menu of completions. >>>>> Company mode's Semantic support code is very, very similar to the >>>>> completion-UI support code...except that it's surrounded by >>>>> "(ignore-errors...)". So the fact that company-mode works doesn't tell >>>>> me much :) >>>>> >>>>> The fact that `semantic-ia-complete-symbol-menu' works does seem to >>>>> indicate that Semantic is correctly enabled, but I'm not familiar enough >>>>> with Semantic to know what's going on without being able to reproduce >>>>> the error myself... >>>>> >>>>> >>>>>> what's more, i think allowing users to re-bind the function of M-TAB with >>>>>> other keys will be more flexible since some users may use M-TAB to switch >>>>>> between windows. >>>>> Errmmmm...did you look at completion-UI? I know it's not documented very >>>>> well, but it does most things in the conventional Emacs way...including >>>>> binding keys in keymaps (imaginatively called `completion-map' etc.) >>>>> which can be rebound to your heart's content. >>>>> >>>>> Moreover, M-/ is bound to the same command as M-TAB, for precisely the >>>>> reason you cite. >>>>> >>>>> Toby >>>>> >>>>> >>>>> >>>>> >>>>>>> Hi, >>>>>>> >>>>>>> bread wrote: >>>>>>>> I tried M-TAB after M-x completion-setup-semantic , but i was told that >>>>>>> "No >>>>>>>> tags table loaded; Try M-x visit-tag-table"$B!#(B >>>> >>> This is a CEDET error message, so has nothing to do with completion-UI. >>>>>>> It sounds like you haven't enabled Semantic in the buffer. I'm not a >>>>>>> Semantic expert, but you'll probably want to enable >>>>>>> `semantic-idle-scheduler-mode' at least. >>>>>>> >>>>>>> If it still doesn't work, try getting Semantic to work in the buffer >>>>>>> first, before trying to enable completion-UI. I recommend reading the >>>>>>> INSTALL file that accompanies CEDET carefully... >>>>>>> >>>>>>> HTH, >>>>>>> >>>>>>> Toby |
From: Toby C. <ts...@ca...> - 2008-10-12 17:54:36
|
Hi Ming-Wei, To use the completion-UI Semantic support, you just need to cut-and-paste the EmacsWiki code into a file, load the code in Emacs (e.g. visit the file and run `eval-buffer'), and run the `completion-setup-semantic' command in the buffer in which you want to use completion-UI and Semantic (and also enable Semantic, of course). This should set everything up correctly. Then you can use any of the myriad completion-UI features, e.g. `auto-completion-mode' (though with Semantic, this is probably the least useful completion-UI feature...) or "M-<tab>" to complete the word at point. I just tested this with a new CVS checkout of CEDET, and it works for me. Though it took a little bit of jiggling to get Semantic working (my advice: read the INSTALL file more carefully than I did :). BTW, I just fixed a small bug in the EmacsWiki code, which prevented the completion browser from working. There's no separate documentation for completion-UI yet (and I've been saying "yet" for many years now :) but at least all the options are reasonably well explained in the `completion-ui' customization group. On a separate note, I was testing completion-UI + Semantic in an elisp buffer, and the completions that Semantic *didn't* find were odd: typing "(def" and completing gave no completions at all. Typing "(defu" gave "defun*" as a completion, but not "defun". Strange. But that's a Semantic issue (Eric?). Completion-UI can only work with whatever completions it's given! Company-mode looks nice. From what I can tell, it implements a subset of the completion-UI in-buffer completion interfaces (what I call dynamic completion, completion cycling, echo-area text, and tooltips), and also provides pre-defined support for various completion mechanisms. Equivalents for some of these in completion-UI are on the EmacsWiki page, others you'd need to write yourself (much easier than it sounds!). Hope that helps, Toby Ming-Wei Chang wrote: > Hi Toby, > > First, this is really great and I hope I saw this eariler, since I > like the your completion package a lot. However, could you please > explain it a little bit about how to setup this to work with the > semantic package? > > I try to use your code on emacswiki but feel very confused about how > should I use this. Usually when using semantic, I will use > semantic-ia-complete-symbol if I want to see some competition. What > should I do now if I want to use it with the competition ui package? > Could you please provide an example (or a procedure ?)? > > Best, > > Ming-Wei > > Toby Cubitt <ts...@ca...> writes: > >> Hi, >> >> I've just posted a basic version of Completion-UI support for Semantic >> to the Emacs wiki at www.emacswiki.org/cgi-bin/wiki/CompletionUI#toc4. >> (Eric - sorry for misspelling your name!) >> >> .... >> >> Hope it's of interest, >> >> Toby >> >> ------------------------------------------------------------------------- >> Check out the new SourceForge.net Marketplace. >> It's the best place to buy or sell services for >> just about anything Open Source. >> http://sourceforge.net/services/buy/index.php >> _______________________________________________ >> cedet-semantic mailing list >> ced...@li... >> https://lists.sourceforge.net/lists/listinfo/cedet-semantic > > ------------------------------------------------------------------------- > This SF.Net email is sponsored by the Moblin Your Move Developer's challenge > Build the coolest Linux based applications with Moblin SDK & win great prizes > Grand prize is a trip for two to an Open Source event anywhere in the world > http://moblin-contest.org/redirect.php?banner_id=100&url=/ > _______________________________________________ > cedet-semantic mailing list > ced...@li... > https://lists.sourceforge.net/lists/listinfo/cedet-semantic |