Re[1]: update: problem with wisent
The file wisent-yourlanguagedefhere-wy.el is a generated file. If you did a make clean or similar in cedet or cedet/semantic, it will delete those files. If you follow the INSTALL instructions for building CEDET, it should eventually construct those files for you. Eric Ernst Reissner [EMAIL PROTECTED] seems to think that: Hello, i just updated to 2.3.5 and now jde is not loaded at all. A look into the messages buffer shows: Loading wisent-java-tags (source)... eval-buffer: Cannot open load file: wisent-java-tags-wy Loading lazy-lock...done Fontifying BasicTypesCompatibilityChecker.java... (regexps..) Loading lazy-lock...done Loading mwheel...done a, yes, a look into /usr/share/emacs/cedet-1.0beta3b/semantic/wisent/wisent-java-tags.el shows the line (require 'wisent-java-tags-wy) and there is no file wisent-java-tags-wy.el only wisent-java-tags.el wisent-java-tags.wy wisent-java.el wisent-java.wy What's wrong here? greetings Ernst -- Eric Ludlam: [EMAIL PROTECTED], [EMAIL PROTECTED] Home: http://www.ludlam.netSiege: www.siege-engine.com Emacs: http://cedet.sourceforge.net GNU: www.gnu.org
Re[6]: header line bugs and artifacts
Howdy, Jens Lautenbacher [EMAIL PROTECTED] seems to think that: On Thu, 2005-04-28 at 08:08 -0400, Eric M. Ludlam wrote: Hi, To be clear, is it just the header line, and semantic decorations that scare people away, or the whole set of code helpers including imenu, summary-mode, completion mode, and what-not. It's different. The header line is most problematic in my case (and maybe others) as I use the very cool tabbar.el by David Ponce (which is unexplainable to me still not part of standard emacs...) - So putting something there exclusively doesn't work for me. I queried the emacs devel mailing list some time ago about multi-line headers, or having methods for two tools to operate on the header-line so tabbar could work with stickyfunc mode. Sadly, they cannot be combined. :( Semantic decorations of methods would be nice, but I never understood the somehow arbitrary exclusion of small methods/functions, but as I'll remove that arbitrary restriction. Nascif said in another mail, it would be ever so much nicer to use the fringe to have e.g. clickeable markers for methods which could be used to show/hide them on demand.=20 There is a contributed semantic-tag-folding mode that could be enabled. Custom fringe bitmaps can only currently be done in the CVS version of Emacs. His folding mode is very high on the glitz factor. He recently sent me a patch to make it a little less shocking on first use which I hope to integrate into CVS soon. His mode also exposed a limitation in the current decoration system I need to figure out how to solve, though I haven't had time to test his patch yet to see if it was resolved. Completion mode is quite nice, but seems to have problems, e.g. (or it's a problem of semantic/java - I can't decide) the following construct, point at end of it in second line, will not complete as it doesn't seem to recognize iter to be in scope: for (Iterator iter =3D in.iterator(); iter.hasNext();) { itpoint } Another thing from a users point of view is that it would be really cool to have jde's class file based completion of methods and semantics source based completion of in-scope variables merged into _one_. The problem of semantic in this regard (and the problem many of my coworkers seem to have with it) is that it has some GUI related features, that somehow peek through the tools that use it (like JDE, ECB) without really integrating with them.=20 I have the good fortune to not only work at the same company as Paul K. but also in the same building. We have spent many an hour contemplating the various merits of Emacs things. Alternately, we come from surprisingly different backgrounds on how to use Emacs. My fingers have a hard time using his configuration. ;) Anyway, Paul has been very helpful with contributions to semantic, including the first imenu implementation, and the first draft code for what is now the semanticdb back-end abstraction. I would like nothing more than for there to be a JDE based back-end to semanticdb. It is my understanding that there is a method name nomenclature issue preventing a simple implementation, in addition to the usual gads, I don't have time type thing. Paul and I have different goals as well, as I need to somehow write an API that lets Java and Makefiles look sort-of the same to tools like ECB. Paul just wants to make Emacs be the best thing for working on Java. I could expound some more, but I need to give my kids a bath. Please don't take this as an insult to your great work (and the great work the ECB and JDE guys do) - it's just the impression of the user visible parts and how they interact. I have a pretty thick skin after 10 years of emacs contributions. ;) I appreciate your thoughtful suggestions. Some just take longer to tidy up than others. Thanks! Eric Thanks, jtl Thanks Eric =20 Nascif Abousalh-Neto [EMAIL PROTECTED] seems to think t= hat: Hi Eric, This approach can also be overwhelming and frustrating - I saw it first hand with some co-workers, having to stop their work to find out and turn off new features they didn't want in the first place. Another tactic might be to start with the more powerful features disabled and provide documentation on them, including screenshots. Curious users will find the info and tinker with them, and spread the word in wikis and mailing lists; less sophisticated users won't be frustrated with all the colors and extra fontification getting in their way, coming from nowhere, as soon as they install the new library. They might them be more receptive to turn them on later. Best regards, Nascif -Original Message- From: Eric M. Ludlam [mailto:[EMAIL PROTECTED] Sent: Saturday, April 23, 2005 8:46 AM To: Felix Dorner Cc: jde@sunsite.dk Subject: Re[2]: header line bugs and artifacts =20 Hi, =20 Stickyfunc mode puts the first line of the method/class=20 that is on the top line of the window into the header line. =20
Re[6]: header line bugs and artifacts
The distinctions between some of the APIs, and the various modes is very thin. My goal with semantic is to provide a set of APIs to get and manipulate tags. The various modes, such as boundary mode, or sticky func, are usually very thin wrappers around the built-in APIs that add things such as a face and the mode functions, and the hook-glue to make them work. For example, the meat of the tag-boundary mode is 28 lines, half of which is effectivly white-space. Anyway, I'll continue to tune the initial set up based on what input I get. I addressed the folding feature you mention below in a different email to the jde mailing list. Eric Nascif Abousalh-Neto [EMAIL PROTECTED] seems to think that: Hi again, I think those improvements will be nice. As for your question, I would guess that in 90% of the times what scares people away (and creates the urge to turn things off) are the semantic decorations, that 1) are visually very intrusive and 2) come as a complete surprise. I think a lot of users are getting CEDET because it is a requirememnt for JDE and/or ECB - so they may have not read its documentation, assuming it is just a under-the-covers library like a parser (which it is) not realizing it has also UI-affecting features. Underlines are also bad because they hide underscores (a small problem that can be annoying sometimes). Perhaps using the fringe now that Emacs allows you to have more control on what goes there? I think other IDEs (e.g. Eclipse) take that approach, of adding small icons on a left to give you feedback about the code. Just an idea :-) Regards, Nascif -Original Message- From: Eric M. Ludlam [mailto:[EMAIL PROTECTED] Sent: Thursday, April 28, 2005 8:08 AM To: Nascif Abousalh-Neto Cc: [EMAIL PROTECTED]; jde@sunsite.dk Subject: Re[4]: header line bugs and artifacts Hi, Thanks for the input. All I usually see is What is that and how to I turn it off?, and after an explanation, oh, that's neat. As such, I don't get this perspective. I've been fiddling with the header line already. In the next version, clicking on it will provide a menu with a few semantic things in it, and a what is this? note in it. The decorations should probably have an explicit list in a menu to be turned on and off. In the meantime, I will split the default code-helpers install into two sections. The basic code helpers will have the subtle stuff, and then move stickyfunc and decoration mode into the existing excessive setup fcn. I'll also update the semantic INSTALL file to make it easier to do a custom setup. To be clear, is it just the header line, and semantic decorations that scare people away, or the whole set of code helpers including imenu, summary-mode, completion mode, and what-not. Thanks Eric Nascif Abousalh-Neto [EMAIL PROTECTED] seems to think that: Hi Eric, This approach can also be overwhelming and frustrating - I saw it first hand with some co-workers, having to stop their work to find out and turn off new features they didn't want in the first place. Another tactic might be to start with the more powerful features disabled and provide documentation on them, including screenshots. Curious users will find the info and tinker with them, and spread the word in wikis and mailing lists; less sophisticated users won't be frustrated with all the colors and extra fontification getting in their way, coming from nowhere, as soon as they install the new library. They might them be more receptive to turn them on later. Best regards, Nascif -Original Message- From: Eric M. Ludlam [mailto:[EMAIL PROTECTED] Sent: Saturday, April 23, 2005 8:46 AM To: Felix Dorner Cc: jde@sunsite.dk Subject: Re[2]: header line bugs and artifacts Hi, Stickyfunc mode puts the first line of the method/class that is on the top line of the window into the header line. That way you can always see what function you are working on. It's something I always thought would be useful. The overline is simply a decoration to help divide different types of tags from eachother in the buffer. I copied the idea from some Java editor I saw a coworker using. It is a part of semantic-decoration-mode. You can concoct your own decorations with `define-semantic-decoration-style'. I have seen several times that people look at these things and go Eeww! What's all this? and after a little bit change their minds and think they are useful. You can turn all the code-helpers off and suffer no ill effect. I turn most things on in the default so you get exposed to them, and can later choose which tools you like and turn off the others. Eric Felix Dorner [EMAIL PROTECTED] seems to think that: That's the because of semantic stickyfunc mode. Try M-x global-semantic-stickyfunc-mode. OK thanks
Re[1]: Update Tag Table messages
Joseph Shraibman jks@selectacast.net seems to think that: I am being driven mad by these Update Tag Table messages that semantic is giving me. Whenever this happens emacs freezes on me for a few seconds. How can I turn this off? You can either increase the idle time via semantic-idle-scheduler-idle-time or you can disable global-semantic-idle-scheduler-mode. The advantage of the idle scheduler is that it provides tag summaries and some completion features. The disadvantage is the amount of time it may take to parse a file. If you don't use those, you can postpone tag updates till you request some action from semantic via some other mechanism. It is supposed to be possible to interrupt the incremental parsing mechanism by just pressing a key. It is unclear to me why this would not work for you. There are atomic operations that it doesn't work in, but I thought those were all pretty short. Eric -- Eric Ludlam: [EMAIL PROTECTED], [EMAIL PROTECTED] Home: http://www.ludlam.netSiege: www.siege-engine.com Emacs: http://cedet.sourceforge.net GNU: www.gnu.org
Re[1]: semantic-tag-folding.el
Hi, That is quite nifty. I wrote one also which is in CEDET CVS only right now, but yours is much niftier. I like the highlight that is the line down the side. That is a nice effect. The pre-existing function `semantic-momentary-unhighlight-tag' could do well to emulate it. In CEDET cvs, you will find new utility functions to make folding easier, including `semantic-set-tag-folded' which works well with isearch. That is in CVS in semantic-decorate.el. I my version, if I click on the little + or - in the fringe too much, my Emacs would crash, so I didn't persue it very far as I still need to produce a good bug report. Suraj Acharya [EMAIL PROTECTED] seems to think that: I've been working on a semantic-decoration style which allows tags to be folded and unfolded, and uses fringe bitmaps to indicate where the tags are. http://www.emacswiki.org/elisp/semantic-tag-folding.el From the commentary : [ ... ] Eric, I have a couple of questions about semantic-decorate-mode: 1) The definition of semantic-decoration-styles seems to be missing a :require attribute for semantic-decorate-mode. Currently, if I try to customize its value, after starting up emacs I end with each style listed twice in semantic-decoration-styles. That variable maintains itself. To fix that I probably need a second variable that is customized, that the first references as new items are auto-added. I'll have to look into that. 2) I need to add a keybinding for clicking on the fringe for this mode, it would be nice if there was key map for semantic-decoration-mode. If you look at semantic-fold.el from CVS, you will see how I accomplished that task with a semantic-folding-mode of its own. I tend to create lots of modes for all the features to make them easy to turn on and off without tromping other obscure features. 3) What is a good way to enable semantic-decoration-mode by default ? I tried (add-hook 'jde-mode-hook 'semantic-decoration-mode) but it complains Buffer Foo.java was not set up for parsing. If you look in the INSTALL, you will see there are several startup functions, and one is `(semantic-load-enable-code-helpers)' which happens to have decoration mode enabled by default. For any semantic mode, there is a `global-' version. If you use that, it will auto-add itself to any semantic enabled mode. Semantic modes need to be added to `semantic-init-hooks'. This hook is run after the major-mode hook, which is why the buffer is not yet setup for parsing. 4) Once semantic-decoration-mode is up and running and all the tags have been decorated, if I make any edits in a tag it looks like all the decorations for the tag are deleted and it is sent to the highlight-default function again. Is there any way for the function to be called with the old decorations intact so it can remove them only if it wants to ? [ ... ] I'm not quite sure what you mean. Are you trying to prevent a folded tag from being decorated by other decoration modes? That could be tricky as you probably want to keep some, but disable others. Some decoration modes purposely do not decorate short functions, such as boundary mode. Perhaps they should just be made savvy toward tags that are artificially shortened. The detection of this in a generic way may be challenging. Lastly, you might want to run `M-x checkdoc' on your code to make your doc-strings RMS compatible. Your code is nifty! Thanks. Eric -- Eric Ludlam: [EMAIL PROTECTED], [EMAIL PROTECTED] Home: http://www.ludlam.netSiege: www.siege-engine.com Emacs: http://cedet.sourceforge.net GNU: www.gnu.org
Re[1]: [CEDET-devel] semantic-tag-folding.el
Suraj Acharya [EMAIL PROTECTED] seems to think that: Hi Eric, Thanks for your answers. I've just checked out the code from CVS and it is neat. If you'd like I could take a shot at adding the addtional features from my code and creating a patch for semantic-fold.el. I have not spent enough time to decide which is the better implementation to start from... other than that mine crashes Emacs. ;) If you think the baseline in semantic-cvs is better, feel free to upgrade it. On Fri, 18 Feb 2005 22:27:23 -0500, Eric M. Ludlam [EMAIL PROTECTED] wrote: Hi, That is quite nifty. I wrote one also which is in CEDET CVS only right now, but yours is much niftier. I like the highlight that is the line down the side. That is a nice effect. The pre-existing function `semantic-momentary-unhighlight-tag' could do well to emulate it. In CEDET cvs, you will find new utility functions to make folding easier, including `semantic-set-tag-folded' which works well with isearch. That is in CVS in semantic-decorate.el. I'll take a look. Btw, if you set the 'reveal-toggle-invisible property on 'semantic-fold you can make the fringe bitmaps when if the tag is opened by reveal-mode. I'm not that familiar with that mode, but the doc makes it sound useful. I my version, if I click on the little + or - in the fringe too much, my Emacs would crash, so I didn't persue it very far as I still need to produce a good bug report. [...] 4) Once semantic-decoration-mode is up and running and all the tags have been decorated, if I make any edits in a tag it looks like all the decorations for the tag are deleted and it is sent to the highlight-default function again. Is there any way for the function to be called with the old decorations intact so it can remove them only if it wants to ? [ ... ] I'm not quite sure what you mean. Are you trying to prevent a folded tag from being decorated by other decoration modes? That could be tricky as you probably want to keep some, but disable others. What I'm trying to do is quite simple. Currently, if I unfold a tag, make some edits inside and then move outside it, then the next time the idle-timer kicks in and the tag is reparsed, it gets folded again. What I'd like is that it remember the fact that I unfolded the tag and not fold it. The simplest way to do this would be to somehow not clear the decorations on the tag at all, since any edits would not require them to be changed. Perhaps the decoration-style-highlight-default function could get called only for new tags, while something like decoration-style-update-after-edits could get called when the tag is updated. But I don't know much about semantic internals, so this might not make sense. In that case I just can store the fold state as an attribute on the tag overlay or somewhere else. [ ... ] Ah, I see. I used decoration mode to put the markers in the file, but not to actually fold the tags. Having tag folded or not is a separate attribute which I placed on the tags using the new function `semantic-set-tag-folded'. The option of folding all the tags (or not) is then part of the major mode initialization. As my version doesn't start stuff out folded, doing so would have conflicting goals. I've tried to set things up so files are not parsed until after the buffer is shown, with the exception of tags loaded in from a database. This conflicts with the goal of forcing the tags to be folded when the minor-mode starts up. Loading a file might look like this: - find-file - foo-mode - foo-mode-hook - semantic-setup-foo-mode - semantic-init - semantic-init-hook - semanticdb-semantic-init-hook-fcn - semantic-tag-folding-mode * If no tags from DB, setup a reparse hook otherwise fold everything. * file is displayed - semantic-idle-scheduler - semantic-fetch-tags - semantic-after-toplevel-cache-change-hook - semantic-folding-tag-mode-after-first-reparse-hook * Decide if you want to fold all your new tags. * remove hook from list. Does that make sense? One other thing I noticed: Here are a couple other comments I have about your code: Returns non-nil if TAG is to be considered for folding. TAG has to have valid start and end locations in the buffer. Customize `semantic-tag-folding-allow-folding-of' to influence the output of this function. (let ((c (semantic-tag-class tag))) (and (semantic-tag-end tag) (semantic-tag-start tag) You can use `semantic-tag-with-position-p' to find out if the tag has a position. Eric -- Eric Ludlam: [EMAIL PROTECTED], [EMAIL PROTECTED] Home: http://www.ludlam.netSiege: www.siege-engine.com Emacs: http://cedet.sourceforge.net GNU: www.gnu.org
Re[2]: java folding
[EMAIL PROTECTED] seems to think that: Jens Lautenbacher wrote: On Wed, 2005-02-02 at 11:59 +, Phillip Lord wrote: Guy == Guy Thomas [EMAIL PROTECTED] writes: Guy I first of all want to have a quick overview of the method Guy signatures in the current file. ECB might be what you are looking for. If this takes up too much screen real estate for you, imenu, or the classes menu might be what you want. Still it would be nice to have (as many other IDEs do) e.g. a small + sign in the margin/gutter besides every method to simply hide/show the body of that method. I don't see how this can work currently, at least I never had much luck with the current folding/hideshow or whatever package with java files. IMHO hideshow works well but nevertheless i agree with Jens about the +-sign in the fringe (at least GNU Emacs calls it so... ;-)... probably it should be possible to enhance hideshow.el so that this + is displayed besides each method (or whatever is foldable in a buffer) and clicking onto this + runs the appropriate commands of hideshow.el for the related method... I do not know the API Emacs offers for the fringe - but my assumption is this stuff should not be too hard - gud could be a good starting- example because displaying an arrow for the current debugging-location is in principle nothing else then displaying a +-sign at a certain location - the only thing i'm not sure if it is possible to make symbols displayed in the fringe clickable so a command can be bound to it?? [ ... ] Klaus, This is the sort of thing `semantic-decorate-mode' is for. If you take the `semantic-tag-boundary' in semantic-decorate-mode.el as a baseline (about 44 lines), all you need to change (other than names) is that the overlay be given a fringe/image to display instead of underlining the text. Activating the +/- to keyboard input is a different story. I gave it a quick test and learned I don't know as much about fringe images. I'll provide my hack to anyone who wants to tweak it to support fringe images properly. Eric -- Eric Ludlam: [EMAIL PROTECTED], [EMAIL PROTECTED] Home: http://www.ludlam.netSiege: www.siege-engine.com Emacs: http://cedet.sourceforge.net GNU: www.gnu.org
Re[4]: jde and emacs memory usage
Sounds like a good idea to me. I'll fix it. Eric Troy Daniels [EMAIL PROTECTED] seems to think that: At 11:02 PM 11/18/2004 -0500, Eric M. Ludlam wrote: Raul Acevedo [EMAIL PROTECTED] seems to think that: Wow, that chart thing is pretty cool. :) There are several random chart functions, plus a chart menu item in the Senator menu. Is there a reason chart-space-usage explicitly calls csh with call-process-region? My cygwin installation doesn't have csh, only bash and sh. At the very least, you should use shell-file-name. Troy Troy Daniels [EMAIL PROTECTED] 781-273-3388 x218 -- Eric Ludlam: [EMAIL PROTECTED], [EMAIL PROTECTED] Home: http://www.ludlam.netSiege: www.siege-engine.com Emacs: http://cedet.sourceforge.net GNU: www.gnu.org
Re[1]: jde and emacs memory usage
Hi, Here is something fun to try: M-x load-library RET chart RET M-x chart-emacs-storage RET It is possible that semantic's tag caches are filling up all your space. Check the size of your semanticdb.cache files for a vague clue of how much string space is being used by semantic. Eric Raul Acevedo [EMAIL PROTECTED] seems to think that: Right now my Emacs process is using 127 Megs of memory. While the *jde-beanshell-scratch* buffer size is 1239491, and another buffer I have is also just over 1 Meg, the total sum of all my buffers is still only a few megabytes, I definitely am not consuming anywhere near 100 megabytes in buffers. What could be taking up all the memory? How do I free it up? I've had emacs run out of memory a few times in the last couple of weeks. Raul -- Eric Ludlam: [EMAIL PROTECTED], [EMAIL PROTECTED] Home: http://www.ludlam.netSiege: www.siege-engine.com Emacs: http://cedet.sourceforge.net GNU: www.gnu.org
Re[3]: jde and emacs memory usage
Raul Acevedo [EMAIL PROTECTED] seems to think that: Wow, that chart thing is pretty cool. :) There are several random chart functions, plus a chart menu item in the Senator menu. It shows strings/2 as taking up 31 Meg, which I assume means 62 Megs and it shows it as strings/2 so the chart can be shown on a single buffer when the next biggest item is conses at only 1 Meg. I have 33 Java buffers averaging 10k each... so that's about 33 Meg, plus 62 Meg for strings, adds up to 100 Meg right there. Why so many strings? Most semantic.cache files are 50k, the biggest one I found is 150k. You might have some very large hidden buffers. Hidden buffers start with a space character. Probably your best task is just to get some sort of active monitor up watching Emacs and see what you do that makes it grow very large. Eric Raul On Thu, 2004-11-18 at 17:46 -0500, Eric M. Ludlam wrote: Hi, Here is something fun to try: M-x load-library RET chart RET M-x chart-emacs-storage RET It is possible that semantic's tag caches are filling up all your space. Check the size of your semanticdb.cache files for a vague clue of how much string space is being used by semantic. Eric Raul Acevedo [EMAIL PROTECTED] seems to think that: Right now my Emacs process is using 127 Megs of memory. While the *jde-beanshell-scratch* buffer size is 1239491, and another buffer I have is also just over 1 Meg, the total sum of all my buffers is still only a few megabytes, I definitely am not consuming anywhere near 100 megabytes in buffers. What could be taking up all the memory? How do I free it up? I've had emacs run out of memory a few times in the last couple of weeks. Raul
JDEE release status?
Any update on when the next version of JDE will be released? Java 5.0 (aka 1.5) is released, so I'm sure people would love to have support for that in either a new release or beta (2.3.4beta5 is a bit old and not ready for prime-time). I realize the CVS heads is available Thanks!
Re: how to get semantic to shut up
On Wed, 29 Sep 2004 13:39:54 -0700, Raul Acevedo wrote: How do I get semantic to shut up? It has a really, really annoying habit of constantly filling the minibuffer with annoying messages like incremental parser error and Variables: foo bar and who knows what other nonsense. I really couldn't care less. Is there some global setting to tell it to keep quiet and do its job? Most of the old debug messages in semantic are gone. The incremental parser error sounds like a bug that needs some reproduction steps so it can be fixed. The Variables: ... sounds like `semantic-idle-summary-mode'. If you don't like that, you should probably disable `semantic-idle-completions-mode' too. Eric
Re: how to get semantic to shut up
On Wed, 29 Sep 2004 15:04:25 -0700, Raul Acevedo wrote: On Wed, 2004-09-29 at 20:46 +, [EMAIL PROTECTED] wrote: Most of the old debug messages in semantic are gone. The incremental parser error sounds like a bug that needs some reproduction steps so it can be fixed. The Variables: ... sounds like `semantic-idle-summary-mode'. If you don't like that, you should probably disable `semantic-idle-completions-mode' too. I'm still getting messages from semantic-edits-incremental-parser (incremental parser error, Update Tag Table: blah, etc.). Looks like there's no easy way to disable these, short of either completely disabling the semantic incremental parser or of redefining working-temp-message to be a no-op. Is there a major disadvantage to doing either of those? I would expect that. The key now is to find out what editing situation causes it to throw the error, and to get a stack trace from it next time it occurs. If there is a way to narrow it down, that would be useful. Eric
Re: how to get semantic to shut up
On Wed, 29 Sep 2004 16:34:47 -0700, Raul Acevedo wrote: I've rarely seen the error messages, so I'm fine with those happening rarely. But the other messages aren't error messages; semantic-edits-incremental-parser-1 calls working-temp-message for a lot of informative messages. There should be a flag that tells it not to display those, unless you're debugging semantic or happen to care. Hmm, you are right. I thought they were under some sort of verbosity flag, but I can't find it anymore. I'll add one. I usually run with verbosities turned on to search for issues so I tend not to notice these things. Eric
Re[1]: Problem with query replace in beta?
Eric Raymond [EMAIL PROTECTED] seems to think that: I just upgraded to the latest beta. I noticed two weird things: 1) When I do a query replace, emacs seems to leave parts of the original string when it replaces string in some places (such as where a class name is expected) For example if it replace old to new in public class oldOne I get public class newldOne! This does not always break. It does seem to happen if JDEE can parse original string a class and if the idle thread kicks in during the replace? Hi, The automatic reparse mechanism attached to an idle timer fails to save the match data iff you let the parser reparse a previous between the time it matches and you make your decision. This has been fixed in CVS and will be out in a beta soon. 2) There is a gray bar at the top of each page which seems to repeat the first line in the file. Is there a way to make this go away? That is semantic-stickyfunc-mode, and can be turned off via that function. That is the default behavior when you are at the top of a buffer. It is supposed to show a summary of the function cut off at the top of a window. Eric -- Eric Ludlam: [EMAIL PROTECTED], [EMAIL PROTECTED] Home: http://www.ludlam.netSiege: www.siege-engine.com Emacs: http://cedet.sourceforge.net GNU: www.gnu.org
Problem with query replace in beta?
I just upgraded to the latest beta. I noticed two weird things: 1) When I do a query replace, emacs seems to leave parts of the original string when it replaces string in some places (such as where a class name is expected) For example if it replace old to new in public class oldOne I get public class newldOne! This does not always break. It does seem to happen if JDEE can parse original string a class and if the idle thread kicks in during the replace? 2) There is a gray bar at the top of each page which seems to repeat the first line in the file. Is there a way to make this go away?
Re[1]: JDE 2.3.4beta3: strange overlining
=?iso-8859-1?Q?Petter_M=E5hl=E9n?= [EMAIL PROTECTED] seems to think that: Hi, I'm getting the weird effect shown in the attached GIF using JDE 2.3.4beta3 and cedet1.0beta2 on Emacs 21.3. All non-public methods are 'overlined', which is really not pleasant. I guess it's some kind of highlighting of non-public methods that has gone wrong - does anybody know of a configuration setting to modify this behaviour or is it possibly a bug? [ ... ] That is part of `semantic-show-tag-boundaries-mode'. It actually overlines any method over a certain length (In characters.) It is a part of a set of decorating minor modes. This one is used to mimic a feature I saw in intellij, though the graphics of Emacs are a bit different. Eric -- Eric Ludlam: [EMAIL PROTECTED], [EMAIL PROTECTED] Home: http://www.ludlam.netSiege: www.siege-engine.com Emacs: http://cedet.sourceforge.net GNU: www.gnu.org
Re[2]: speeding up variable loading
Paul Kinnucan [EMAIL PROTECTED] seems to think that: [ ... ] The only solution to this problem that I can see is to provide a custom-set function for JDEE variables that updates the dirty variable list whenever the user customizes a variable during a session. Since the custom-set function is also invoked by the defcustom macro to set the variable s default value, the JDEE's custom-set function would have to detect that it is being invoked by a defcustom macro and not update the dirty variable list. This change will require adding the set function to every defcustom form in the JDEE code base but is probably worth it. [ ... ] Hi Paul, You may want to create a macro defjdeoption other other specific name for any variable that is part of a project, and reserve defcustom for variables that do not get saved. After the initial change to all sources, this will save you lots of time in the future. Eric -- Eric Ludlam: [EMAIL PROTECTED], [EMAIL PROTECTED] Home: http://www.ludlam.netSiege: www.siege-engine.com Emacs: http://cedet.sourceforge.net GNU: www.gnu.org
Re[2]: speeding up variable loading
Phillip Lord [EMAIL PROTECTED] seems to think that: [ ... ] This will also make it easy for third parties to piggy back into the JDE project system I think, without having to use the jde- namespace which the system currently depends on. I'd be quite happy to give this a go if you'd like. Might take a day or two (it's pub night tonight!). You loose the nice fontification of defcustom in the lisp though. Ain't there always something! [ ... ] See font-lock-add-keywords on how to fix that last problem. I think that is only available in newer versions of Emacs. Eric -- Eric Ludlam: [EMAIL PROTECTED], [EMAIL PROTECTED] Home: http://www.ludlam.netSiege: www.siege-engine.com Emacs: http://cedet.sourceforge.net GNU: www.gnu.org
RE: JDE tools to validate Tomcat's web.xml?
Michael, XML editing is handled by a completely different set of modes than those that comprise the JDEE. From emacs' standpoint, Tomcat's web.xml file is just another XML file -- no special role or relation to java, jdee, etc. So, you'll need to figure out what's wrong with your emacs configuration vis-a-vis XML editing, and that's not a JDEE issue. To take a wild guess, you probably have an error in your load path that is preventing emacs from finding psgml mode. If you're not experienced with emacs lisp, I suggest that you approach the problem incrementally: comment out most (all?) of your .emacs file and gradually add things back in to the point where they stop working correctly. You don't need to keep starting and stopping emacs: you can just mark a region that you'd like to evaluate and M-x evaluate-region. Or you can post your .emacs file to comp.emacs and ask for help -- that's a general purpose newsgroup and this list is for JDEE problems exclusively. Good luck, Eric -Original Message- From: Michael Coughlan [mailto:[EMAIL PROTECTED] Sent: Friday, December 19, 2003 6:38 AM To: [EMAIL PROTECTED] Subject: JDE tools to validate Tomcat's web.xml? Hello all, What emacs JDE tools are availble for validating a Tomcat web.xml file? Yesterday, I could edit my web.xml file and see the emacs JDE color coding the tags blue and data black. Hurray! As of today, I seem to have lost the pretty colors. : ( I treied to explicity set xml-mode, but that didn't fix the trouble. A test edit of foo.java shows that java-mode is still working for java files. (more pretty colors) I would love it if my JDE could help to validate my web.xml in some way. It's a pain to restart tomcat and parse the logs every time. I'd at least like to get my color coding back. Thanks, MPC Versions: I am running a Cignys Xwindows Server on Windows XP to connect to a Red Hat linux box running both the X Client Tomcat 5. On lunix... # rpm -qa | grep emacs emacs-21.2-33 eieio, speedbar, etc are all latest versions, but not the singular beta install
Re[2]: cedet-1.0beta1 /Semantic 2.0 and JDEE-2.3.2
Paul Kinnucan [EMAIL PROTECTED] seems to think that: Michael == Michael Schierl [EMAIL PROTECTED] writes: [ ... ] Michael (defcustom jde-enable-senator t Michael Enable senator minor mode. Michael This mode provides Java-aware buffer navigation and Michael searching commands. Michael :group 'jde-project :type 'boolean :set '(lambda (sym Michael val) Michael ;; Starting with version 1.4 beta 12 Semantic Michael ;; can globally enable `senator-minor-mode'. Michael ;; So don't override the global setting in Michael ;; JDE's buffers. Michael (or (and (boundp 'global-senator-minor-mode) Michaelglobal-senator-minor-mode) Michael t ;; added Michael by me Michael (mapc Michael(lambda (buff) Michael (save-excursion Michael(set-buffer buff) (senator-minor-mode Michael(if val 1 -1 Michael(jde-get-java-source-buffers))) Michael (set-default sym val))) Michael which seems to work as expected (although i might have Michael broken senator, but I don't care about that on my Michael machine). This effectively disables the resetting of existing open buffers when a user customizes jde-enable-senator. I would rather fix the bug then cripple a function in order to avoid it. I've narrowed the problem, i.e., resetting the value of jde-enable-senator triggers the error: Setting JDE variables to startup values... [3 times] wisent-java-tags-lexer: Wrong type argument: stringp, nil to the java version of the semantic-parse-region function. However, I cannot get any further because the semantic java parser is implemented via macros that cannot be enabled for edebugging, which is the only way I know how to find the exact line that causes a particular error. (BTW, I find the heavy reliance on macros a serious problem with the design of semantic 2.0; it makes debugging problems with semantic next to impossible, at least that has been my experience so far.) Perhaps Eric or David can find the line that causes the error or suggest a way for me to find it so this bug can be fixed. [ ... ] Hi Paul ( co) In semantic 2.0 we are spending brain power on a pair of goals in the parser generation area. Make it fast, and make it easy to implement new languages. The best way to make a lexer fast is to cut back on the number of regexp matches and remove as many function calls as possible. Side-effect: funny-macros for constructing custom lexers. On the make it easy side, Emacs Lisp is just not a great language for making an easy-to-read lexical analyzer. The macros let you write and mix individual analyzers in a convenient high-level way. As for debugging, there is the `semantic-lex-debug' command. This lets you debug the meaning of an analyzer, and is unfortunately not what you are really looking for. Also, it is easy to just re-evaluate the lexer construction element, and toggle-debug-on-error to see what aspect of a given lexer is failing, which is what I usually use. I will try and track you down at work sometime to see what solutions there may be. Eric -- Eric Ludlam: [EMAIL PROTECTED], [EMAIL PROTECTED] Home: http://www.ludlam.netSiege: www.siege-engine.com Emacs: http://cedet.sourceforge.net GNU: www.gnu.org
Re[2]: cedet-1.0beta1 /Semantic 2.0 and JDEE-2.3.2
Kai Grossjohann [EMAIL PROTECTED] seems to think that: Eric M. Ludlam [EMAIL PROTECTED] writes: On the make it easy side, Emacs Lisp is just not a great language for making an easy-to-read lexical analyzer. The macros let you write and mix individual analyzers in a convenient high-level way. My understanding was that Common Lisp has a configurable reader that is flexible enough so that one does not need to use lexers. Is this true? This I don't know, but it sounds like something CL would do. I wonder if it would be a workable approach to augment Emacs to have a better reader, then to use that as the lexer. I have thought of this often. My consideration was something like 'parse-partial-sexp'. The Emacs syntax-table really is exactly the way to build a nice lexical analyzer. I don't have practical experience with building parsers. Theoretically, one wouldn't need a lexer, just something that returns the next character from the input would be sufficient and the rest could be done from the grammar. (I mean that one doesn't need lex and could do everything in yacc instead.) But that makes parsers difficult to write, and also probably slow. So one does need lexers. But the theory seems to imply that the lexers don't need to be all-powerful: if the lexer is too stupid, then one can still do it from the grammar. [ ... ] Lexical analysis is nice because matching characters is really easy to to do compared to actual syntax parsing. Regexp matching is nice because you can have fairly complex lexical tokens such as #include. Mixed mode code such as C preprocessor and C code is made simpler to handle this way. Semantic's lexers are pretty simple. Syntax table regexps such as \s. or \s_ are used so specific generic analyzers can be used in most lexers. Anyway, the problem is how to debug a lexer. I can imagine this being even more difficult if it were a built-in. ;) If you were to look at a lex file sometime, it's syntax and content is usually really simple, along the lines of (from the man page): if|then|begin|end|procedure|function { some action here } which basically says if you see the characters i f, it makes a token if. Your action then does whatever. Semantic lex analyzers are the same, and could be: (define-lex-simple-regexp-analyzer my-analyzer obligatory docstirng if\\|then\\|begin\\|end\\|procedure\\|function 'keyword 0 ; index into the regexp (other code here)) so it is very similar. What is different is that you have to then combine your named analyzers via the define-lex call. Another big difference is that the semantic lexer can skip over lists like { a method body } as a single token. The process of identifying those characters is very fast (an Emacs built in) and when tagging a file, often those characters are not needed anyway. This short cut is what makes the C and Java semantic parsers fast enough to be usable in while editing without getting in the way too much. Have fun Eric -- Eric Ludlam: [EMAIL PROTECTED], [EMAIL PROTECTED] Home: http://www.ludlam.netSiege: www.siege-engine.com Emacs: http://cedet.sourceforge.net GNU: www.gnu.org
Re[3]: [jde] cedet-1.0beta1 /Semantic 2.0 and JDEE-2.3.2
The support for highlighting unmatched syntax is still rudimentary, but it is a longterm goal to highlight all syntactic issues. Parsing an entire file is pretty slow. Parsing only the visible parts, is one option. For missing ; after things already being parsed (method and type declarations) you will get the highlighting. The new incremental parser helps with this. Detecting missing imports or methods is not a part of any short term plan. The semantic analyzer has not been modified much as we've been concentrating on low level APIs, and speed. The version of eieio in the beta includes a feature similar to something I think is called flymake. You can run a build, and it will detect the errors, and highlight them for you. I think flymake may have more user features. The version in eieio is an example program for using a line highlighting feature. Eric =?iso-8859-1?Q?Henrik_Kj=E6r?= [EMAIL PROTECTED] seems to think that: Hi Will it support parsing of java files so the most obvious errors in a class, like a missing ;, missing imports, unknown methods, etc. can be caught before compiling. Henrik - Original Message - From: Eric M. Ludlam [EMAIL PROTECTED] To: Raul Acevedo [EMAIL PROTECTED] Cc: [EMAIL PROTECTED]; [EMAIL PROTECTED]; [EMAIL PROTECTED] Sent: Thursday, November 06, 2003 9:01 PM Subject: Re[1]: [jde] cedet-1.0beta1 /Semantic 2.0 and JDEE-2.3.2 Semantic 2.0 lives in cedet-1.0beta1.tar.gz on the cedet web page. There was no formal announcement as I'm still working through build and compatibility issues for various versions of Emacs. In fact, I'm a bit behind on a mountain of reports. For those willing to work around some of the problems, the overall response has been positive. There are a few patches for some problems in the cedet-devel mailing list archive for those brave enough to try it. Eric Raul Acevedo [EMAIL PROTECTED] seems to think that: Semantic 2.0 is out??? Paul Kinnucan wrote: Ed == Ed Soniat [EMAIL PROTECTED] writes: Ed I tried install JDEE-2.3.2 which claims compatibility with Ed Semantic 1.blah.blah or greater. Semantic 2.0 deleted Ed semantic-bnf in Aug/03 or so. Ed The change log in JDEE is out of date, makes it look like a Ed dead project. Install JDEE 2.3.3beta6 to get semantic 2.0 support and an updated change log. Paul -- Eric Ludlam: [EMAIL PROTECTED], [EMAIL PROTECTED] Home: http://www.ludlam.netSiege: www.siege-engine.com Emacs: http://cedet.sourceforge.net GNU: www.gnu.org -- Eric Ludlam: [EMAIL PROTECTED], [EMAIL PROTECTED] Home: http://www.ludlam.netSiege: www.siege-engine.com Emacs: http://cedet.sourceforge.net GNU: www.gnu.org
Re[1]: [jde] cedet-1.0beta1 /Semantic 2.0 and JDEE-2.3.2
Semantic 2.0 lives in cedet-1.0beta1.tar.gz on the cedet web page. There was no formal announcement as I'm still working through build and compatibility issues for various versions of Emacs. In fact, I'm a bit behind on a mountain of reports. For those willing to work around some of the problems, the overall response has been positive. There are a few patches for some problems in the cedet-devel mailing list archive for those brave enough to try it. Eric Raul Acevedo [EMAIL PROTECTED] seems to think that: Semantic 2.0 is out??? Paul Kinnucan wrote: Ed == Ed Soniat [EMAIL PROTECTED] writes: Ed I tried install JDEE-2.3.2 which claims compatibility with Ed Semantic 1.blah.blah or greater. Semantic 2.0 deleted Ed semantic-bnf in Aug/03 or so. Ed The change log in JDEE is out of date, makes it look like a Ed dead project. Install JDEE 2.3.3beta6 to get semantic 2.0 support and an updated change log. Paul -- Eric Ludlam: [EMAIL PROTECTED], [EMAIL PROTECTED] Home: http://www.ludlam.netSiege: www.siege-engine.com Emacs: http://cedet.sourceforge.net GNU: www.gnu.org
Re[1]: Is there for the JDEE an UML tool available.
Theo Kromhout van der Meer [EMAIL PROTECTED] seems to think that: Hello, I like the JDEE a lot. Because of the I can tailor the IDE. I like to work with Emacs. But now I need to with UML, is there a UML tool available that integrates with JDEE? [ ... ] The cogre tool can make some pretty small and primitive UML diagrams. http://cedet.sf.net/cogre.el An upcoming release of semantic/cogre (real soon now) will be able to generate complex diagrams via dot. Eric -- Eric Ludlam: [EMAIL PROTECTED], [EMAIL PROTECTED] Home: http://www.ludlam.netSiege: www.siege-engine.com Emacs: http://cedet.sourceforge.net GNU: www.gnu.org
Re[1]: Make imenu more appropriate for interactive use?
If you use senator, which comes with semantic, you can use the keybinding: C-c , j and its effect will be similar to a flattened imenu setup. Alternately, if you have senator running, look in the senator menu for Imenu Config. In there, just turn off anything that says bin, and you will get a flattened version of imenu. Eric Kai Grossjohann [EMAIL PROTECTED] seems to think that: I have bound C-c m to the imenu command. My idea was that I do C-c m on a method and then jump to the definition of this method. But, with JDEE installed, and thus Semantic installed, I instead need to do: C-c m invoke imenu c RET invoke Classes TAB RET select the only item, class.Foo m RET invoke Methods .foo TAB RETselect the foo method I'm glad that I have partial-completion-mode turned on, for otherwise that last line wouldn't have worked. I'm also glad that method return types usually don't contain periods in my code, for in that case my method would have failed, too. However, I like the Speedbar display with the submenus. Can I have the cake (better M-x imenu RET interface) and eat it, too (keep the Semanticized Speedbar display)? Like I said, when point is on a construct such as foo() or x.bar(), then IWBNI M-x imenu RET selected foo (or bar) as the default method to jump to, so that just hitting RET goes there. -- Eric Ludlam: [EMAIL PROTECTED], [EMAIL PROTECTED] Home: http://www.ludlam.netSiege: www.siege-engine.com Emacs: http://cedet.sourceforge.net GNU: www.gnu.org
Re[2]: Refactoring with JDE?
Andrew Hyatt [EMAIL PROTECTED] seems to think that: [ ... ] I would be very interested if someone who really knew semantic well could tell us if it could do the kind of parsing necessary for these more advanced features. It seems to have more then the advertised API, since you can get the speedbar to know about types of local variables, while the advertised API does not go into within-method information. Hi, Semantic 1.4 local variable parsing depends on programmers having some mysterious need to declare all local variables before writing any code. As such, it can use the regular tagging parser within a method body scope and do a reasonable job. That particular function is advertised in the manual under context parsing, not under the general tagging information. As Paul mentioned, Semantic 2.0 includes David Ponce's full bison port, and a Java parser that can parse an entire Java file, including method code, faster than the Semantic 1.4 parser could tag the same file. The new incremental parser handles about 90% of common edits without a full reparse. My long term goals include indentation and font lock engines, underlining bad syntax, and all that good stuff. My long term goals could probably keep several people busy for several decades. When I wrote semantic 1.0 I was learning what a parser is as I wrote it, so the road to semantic 2.0 includes a massive renaming campaign to give all the nouns the correct names and reduce confusion. I wrote the thing and it confused me. Now it does not. Anyway, all that's done. The parser API is an elegant thing to behold. The new tag searching and completion engines bring joy to my heart. The parser construction process will bring new languages into the fold. All the wacky new minor modes will lure the young-uns to the glory of Emacs. Well, something like that. Paul gave me a little too much credit perhaps. Your other question was when?. Here is the inside scoop on Semantic 2.0. Scoop 1: Semantic, EIEIO, Speedbar, EDE, and Corge will all be shipped together as one package called CEDET 1.0 and have one master Makefile, but each will maintain their own version number and identity, and can be installed one chunk at a time. It cuts down on maintenance since they are all co-dependent. Version number dependencies will be enfoced with a new inversion package. Scoop 2: We've been trying to bring the Doc to be at least vaguely relevant to what's in CVS, and get the build harness working to desired parameters (a bit of EDE development there.) That's it before a CEDET 1.0 beta1 is built and published. Note 1: Most major API functions had their names changed. We devised a nice obsoletion mechanism that lets ECB and the JDE work fine with the new version. They just throw lots of warnings during byte-compilation time. (At least I think the JDE works. Isn't that so David?) Note 2: This beta version of semantic will have no indentation or font lock magic in it. The substructure is there, but little attention has been placed on it yet. Note 3: I owe David Ponce a huge debt of gratitude for the amazing things he has done to bring Semantic 2.0 to where it is today. I am also indebted to Richard Kim who has been instrumental to much of the new documentation, and for writing the python parser. Have fun Eric -- Eric Ludlam: [EMAIL PROTECTED], [EMAIL PROTECTED] Home: http://www.ludlam.netSiege: www.siege-engine.com Emacs: http://cedet.sourceforge.net GNU: www.gnu.org
RE: Implement interface wizard.
Sounds good to me. -Original Message- From: Paul Kinnucan [mailto:[EMAIL PROTECTED] Sent: Monday, August 04, 2003 10:16 AM To: Ole Arndt Cc: jde Subject: Re: Implement interface wizard. Ole Arndt writes: Andy, Eric, Paul, [EMAIL PROTECTED] writes: I'd like to point out that if a method from an interface has no javadoc, the javadoc program will copy the documentation from the interface itself. Consequently, it might be a reasonable default to generate no javadoc at all in the implement interface wizard, or at least to make it optional. an alternative is to use the [EMAIL PROTECTED] inline tag. A combined solution would look like this: /** * [EMAIL PROTECTED] * * @see package.Class#origMethod */ The @see tag seems redundant to me. Also please note that @inheritDoc will not work for JDK releases earlier than JDK 1.4. So I'd like to offer an alternative proposal: If the JDK version used to generate the skeleton method implementation is earlier than 1.4, generate the skeleton without a comment. Otherwise, generate the skeleton with the following comment: /** * [EMAIL PROTECTED] */ - Paul
aspectj jde
Has there been any discussion/interest with the AspectJ folks about pulling their JDE extensions into the main JDE distro? I know they forked something called AJDE a while back, but now that they're off in eclipse-land, that's probably not a huge priority (I am speculating, with no information either way). In any event, I find myself writing aspectj code in emacs and wishing that JDE groked the syntax and keywords. Does anyone else feel my pain? More productively, I'm curious to hear Paul's thoughts on how JDE should (not) accomodate language extensions of this kind. There've been a lot of these over the years and JDE has wisely ignored most of them, but it's my opinion that AspectJ is likely to survive longer than some of the niche-extensions, like SQLJ. Is it possible to shovel everything associated with an extension of this kind into a minor mode? I'm guessing it won't work with semantic unless someone puts together a grammar for the bovinator, but could keywords and indentation be done that way? Apologies for the disconnected thoughts -- I'm not really sure what the right thing to do is in this case. Eric
RE: jde.sunsite.dk site
Apropos -- perhaps if the JD Edwards acquisition goes through we can drop the extra 'e' again. Only half kidding, Eric -Original Message- From: Sprenger, Karel [mailto:[EMAIL PROTECTED] Sent: Thursday, June 05, 2003 11:41 PM To: Jeff Jensen; [EMAIL PROTECTED] Subject: RE: jde.sunsite.dk site Jeff, Try http://jdee.sunsite.dk/. The 'e' was added a few month ago. Cheers, Karel -Original Message- From: Jeff Jensen [mailto:[EMAIL PROTECTED] Sent: Friday, June 06, 2003 04:55 To: [EMAIL PROTECTED] Subject: jde.sunsite.dk site Hi - Has the site been down for days or is it just me (and the only page that is not working!)? I have not seen any messages nor updates on the sunsite.dk page.
Re[2]: Syntax error indication oon the fly....the beginning...
Chitale, Sandip V [EMAIL PROTECTED] seems to think that: [ ... ] 2. Indicate the error messages using an underline (or user customizable) face (say!) over the extent of the buffer text causing the error. (unfortunately not all compilers give the column or column range where the error is). 3. User can get details of the error message with mouse-over or some key combination (I need to check if 'help-echo text property will work for that). [ ... ] Hi, I bumped into this thread a little late I guess. I had a plan to do this with a fancy utility of mine, but never got around to it. I brushed off the old plan and hacked it together. Your mileage may vary, but it is working well in grep buffers at the moment. It requires EIEIO to get the linemark package which any good JDEE user should have. Hopefully it doesn't require the CVS version of linemark.el for Emacs. I think I avoided those features. I cannot vouch for its usefulness on XEmacs as the release version of linemark has an odd face related bug, and lmcompile is using 'help-echo to do the mouse-overs. That's what you get for quick hack I guess. To use it, perform a grep or compile, and use `lmcompile-do-highlight'. Sick of it, use `lmcompile-clear'. Because it uses the `linemark' package at it's core, you set up the highlights once, and the linemark harness handles keeping all the overlays up to date as you load different files in and out of memory. The below is just a harness of what can be done with linemark. I've adapted linemark for specialized tasks to great effect on other projects, so there are many more possible features that could be added. See the visual studio bookmark look alike at the end of linemark.el for examples. This functionality has little to do with what was already posted. It is tackling the problem from a completely different angle. Enjoy Eric - ;;; lmcompile.el --- highlight compile error lines ;; ;; Author: Eric M. Ludlam [EMAIL PROTECTED] ;; Maintainer: Eric M. Ludlam [EMAIL PROTECTED] ;; Keywords: lisp ;; ;; Copyright (C) 2003 Eric M. Ludlam ;; ;; This program is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; ;; This program is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to ;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. ;; ;;; Commentary: ;; ;; This package uses the compile package, and the linemark package to ;; highlight all lines showing errors. ;;; Commentary: ;; (require 'linemark) ;;; Code: (defclass lmcompile-linemark-group (linemark-group) ( ) Linemark Group for compile error highlights.) (defclass lmcompile-linemark-entry (linemark-entry) ((errormarker :initarg :errormarker :type marker :documentation Marker pointing to the source of the match.)) Linemark Group for one compile error highlight. Tracks additional information about the error.) (defmethod linemark-new-entry ((g linemark-group) rest args) Create a new entry for G using init ARGS. (let ((f (plist-get args :filename)) (l (plist-get args :line))) (apply 'lmcompile-linemark-entry (format %s %d f l) args))) (defmethod linemark-display ((e lmcompile-linemark-entry) active-p) Set object E to be active or inactive. ;; A bug in linemark prevents individual entry colors. ;; Fix the color here. (when active-p (condition-case nil (save-excursion (set-buffer (marker-buffer (oref e errormarker))) (goto-char (oref e errormarker)) (let ((face (cond ((re-search-forward error (point-at-eol) t) 'linemark-stop-face) ((re-search-forward warning (point-at-eol) t) 'linemark-caution-face) (t 'linemark-funny-face (oset e :face face) )) (error nil)) ) ;; Do the rest of our work (call-next-method) ;; Add a tool tip (when (and active-p (slot-boundp e 'overlay) (oref e overlay)) (let ((em (oref e errormarker)) (txt nil)) (condition-case nil (save-excursion (set-buffer (marker-buffer em)) (goto-char em) (setq txt (buffer-substring-no-properties (point-at-bol) (point-at-eol))) ) (error nil)) (when txt (linemark-overlay-put (oref e overlay
Re[3]: JDEE plugins (was JUCI)
Nick Sieger [EMAIL PROTECTED] seems to think that: PK == Paul Kinnucan [EMAIL PROTECTED] writes: PK Eric M. Ludlam writes: Something I always wanted to do was use EIEIO to wrap Java objects. EIEIO could act as a proxy for Java objects, and there could be Java object proxies for EIEIO objects. In this world people who know Emacs could hack Java, and vice-versa w/out having to know the other language much. PK I've suggested to Nick Sieger that he use eieio proxies for the PK Lisp counterparts that JUCI generates for Java classes. I'm very interested in doing this, and as soon as I find time to learn enough about EIEIO to feel comfortable I'll do this. But for now, a Java method call is mapped to a plain-old-defun :-| [ ... ] I can help you do this. I don't have a working JDEE install at home though. I can help you create new classes and methods at runtime instead of in code. The secret is that if you want to use `defclass' or `defmethod', but don't want to write out code, you can use `eieio-defclass' and `eieio-defmethod' instead. Let me know what data you have and what you would ideologically like, and I can try to prototype it for you to get you started. Eric -- Eric Ludlam: [EMAIL PROTECTED], [EMAIL PROTECTED] Home: http://www.ludlam.netSiege: www.siege-engine.com Emacs: http://cedet.sourceforge.net GNU: www.gnu.org
Re[3]: FW: Syntax error indication on the fly....
The semantic parser is a combination of what might think of as a compiler's parser, and an iterative loop. A traditional compiler will sometimes spit out the warning: too many errors, giving up. This is because it gets lost in the source file due to perhaps a missing { or }, and it can't figure out what is going on. To avoid this problem in semantic, the portion of a traditional compiler that identifies multiple top-level nonterminals (functions, variables, etc) is left out of the grammar, and is handled in Emacs Lisp code instead. What this means is if you start parsing at a given point in the buffer, if the grammar completely fails to identify anything, that parse step exits with out using any lexical tokens. When this happens, the Iterative Emacs Lisp looper marks that bit of syntax as unmatched, moves forward 1 lexical token, and tries again. That way, if you have a stray foo floating in between methods, it gets labeled as unmatched. A traditional parser usually can find this error and move on as well, but the support structure needed for error handling in a traditional grammar file is much more complicated. David Ponce wrote a nice piece describing the differences in the wisent parser generator manual currently residing in Semantic's CVS repository. Enjoy Eric Chitale, Sandip V [EMAIL PROTECTED] seems to think that: Eric, Can your or someone explain what the term unmatched syntax means ? Does it mean syntax errors ? Does it mean syntax and semantic errors ? Does it mean all the compilation errors ? thanks, sandip -Original Message- From: Eric M. Ludlam [mailto:[EMAIL PROTECTED] Sent: Friday, February 21, 2003 10:10 AM To: Berndl, Klaus Cc: [EMAIL PROTECTED]; [EMAIL PROTECTED] Subject: Re[1]: FW: Syntax error indication on the fly Semantic only shows unmatched syntax for definitions. All code that resides inside the body of a function is skipped over. This is to make parsing go faster. Semantic 2.0 CVS includes a full Java parser. My assumption is that it could then do unmatched syntax for all the code, though I am not sure how to turn it on. That is something David Ponce could better answer. Eric [ ... ] -- Eric Ludlam: [EMAIL PROTECTED], [EMAIL PROTECTED] Home: http://www.ludlam.netSiege: www.siege-engine.com Emacs: http://cedet.sourceforge.net GNU: www.gnu.org
Re[2]: Introspection based Java class browser....also demonstrates alittle bit of java and lisp integration...
Berndl, Klaus [EMAIL PROTECTED] seems to think that: [ ... ] Differences to Sandips code: - uses ECB method-window to display the class-contents - uses semantic for getting the contents of a class - needs the source-file of the class to work The first point can be seen as advantage or disadvantage ;-) Especially the latter point is a disadvantage because it prevents from working for classes which are only available as *.class-file or within a jar-file... [ ... ] Hi Klaus, Your last point here about semantic not being able to look into a .class file is valid, however the CVS version semantic 2.0 semanticdb subsystem was recently enhanced to be extensible beyond just typical language parsers. The idea was Paul's originally, and I expanded on that. The basic premise is to sub-class a semanticdb class, and implement all the search methods. Your search methods can then call external programs, or whatever you like before returning a results table. There is an example that will search all Emacs Lisp symbols inside Emacs, regardless of having the sources available. The only part that needs to be done to make your new program support .class files is to extend the database. I can provide you with more details and perhaps start the process if you would like to try extending semanticdb. Have fun Eric -- Eric Ludlam: [EMAIL PROTECTED], [EMAIL PROTECTED] Home: http://www.ludlam.netSiege: www.siege-engine.com Emacs: http://cedet.sourceforge.net GNU: www.gnu.org
Re[1]: AW: Semantic 1.4.1 is released!
Berndl, Klaus [EMAIL PROTECTED] seems to think that: Hello Eric and David! I just downloaded semantic 1.4.1 and had noticed the following: 1. Bug in semantic-texi.el: It is not enough to add (defopt . 1) to semantic-texi-name-field-list but is also necessary to add opt to semantic-texi-super-regex: (defvar semantic-texi-super-regex ^@\\(chapter\\|\\(sub\\)*section\\|unnumbered\\(\\(sub\\)*sec\\)?\\|\ \\(chap\\|\\(sub\\)+\\|major\\)?heading\\|appendix\\(\\(sub\\)*sec\\)?\\|\ centerchap\\|def\\(var\\|un\\|fn\\|opt\\)x?\\) Regular expression used to find special sections in a Texinfo file.) Thanks. I'll let David add that to the 1.4.1 branch. 2. Problems with shipped semantic-util-modes.el: With 1.4.1 there is after every autom. (partial) reparse a recenter of the source-buffer which is pretty annoying. I have replaced the version of 1.4.1 with that one shipped with 1.4 and all is working fine, i.e. no recentering of the source-buffer. I'm wondering why the version of semantic-util-modes.el in 1.4.1 is X-RCS: $Id: semantic-util-modes.el,v 1.17 2001/12/08 03:12:39 whereas the version of 1.4 seems to be much newer: X-RCS: $Id: semantic-util-modes.el,v 1.17.2.2 2002/05/07 02:40:50 There are not many differences between these versions of semantic-util-modes.el but nevertheless they seem to be the reason for the annoying recenter behavior of the source-buffer after autom. reparsing. [ ... ] Semantic 1.4 was released on a 1.4 branch. The bug you describe was in semantic before 1.4 was released. Perhaps the 1.4.1 file was accidentally taken from a pre 1.4 version? That would certainly explain things. I keep my 1.4.1 install at work, so I'll double check when I get in. Eric -- Eric Ludlam: [EMAIL PROTECTED], [EMAIL PROTECTED] Home: http://www.ludlam.netSiege: www.siege-engine.com Emacs: http://cedet.sourceforge.net GNU: www.gnu.org
Re[2]: Senator-Analyze-Speedbar Class Browser error
Raul Acevedo [EMAIL PROTECTED] seems to think that: Eric M. Ludlam wrote: If I select Senator - Analyze - Speedbar Class Browser, I get an error: Symbol's function definition is void: semanticdb-find-nonterminal-by-token. Any ideas what this is about? You need have semanticdb enabled for that class browser to work. This commonly is enabled when you have `semantic-turn-useful-things-on' set when you installed semantic. I have (setq semantic-load-turn-everything-on t) enabled, presumably that's what I need. Is this correct? The program you found is supposed to show your classes, and the inheritance between them. It only works after semanticdb has seen all the files you are interested in so it can correlate the tags. My copy in CVS seems to have developed a speedbar refresh problem. I'll have to investigate more. How do I get semanticdb to do this? If semanticdb is enabled (Use `global-semanticdb-minor-mode' to toggle it on and off) All you have to do then is visit those files you care about in an Emacs buffer. Semanticdb takes care of the rest. A future version of semantic will have a bridge API enabling the possibility of semantic programs querying .class files via whatever mechanism some JDE hacker may choose to use. Well, I have no idea what that means, but it sounds cool. :) [ ... ] That was a reminder to those developing cool new JDEE features that I'm thinking about them, and want to make their lives easier. Eric -- Eric Ludlam: [EMAIL PROTECTED], [EMAIL PROTECTED] Home: http://www.ludlam.netSiege: www.siege-engine.com Emacs: http://cedet.sourceforge.net GNU: www.gnu.org
Re[2]: JDEE and emacs-wiki
Paul Kinnucan [EMAIL PROTECTED] seems to think that: Daniel Serodio writes: Well, I've found some more info on this error. emacs-wiki defines a line-beginning-position function with 1 optional argument, and jde-bug defines a function with the same name but no arguments. In emacs-wiki.el: (unless (fboundp 'line-beginning-position) (defsubst line-beginning-position (optional N) (save-excursion (beginning-of-line N) (point In jde-bug.el: (when jde-xemacsp (defun line-beginning-position () (point-at-bol)) (defun line-end-position () (point-at-eol))) How can I solve this conflict? Thanks for any help. I apparently created this code because XEmacs does not (or did not) define these functions. I should have included the optional argument, which I will do in the next release. Meanwhile, you can just edit jde-bug.el to read: [ ... ] It is much safer to wrap such functions under new names like this: (if (not (fboundp 'whatever)) (defun jde-whatever () (code)) (defalias 'jde-whatever 'whatever)) and you avoid all upgrade problems. My packages were often being whacked by random tools that redefine code like this, including XEmacs' own compatibility layer that wasn't that compatible a few years ago. I haven't had problems since I started doing the above. Eric -- Eric Ludlam: [EMAIL PROTECTED], [EMAIL PROTECTED] Home: http://www.ludlam.netSiege: www.siege-engine.com Emacs: http://cedet.sourceforge.net GNU: www.gnu.org
Re: cedet.sourceforge.net refusing connections
John Collins [EMAIL PROTECTED] seems to think that: I'm trying to set up JDEE on a new machine, and I can't get at the emacs tools eieio, semantic, etc. Any news? [ ... ] Every once in a while the sourceforge download system fails. I don't know why, but it usually comes back in a little while. Eric -- Eric Ludlam: [EMAIL PROTECTED], [EMAIL PROTECTED] Home: http://www.ludlam.netSiege: www.siege-engine.com Emacs: http://cedet.sourceforge.net GNU: www.gnu.org
Re[1]: How to turn off editing recenter feature
Will Taylor [EMAIL PROTECTED] seems to think that: When I am editing and have unbalanced curly brackets and pause for more than 3-4 seconds, the buffer is automatically recentered. I dislike this feature and would like to know how to turn it off. I did not see anything in the User's Guide about it. [ ... ] Hi, This happens when global-semantic-auto-parse-mode is enabled. There is a bug that causes this unfortunate behavior when there is a list error during the lexical step. I don't remember what the current state of that bug is though I thought it was fixed in semantic 1.4. Eric -- Eric Ludlam: [EMAIL PROTECTED], [EMAIL PROTECTED] Home: http://www.ludlam.netSiege: www.siege-engine.com Emacs: http://cedet.sourceforge.net GNU: www.gnu.org
Re[1]: wrap compiler output lines
Marcel Schepers [EMAIL PROTECTED] seems to think that: Does anyone know how to wrap the compiler output so that scrolling in the output window wouldn't be necessary anymore? [ ... ] See the value of `scroll-step'. You can probably locally set this to a value = to the lines in the window, then it will appear to wrap, and not scroll. Eric -- Eric Ludlam: [EMAIL PROTECTED], [EMAIL PROTECTED] Home: http://www.ludlam.netSiege: www.siege-engine.com Emacs: http://cedet.sourceforge.net GNU: www.gnu.org
Re[1]: semantic-1.4 does not load
van Rooyen GC [EMAIL PROTECTED] seems to think that: I tried to upgrade to semantic-1.4, speedbar-0.14beta4, ecb-1.80, eieio-0.17, but the following error occurs. [ ... ] Debugger entered--Lisp error: (void-function semantic-map-buffers) (semantic-map-buffers (function (lambda nil ...))) (cond (( arg 0) (remove-hook ... mode) (semantic-map-buffers ...) nil) (( arg 0) (add-hook ... mode) (semantic-map-buffers ...) t) (t (memq mode semantic-init-hooks))) semantic-toggle-minor-mode-globally(semantic-show-dirty-mode 1) (setq global-semantic-show-dirty-mode (semantic-toggle-minor-mode-globally (quote semantic-show-dirty-mode) arg)) global-semantic-show-dirty-mode(1) byte-code(,D Hi, There is a require bug in semantic-util-modes. The simplest short term solution before I get my patch collection for semantic 1.4.1 together is to add this to your .emacs file in front of (require 'semantic) (autoload 'semantic-map-buffers semantic-util) which will let Emacs know where to find it. Eric -- Eric Ludlam: [EMAIL PROTECTED], [EMAIL PROTECTED] Home: www.ultranet.com/~zappoSiege: www.siege-engine.com Emacs: http://cedet.sourceforge.net GNU: www.gnu.org
Re[1]: Error when using eieio-0.17 with jde-2.2.9beta10.
Jake Gage [EMAIL PROTECTED] seems to think that: Hey there, [ ... ] It looks like Eric Ludlam has released eieio-0.17 on 2002-08-06 (looks like two days ago), which beta10 doesn't seem to like (the CVS version might already be changed, and I'd be much obliged if someone could tell me if this is the case). In any case, on: [ ... ] Loading eieio-opt...done The wrong version of Eieio is installed, please install 0.17beta3. Reverting my version of EIEIO and awaiting instructions. Thanks much. [ ... ] Howdy. All recent editions of my tools (semantic, eieio, and speedbar) now have a function called `PACKAGENAME-require-version'. JDE currently has its own compare function. The version requirement in my tools will know when a new release of a tool is not BACKWARDS compatible, and otherwise will allow newer versions to be used with a JDE released with an olderversion. It would be up to Paul to know when a needed feature was introduced. I recommend that the JDE use these functions, as it will prevent this type of problem with new releases in the future. I would guess it is ok to use eieio 0.17 with the JDE as it passes the EIEIO 0.17beta4 tests. Eric -- Eric Ludlam: [EMAIL PROTECTED], [EMAIL PROTECTED] Home: www.ultranet.com/~zappoSiege: www.siege-engine.com Emacs: http://cedet.sourceforge.net GNU: www.gnu.org
Re[1]: eieio-named is not a class?
This happens sometimes when eieio is not byte compiled correctly. Delete all .elc files in eieio, verify there is no other eieio on your path, and re-run the Makefile. Eric Hongbin Wang [EMAIL PROTECTED] seems to think that: I am trying to install jde on emacs 21.1, I got the following error message. Any idea? Thanks! - hongbin error message Debugger entered--Lisp error: (error Given parent class eieio-named is not a class) signal(error (Given parent class eieio-named is not a class)) error(Given parent class %s is not a class eieio-named) (if (not (class-p ...)) (error Given parent class %s is not a class (car pname)) (if (not ...) (aset ... class-children ...)) (mapcar (lambda ... ...) (class-option ... :custom-groups)) (aset newc class-parent (cons ... ...))) (if (and (car pname) (symbolp ...)) (if (not ...) (error Given parent class %s is not a class ...) (if ... ...) (mapcar ... ...) (aset newc class-parent ...)) (error Invalid parent class %s pname)) (while pname (if (and ... ...) (if ... ... ... ... ...) (error Invalid parent class %s pname)) (setq pname (cdr pname))) (progn (while pname (if ... ... ...) (setq pname ...)) (aset newc class-parent (nreverse ...))) (if pname (progn (while pname ... ...) (aset newc class-parent ...)) (if (eq cname ...) (if ... ...) (setq clearparent t) (if ... ...) (aset newc class-parent ...))) (let* ((pname ...) (newc ...) (oldc ...) (groups nil) (options nil) (clearparent nil)) (aset newc 0 (quote defclass)) (aset newc class-symbol cname) (when oldc (aset newc class-children ...)) (cond (... ...) (... ...)) (setq options (if ... ... ...)) (if pname (progn ... ...) (if ... ... ... ... ...)) (set cname cname) (let (...) (fset csym ...)) (let (...) (fset csym ...)) (eieio-copy-parents-into-subclass newc superclasses) (put cname (quote eieio-class-definition) newc) (while fields (let* ... ... ... ... ... ... ... ... ... ... ... ... ...) (setq fields ...)) (aset newc class-public-a (nreverse ...)) (aset newc class-public-d (nreverse ...)) (aset newc class-public-doc (nreverse ...)) (aset newc class-public-type (apply ... ...)) (aset newc class-public-custom (nreverse ...)) (aset newc class-public-custom-label (nreverse ...)) (aset newc class-public-custom-group (nreverse ...)) (aset newc class-protection (nreverse ...)) (aset newc class-initarg-tuples (nreverse ...)) (aset newc class-class-allocation-type (apply ... ...)) (aset newc class-class-allocation-values (apply ... ...)) (let* (... ... ... ... ... ... ...) (while pubsyms ... ... ... ... ...) (aset newc class-symbol-obarray oa)) (fset cname (list ... ... ... ...)) (put cname (quote variable-documentation) (class-option-assoc options :documentation)) (let (...) (mapcar ... groups) (if ... ... ...)) (aset newc class-options options) (if clearparent (aset newc class-parent nil)) (if (and ... ...) (message Bootstrapping objects...done)) (let (...) (aset cache 0 ...) (aset cache object-class cname) (aset cache object-name ...) (let ... ...) (aset newc class-default-object-cache cache)) newc) eieio-defclass(semantic-cb-token (eieio-named eieio-speedbar) ((buttontype :initform statictag) (buttonface :initform speedbar-tag-face) (token :initarg :token :type semantic-token :documentation Semantic token which represents a type.) (table :initarg :table :type semanticdb-table :documentation This is the database table that `token' was found in.\nBe sure to use this field when loading a token's file into memory.) (container :initarg :container :type (or null semantic-cb-token) :documentation This is the CB object containing this token.\nCB Containers are usually types with attributes of methods.)) (A single semantic token.\nTokens represented in the Class Browser database may not be loaded\nin memory, so this forms the structure needed to access them.)) (progn (eieio-defclass (quote semantic-cb-token) (quote ...) (quote ...) (quote ...))) (eval-and-compile (eieio-defclass (quote semantic-cb-token) (quote ...) (quote ...) (quote ...))) (defclass semantic-cb-token (eieio-named eieio-speedbar) ((buttontype :initform statictag) (buttonface :initform speedbar-tag-face) (token :initarg :token :type semantic-token :documentation Semantic token which represents a type.) (table :initarg :table :type semanticdb-table :documentation This is the database table that `token' was found in.\nBe sure to use this field when loading a token's file into memory.) (container :initarg :container :type ... :documentation This is the CB object containing this token.\nCB Containers are usually types with attributes of methods.)) A single semantic token.\nTokens represented in the Class Browser database may not be loaded\nin memory, so this forms the structure needed to access them.) eval-buffer(#buffer *load*6 nil semantic-cb nil t) load-with-code-conversion(c:/apps/emacs/emacs-21.1/site/semantic-1.4/semant ic-cb.el semantic-cb nil t) require(semantic-cb) (progn (require (quote semantic-cb)) (require (quote semantic
Re: all of these email virus and junk e-mail
Yup I understand the issue. It will be a judgement call sort of thing for the moderator. We don;t need to get rid of all the spam, just most of it. Notice how much quieter the list is today? Could be a coincidence Steinar Bang wrote: Eric Raymond [EMAIL PROTECTED]: [snip!] - Revoke membership to repeat offenders of virus/spam Note that spammers steal addresses. I get lots of bounce messages from spam that appears to come from one of my addresses.
Re: all of these email virus and junk e-mail
Do the spammers subscribe to the list? Can they handle a two step signup process (described below). If either of these is no, then the following measures might cut down on the noise (which IMHO is destoying the list): - Limit posting privileges to members of the list - Make the signup process require a a two step process requiring positive confirmation to an email (e.g., when you subscribe, server sends an email which must be replied to in order for the subscription to be complete). - Revoke membership to repeat offenders of virus/spam Paul Kinnucan wrote: Jim Snyder writes: Paul... Is there anything that can be done about the infected emails and junk email? Seems like the last few months more and more of this stuff is occurring. Maybe there are more and more users interested in jdee ;-), which would be understandable. Spammers love lists. It is inevitable that with the passage of time the JDEE list will be discovered and targeted by an ever growing number of spammers. The options are filtering or censorship. I don't want the responsibility for vetting incoming mail. Filtering options as I understand it are either centralized (i.e., filtered by Sunsite Denmark) or filtering by individual members. I'm cc'ing this to the Sunsite staff in case they have any centralized filtering solutions. Paul
Re[1]: speedbar and auto-moving of my mouse pointer
If you select an item in speedbar via the mouse, the mouse should not move. If you use the keyboard, the act of moving keyboard focus to the editing frame moves the mouse also. Speedbar doesn't try to move the mouse, it is just the frame switching code. Try C-x 5 o after making a few frames. I think this is a side effect of supporting focus follows mouse window managers. (My personal favorite) Eric Jim Snyder [EMAIL PROTECTED] seems to think that: Dear Paul... In my current version of JDEE, when I select a .java file from the = speedbar, jdee properly loads the file, however my mouse cursor gets = automatically moved to emacs' upper right corner.=20 Is this auto-moving of my mouse cursor part of speedbar? If so, how can = I turn it off? BTW, this happens when my X-server is either linux redhat 7.2 and exceed = 7.0 in which I've used for over the last 6 months but this auto-moving = has been occurring for the last 1-2 months. SunOS 5.8 Generic_108528-14 sun4u sparc SUNW,Ultra-2 EMACS 20.7.1 JDE_ELIB_VERSION=3D1.0 JDE_EIEIO_VERSION=3D0.17beta4 JDE_ECB_VERSION=3D1.31 JDE_COGRE_VERSION=3D0.2 JDE_VERSION=3D2.2.9beta9.1 JDE_SPEEDBAR_VERSION=3D0.14beta3 JDE_SEMANTIC_VERSION=3D1.4beta14 JDE_EDE_VERSION=3D1.0.beta2 Thanks...Jim Jim Snyder Chief Scientist Copper Key Technologies 402 High Point Dr., #201 Cocoa, FL. 32926 www.copperkey.com 321.635.8194 [EMAIL PROTECTED]
Re[1]: Using semantic + import statement to open class source
Hi, The function `semantic-find-nonterminal' will use `semantic-find-dependency' on import statements. This function in turn uses `semantic-dependency-include-path' to seek out where a file is. semantic-java does not yet support overloading `semantic-find-dependency' nor `semantic-dependency-include-path'. If one of these mechanisms were extended in JDE's context, then tools such as ECB, Speedbar, and Senator could all successfully jump to imports without the need for specialty commands. Doing so would be as simple as using the existing code, and using semantic's function overload facility to link them together. There is also the work that Paul mentioned he is doing in the semantic database which I do not think touches upon either of these two functions. Perhaps semantic's find-dependency function should go through semanticdb in the future. (It was written before the database.) Have fun Eric Timothy Babin [EMAIL PROTECTED] seems to think that: Hi, I found the java-open package written by Rajeev Karunakaran to be quite useful and quick. I have written some functions which use the same concept but use semantic to get the import statements instead of reg-ex. This is very usefull if you don't have class files for the source that you are looking for and for speed. It would be nice if this could be used to open class source files before using the beanshell or if the user could specifiy which method to use first. It would also be nice to then fallback to using tags. Let me know what you think. (defun jde-custom-find-fqimport (import-list class) Opens the source file for `class' if a fully qualified import statement for the class is found in `import-list' and returns t; returns nil otherwise. Uses `jde-find-class-source' to open the file (let ((current-import) (match-found nil) (iterator import-list)) (while (and iterator (not match-found)) (setq current-import (car (car iterator))) (message current-import) (if (string-match (concat .*\\. class \\') current-import) (progn (if (not (jde-find-class-source current-import)) (message Can't find source)) (setq match-found t))) (setq iterator (cdr iterator))) match-found ) ) (defun jde-custom-find-starimport (import-list class) Opens the source file for `class' if a star import statement for the class is found in `import-list' and returns t; returns nil otherwise. Uses `jde-find-class-source' to open the file (let ((current-import) (match-found nil) (iterator import-list)) (while (and iterator (not match-found)) (setq current-import (car (car iterator))) (message current-import) (if (string-match \\(.*\\.\\)\\* current-import) (progn (setq current-import (replace-match \\1 t nil current-import)) (message found star import) (message current-import) (if (jde-find-class-source (concat current-import class)) (setq match-found t (setq iterator (cdr iterator))) match-found ) ) (defun jde-custom-open-class (optional unqual-class) Opens the source file for `class' if an import statement for the class is found or the class is found in the current source file directory or in java.lang. Uses `jde-find-class-source' to open the file (interactive) ;; (semantic-bovinate-toplevel t) (save-excursion (let* ((class (or unqual-class (read-from-minibuffer Class: (thing-at-point 'symbol (tokens (semantic-bovinate-toplevel t)) (depends (semantic-find-nonterminal-by-token 'include tokens))) (cond ((jde-custom-find-fqimport depends class)) ((jde-custom-find-starimport depends class)) ((progn ;; look for file in current directory (let ((fname (concat class .java))) (if (file-readable-p fname) (progn (find-file fname) ; open file in current dir (message Opened %s (expand-file-name fname))) ((jde-find-class-source (concat java.lang. class))) ((jde-open-class-source class)) ) ))) (defun jde-custom-open-class-at-point() (interactive) (jde-custom-open-class (current-word))) Tim Babin
Re:Things hang when using ClearCase
I'm using using JDE and Emacs with ClearCase in dynamic views on NT2000. All is working fine . At the begining we had a lot of problem with our NT NFS client (diskAccess), the problem was solved by applying patches on this tool. When all your problems will be solved my advice is to use the realy good package clearcase.el . Eric.
Re[1]: local-set-key for Menu Classes - classes
=?ISO-8859-1?Q?=22Albert=2C_J=FCrgen=22?= [EMAIL PROTECTED] seems to think that: is it possible to set a key (stroke) to the menu command Classes - Classes - I like this feature very much but dislike it to get a command only with the mouse. [ ... ] You can use the function `imenu' to get a text version of the imenu menu. (Unless I misunderstood your request.) Eric -- Eric Ludlam: [EMAIL PROTECTED], [EMAIL PROTECTED] Home: www.ultranet.com/~zappoSiege: www.siege-engine.com Emacs: http://cedet.sourceforge.net GNU: www.gnu.org
Re[2]: Interfacing Java tools with JDEE
Nascif Abousalh-Neto[EMAIL PROTECTED] seems to think that: [ ... ] This doesn't really help the elisp illiterate plugin tool developer, but it would make it easy to create and maintain a plugin interface for the JDEE. What about doing it in the other direction: creating eieio classes from existing Java classes? The generated eieio classes could extend basic classes designed for easy integration into the JDEE plug-in framework. Generating Lisp from Java seems to be more appropriate in this particular problem, since typically the Java code will already exist (in the form of a library or tool that we want to add to JDEE). [ ... ] From my perspective (as a non-java programmer) a better idea might be defining classes in a language agnostic form, such as XML. This is the same notion CORBA developers used when they created the C like IDL (Interface Description Language, not the other IDL). I don't recommend IDL for this task, however. ;) My intention for discussing such an interface with Paul was so I could hack Emacs Lisp code, and have it display UML, or other types of graphics via a slave Java process. Eric -- Eric Ludlam: [EMAIL PROTECTED], [EMAIL PROTECTED] Home: www.ultranet.com/~zappoSiege: www.siege-engine.com Emacs: http://cedet.sourceforge.net GNU: www.gnu.org
Re[2]: jde glitches
Nicholas Sushkin [EMAIL PROTECTED] seems to think that: In my case, every time the font-lock stops working, I get the following message in *Messages* Stack overflow in equal I am using Emacs : GNU Emacs 20.7.1 (i386-redhat-linux-gnu, X toolkit) of Fri Mar 16 2001 on porky.devel.redhat.com Package: JDE version 2.2.9beta9.1 Required packages: semantic-1.4beta13 eieio-0.17beta3 speedbar-0.14beta2 [ ... ] Hi, While I haven't had this problem, I am told the patch I posted to this list: http://www.mail-archive.com/jde@sunsite.dk/msg04367.html fixed a segv and another issue. If this patch also fixes the stack/equal problem, please let me know as I haven't received confirmation for this bug instance. Good Luck Eric -- Eric Ludlam: [EMAIL PROTECTED], [EMAIL PROTECTED] Home: www.ultranet.com/~zappoSiege: www.siege-engine.com Emacs: http://cedet.sourceforge.net GNU: www.gnu.org
semantic 1.4beta14 patch to fix segv/font-lock death
Hi, Paul told me rumors of a problem with the latest semantic causing font-lock to die in some versions of Emacs. The attached patch should fix this problem for those older versions of Emacs. Apply the patch to semantic-imenu.el. Enjoy Eric diff -r1.39.2.4 -r1.39.2.5 8c8 ;; X-RCS: $Id: semantic-imenu.el,v 1.39.2.4 2002/03/07 01:26:51 zappo Exp $ --- ;; X-RCS: $Id: semantic-imenu.el,v 1.39.2.5 2002/03/23 01:13:41 zappo Exp $ 219c219,220 (semantic-create-imenu-directory-index stream) --- (semantic-create-imenu-directory-index (or stream (semantic-bovinate-toplevel t))) -- Eric Ludlam: [EMAIL PROTECTED], [EMAIL PROTECTED] Home: www.ultranet.com/~zappoSiege: www.siege-engine.com Emacs: http://cedet.sourceforge.net GNU: www.gnu.org
Re: Extending JDE using Java (WAS: Gosling interview)
Daniel, If you read Paul's note, the problem he's trying to solve arises precisely because it is too expensive to have a lot of chatter across I/O between emacs and an external java process. The solution he's considering -- put the display logic into the java process so as to avoid the I/O -- addresses the problem. Your proposal - a different window layout managed by ECB - adds more complexity (by bringing ECB into the mix) without doing anything to reduce the high cost of I/O between the debugger and its display. Eric In message [EMAIL PROTECTED], Daniel Hegyi writes: : I think it is practical to use Java to extend Emacs where not much : interaction is required between Emacs and the extension, the wizards : and the debugger are examples. It may even be possible to provide : those extensions with a Java GUI. Pettar Maehlen and I have been : discussing the possibility of creating a Java window for JDEbug to display : local variable values when stepping through a program. Currently : displaying local variables slows down stepping significantly because : it involves sending significant amounts of text across the : standard I/O channel to Emacs. A separate local variable window : that lives in the debugger process instead of the Emacs process would : eliminate this bottleneck. : I think this would be great! JDE is already a very powerful IDE, that is, it : has a great deal of functionality. But I'm concerned with the UI aspect of : it. Emacs-ers are used to doing M-x all the time, however, I think it could : benefit much from some GUI components instead of having to memorize so many : functions. : : Regarding the inspection of local vars you may also want to consider : displaying them in an ECB window. (Although ECB is not a mandatory component : of JDE, it seems like a natural fit for the problem.) Maybe having the : option of having either Java GUI or ECB inspection view? : : : Regards, : Daniel : : _ : MSN Photos is the easiest way to share and print your photos: : http://photos.msn.com/support/worldwide.aspx :
RE: enhancement wish
You can easily solve your problem by using lisp variables in you project files like this: in your first project file (setq common-classpath (list tt yy)) and then in sub-project files: (setq jde-compile-option-classpath (append (list additional-path)) common-classpath) This is the advantage of using lisp project file. Eric. hi all, i working now for some time with nested prj.el files. i have noticed that there are in particular two entries jde-global-classpath jde-help-docset (and related entries) which i have to overwrite quite often. however, in many cases (in particular within one project) i just add another entry to the predefined values. would it be possible to have some mechanism which would enable one to do exactly that, i.e. add instead of overwrite? i am thinking of something along the following line (using the classpath as an example): use a variable like additional-classpath-entries. if this variable is used, it is used to modify the existing entries, however when jde-global-classpath is used, all values are overwritten (the same behaviour as before). does this make any sense? what do you all think? heinz-dieter conradi
best mode to edit Ant files ?
Hello, Do you know a good mode to edit Ant files (with colorization, indentation, completion ...) ? Eric.
problem with JDEbug and jde-db-option-verbose
On my configuration '(jde-db-option-verbose (quote (t nil nil))) adds a -v option on the command line runs by JDEbug when lauching a process for debugging. Eric.
Re: jde.el and tramp
Dug a little deeper: On linux, PATH_MAX is 4095; on Solaris it's 1024. In message [EMAIL PROTECTED], Eric D. Friedma n writes: : : This sounds like a bug that should be fixed in tramp, not in JDE. : : Directory *entry* length maximums are file system dependent too, which : means that a correct implementation of this hack would require looking at : the different filesystems that can be mounted on unix and windoze (both of : which can be nfs clients, of course, and so can mount other filesystems : through NFS or natively). A quick look at the header files on my linux : machine (which includes ufs_fs.h known to work with Solaris and HP/UX, : as well as ext{2,3}_fs.h, reiser_fs.h etc.) shows that 255 is a popular : (smile) maximum length for directory entries. : : If the question being asked is what's the longest legal *path* name -- : well, on unix that can be very, very large. I don't know how big exactly, : but you can definitely create paths that are much bigger than the thread : below would allow. To illustrate: I ran this script on my linux machine : (ext2 filesystem). Starting at /home/eric, it happily created a directory : structure /home/eric/0/1/2/3/../4096. Note also that it had no trouble : traversing the structure as it went. Note also that each of the nodes : in this path *could* have been up to 255 characters long. In sum, : (255 * 4097) 100. : : Obviously this is an edge case (although anyone with ClearCase experience : knows that you can end up dealing with some mighty big pathnames once : you start poking around in mvfs' view extended pathnames), but I : think it shows why it would be better to solve this problem through some : other means. Perhaps the original poster could describe the specific : issue with tramp in more detail? Perhaps the folks on the tramp mailing : list could be enlisted to help resolve it? : : #!/usr/bin/perl : : for my $n (0 .. 4096) { # upper limit chosen at random (note: *inclusive*) : system 'mkdir', $n; : if ($?) { exit 1; } : chdir $n; : } : : In message [EMAIL PROTECTED], Paul Kinnucan writ es : : : : : : Can anyone help with the question raised in the following : : thread? : : : : Paul : : : : Jose M Vidal writes: : : : : Yup, 100 is a hack that works for me. I don't know what the actual : : maximums are. : : : : On the other hand, we just need to pick a number bigger than the most : : unreasonably long file name but smaller than infinity. H. What is : : 1024? : : : : Sorry, : : Jose : : : : : : On Mon, 22 Oct 2001, [EMAIL PROTECTED] wrote: : : : :Jose M Vidal writes: : : : : jde 1.17 will not work with tramp because of the way it keeps : : trying to go up the directory hierarchy assuming ange-ftp : : usage. It would get into an infinite loop. I fixed this by simply : : constraining the length of the directory to 100 characters. I : : think this makes the code much : : : :Hi Jose, : : : :Why did you choose 100 characters? How do you know that there won't : :be a valid path somewhere that is more than 100 characters. : :I'm very leery of hacks like this based on someone's estimate : :of what is a reasonable maximum for some value. I'd rather have : :the maximum be greater than the maximum of the maximum paths : :supported by Windows and Unix. Is there such a maximum? I vaguely : :recall reading somewhere that the limit for Windows paths is : :256 characters. If Unix and Windows have constraints on path sizes, : :I'd be much more comfortable adopting this hack. : : : :- Paul : : : : more robust. Here is the changed function (from jde.el): : : : : : : (defun jde-find-project-file (dir) : :Finds the next project file upwards in the directory tree : : from DIR. Returns nil if it cannot find a project file in DIR : : or an ascendant directory. : :(let ((file (find jde-project-file-name : : (directory-files dir) :test 'string=))) : : (if file : : (expand-file-name file dir) : :(if ( (length dir) 100) : :(if (not (jde-root-dir-p dir)) : :(jde-find-project-file (concat dir ../))) : : : : Cheer, and thanks for a *great* product, : : Jose : : : : -- : : Jose M. Vidal [EMAIL PROTECTED] http://jmvidal.cse.sc.edu : : University of South Carolina http://www.multiagent.com : : : : : : -- : : Jose M. Vidal [EMAIL PROTECTED] http://jmvidal.cse.sc.edu : : University of South Carolina http://www.multiagent.com : : : : :
jmaker.el modification.
Makefiles generated by jmaker didn't work if generated classes didn't go in the same directory than sources. Here is a modification that had two variables and a function. - jmaker-dest-dir : directory where sources are to be compiled. - jmaker-source-path : directories where sources can be found. - jmaker-dir-package-part (optional directory path-list) return the package part from a directory name and a source path list. jmaker-dir-package-part() is used in template to generated full path name to compiled classes. to use it with jde: make jmaker-dest-dir points to jmaker-dest-dir and jmaker-source-path points to jde-db-source-directories Eric. - (require 'jde) (require 'tempo) (defconst jmaker-version $Revision: 1.10 $ jmaker version number.) (defgroup jmaker nil Java Makefile Maker Environment :group 'tools :prefix jmaker-) (defcustom jmaker-dest-dir Directory where source files are to be compiled :group 'jmaker :type 'string) (defcustom jmaker-source-path List of source directory paths. :group 'jmaker :type '(repeat (file :tag Path))) (defcustom jmaker-makefile-buffer-template '( \\ 'n \ Java Makefile automatically generated by jmaker \ (jmaker-version-number) 'n \ Creation date: \ (current-time-string) 'n \\ 'n 'n \ Java compiler settings\ 'n \JAVAC = \ jde-compiler 'n \JAVAC_FLAGS = \ (jde-get-compile-options) 'n \DEST_DIR = \ (jmaker-relative-dest-dir) 'n \PACKAGE_DIR = \ (jmaker-dir-package-part) 'n 'n \ Build Rules\ 'n \$(DEST_DIR)$(PACKAGE_DIR)%.class: %.java\ 'n \\\t$(JAVAC) $(JAVAC_FLAGS) $\ 'n 'n \ Global target\ 'n (jmaker-all-target) 'n \ Single targets\ 'n (jmaker-file-targets) 'n \ Cleanup\ 'n \clean:\ 'n \\\t$(RM) *.class\ 'n 'n \ Rebuild\ 'n \build:\\tclean all\ 'n 'n \ Usage\ 'n \help:\ 'n \\\t@echo \\\Usage: make [all|single target|clean|build|help] 'n \\\t@echo \\\ all - build all as needed (default) 'n \\\t@echo \\\ single target - build the given file as needed 'n \\\t@echo \\\ clean - remove all .class files 'n \\\t@echo \\\ build - build all inconditionnally 'n \\\t@echo \\\ help- display this help 'n 'n ) *Template for Java Makefile. Setting this variable defines a template instantiation command `jmaker-insert-makefile', as a side-effect. :group 'jmaker :type '(repeat string) :set '(lambda (sym val) (defalias 'jmaker-insert-makefile (tempo-define-template jmaker-makefile-buffer-template (jde-gen-read-template val) nil Insert a Java Makefile in the current buffer.)) (set-default sym val))) (defcustom jmaker-meta-makefile-buffer-template '( \\ 'n \ Java meta Makefile automatically generated by jmaker \ (jmaker-version-number) 'n \ Creation date: \ (current-time-string) 'n \\ 'n 'n \ Sub-Makefiles targets\ 'n (jmaker-sub-makefile-targets) 'n \ Usage\ 'n \help:\ 'n \\\t@echo \\\Usage: make [all|single target|help] 'n \\\t@echo \\\ all - build all as needed (default) 'n \\\t@echo \\\ single target - build the given target as needed 'n \\\t@echo \\\ help- display this help 'n 'n ) *Template for Java meta Makefile. Setting this variable defines a template instantiation command `jmaker-insert-meta-makefile', as a side-effect. :group 'jmaker :type '(repeat string) :set '(lambda (sym val) (defalias 'jmaker-insert-meta-makefile (tempo-define-template jmaker-meta-makefile-buffer-template (jde-gen-read-template val) nil Insert a Java Makefile.meta in the current buffer.)) (set-default sym val))) (defun jmaker-customize () Show the jmaker customization global options panel. (interactive) (customize-group jmaker)) (defun jmaker-version-number () Returns jmaker version number. (string-match [0123456789.]+ jmaker-version) (match-string 0 jmaker-version)) (defun jmaker-display-version () Displays jmaker version. (interactive) (message Using 'jmaker' version %s. (jmaker-version-number))) (defun jmaker-relative-dest-dir () return the compilation destination directory relative toward current directory (file-relative-name jmaker-dest-dir default-directory) ) (defun jmaker-dir-package-part (optional directory path-list) return the package part from a directory name and a source path list. (let* ( (dir (or directory default-directory
Re: RFE?: Suppress abbrv mode in comments
Actually jde-gen's default cflow templates are comment/quote aware. That is, the tempo-templates include a hook that expands the abbrev with a control flow template everywhere except when point is inside of a comment or a double quoted string. The problem is that the tempo-templates are activated by abbrev-mode, which is not case sensitive and which doesn't make the text that triggered the abbrev expansion available to the expander of that text. There's also no mecahnism through which a template can say oh wait, cancel the expansion and leave the text unmolested. So, abbrev-mode expands abbrevs without regard to case, and the jde cflow templates are forced to choose one case or the other to use in contexts (quotes and strings) when the full expansion is not appropriate. In sum, this is a minor annoyance, but I'm sure you'll agree that it's much better than getting if () { } inserted when you're trying to compose a comment (which is what earlier versions of the templates did before I added the quote-or-string hook). Eric In message [EMAIL PROTECTED], [EMAIL PROTECTED] writes: : : Hi, : : Is it possible to suppress abbreviation mode for comments? For example, if : I want to start a sentence in my comment with the word If, abbreviation : mode always kicks in and changes it to lowercase if, thinking that I am : entering a java keyword. I can of course Type If C-q SPC every time, but : considering that most often in a comment I one is not typing code, but : comments, it would be nice if abbreviation was disabled for this. I suppose : if you wanted to be really fancy abbreviation mode could ignore everything : except text inside code/code blocks. : : Ian : : . :
Re: Sorting methods
It should be pretty easy to do this with JavaCC. Just use one of the Java grammars that are included with JavaCC and write the parse tree back out in whatever order you need. This will make it possible to preserve javadoc too. You didn't mention where Visual Age puts field declarations, but JavaCC should be able to help there too. You might also want to search the comp.compilers.tools.javacc newsgroup to see if anyone has already done something similar -- it seems like the sort of code beautifying tool that a compulsive neat freak must have been inspired to write at some point. You could also look at ANTLR for the same stuff: it's a different parser generator, and its adherents may have done something that would be helpful to you. Eric In message [EMAIL PROTECTED], Perkens-Golomb, Burkhard writes: : I'm looking for a tool to arrange methods in Java sources : alphabetically. : : I've given away sources to a customer. They've worked with them in : Visual Age and I want to look at their changes. They don't remember : all changes they've made so I have to do a diff. But Visual Age stores : the sources in a database, not in flat files, and if you want normal : Java files from Visual Age you get them terrible formatted and the : methods are arranged alphabetically. A diff with my sources is futile. : : I'm looking for a tool to arrange the methods in my sources : alphabetically. Of course I could load my sources in Visual Age and : get them back terrible formatted, too :-) . But I don't have Visual : Age and I don't want to use it if it's possible without it! : : Could Emacs do it (with semantic, senator etc.)? Or other tools? Any : ideas or hints? : : TIA, : : Burkhard :
Re: ANN: JDE 2.2.9beta2 available... (correct URL)
I got two errors while compiling this release: 1. While compiling toplevel forms in file /home/eric/emacs/jde/lisp/jde-bug.el: !! error ((Given parent class jde-db-debugger is not a class)) and 2. While compiling toplevel forms in file /home/eric/emacs/jde/lisp/jde.el: !! Malformed property list (((:initarg :version :version string Compiler version.) (Compiler version.))) In message [EMAIL PROTECTED], Paul Kinnucan writes: : http://jde.sunsite.dk/rootpage.html#Downloading : : JDE 2.2.9beta2 : : *** : * PLEASE READ * : *** : * * : * This release requires semantic 1.4beta10 (or later),* : * speedbar 0.13 (or later), and eieio-0.16 (or later, * : * except eieio-0.17beta1). You can obtain all three * : * packages at http://cedet.sourceforge.net* : * * : * This release requires version 1.2.2 (or later) of the * : * JDK.* : * * : * Note: This release does not work with eieio-0.17beta1, but * : * it does work with eieio-0.17beta2. * : * * : * This release also requires avltree.el, which is part of the * : * elib 1.0 package. You can obtain elib at the JDE web site * : * in compressed tar (http://sunsite.dk/jde/elib.tar.gz) * : * or zip (http://sunsite.dk/jde/elib.zip) format. * : * * : * JDEbug runs on Windows 2000 only if Service Pack 2 (or * : * later) is installed.* : * * : * If syntax-coloring does not work, download and install * : * overlay-fix.el from the semantic web site. * : * * : *** : : * The jde-build-ant-command now quotes all path arguments to : accommodate Windows. This change was submitted by : Kevin Jones [EMAIL PROTECTED]. I don't use Ant so I've :not tested this change. : : * Replaced the customization variable jde-db-debugger with : jde-debugger to be consistent with jde-compiler. : :
Re[2]: Semantic 1.4beta11
Berndl, Klaus [EMAIL PROTECTED] seems to think that: I installed the new package, and tried it on a C header file. I have several: typedef struct { blah, blah, blah } blah_S; like definitions in the file. The *ECB Methods* buffer shows a: ^@ for each. It looks like: -- ^@ ^@ ^@ ^@ ^@ [Variables][+] -- Anyone else seen this? Yes, me too. It´s not a problem of ECB but of semantic; speedbar shows the same output. Eric, do you know why this happens? Klaus An addition into the grammar caused the wrong information to be placed in as the typedef name. This will be fixed in beta 12. Eric -- Eric Ludlam: [EMAIL PROTECTED], [EMAIL PROTECTED] Home: www.ultranet.com/~zappoSiege: www.siege-engine.com Emacs: http://cedet.sourceforge.net GNU: www.gnu.org
jde-find doesn't work on win32
Hello, On my NTemacs find-grep functions work well with the use of cygwin bash : I'm using different stuff : - from emacro: (setq explicit-shell-file-name (which-first bash)) (setq sh-shell-file (which-first bash)) (setenv ESHELL (which-first bash)) (add-hook 'comint-output-filter-functions 'shell-strip-ctrl-m nil t) (setq win32-quote-process-args t) (setq shell-command-switch -c) (add-hook 'shell-mode-hook '(lambda () (setq comint-completion-addsuffix t)) t)) - and (from the emacs-help newsgroup) : (defadvice start-process-shell-command (around cygnus-workaround activate) (let ((shell-file-name c:\\cygwin\\bin\\bash.exe) (win32-quote-process-args t) (shell-command-switch -c) (path-separator :) (grep-null-device NUL)) (message compile-internale advised : %s) ad-do-it)) (setq igrep-expression-quote-char ?') (setq igrep-parenthesis-escape-char ?\\) The problem with jde-find is the use of DOS drive names in the find commande. From where the jde command takew its directory source file names ? Could it be possible to have a separate variable for it ? Eric.
Re: people using jdk 1.2?
[java 1 vs. java 2 comments] : Has there been any documentation out about this? I don't see why using the : Collections API would increase performance. Yes, a number of articles and book chapters have been written about the cost of acquiring the synchronization lock on java objects. Since every method on Vector/Hashtable is synchronized, and since these were frequently used classes in JDK 1.2, they quickly become performance bottlenecks. The java 2 collections are not synchronized by default and so do not suffer from this particular shortcoming. The second performance problem I noticed is algorithmic in nature. The JDE builds a list of all compiled classes in your project ( 5,000 in the JDK base -- not counting i18n and so forth -- alone). When determining which class to import, it does a linear scan on this list. Clearly it would be faster to sort the list and then use binary searches for lookups. Other obvious, low hanging fruit include using StringBuffer.append() instead of String concatenation inside of loops, and removing unnecessary synchronized method calls in those same loops. An alternative to using a sort/search loop algorithm would be to replace the list data structure with a Map. In the current implementation, the list is comprised of fully qualified classnames. The search looks for the qualified classname only (the `Map' in `java.util.Map'). Clearly one could precompute the `Map' string when building the data structure and turn the search loop into a simple hash lookup that resolves to either a single String (`Map' - `java.util.Map') or a List of Strings (`List' - {`java.util.List', `java.awt.List'}). Eric
Re: dynamic class loading in jde+beanshell
: 2.3 there is the concept of a Web Application. Specifically a collection of : files distributed as a WAR - which is just a jar with a given directory : structure. WAR files predate 2.3. The new thing in 2.3 is the isolation of the WAR classloader from the loader used by the app server. This is valuable b/c a WAR might have a version of, say, an XML parser that conflicts with the one used by the servlet container. The requirement in 2.3 that the WAR loader not pick up classes from the container will fix this, in most cases. : The cool thing is the automatic class loading. Any file within WEB-INF/class es : or any .jar files in WEB-INF/lib are automatically used by it's classloader. : : We could do something like this for the JDE... IE load all files in PROJECT/l ib That's what the DCL does today, using values defined in elisp. It's arguably better than the WAR mechanism b/c it doesn't require everything to be in arranged in a predetermined layout. The improvement I'm suggesting is that it support runtime modifications to the classpath it searches for loadable classes. Now *that* would be cool (and easy to do). Eric
Re: Toggle comments in jde-gen.el
My guess is that you need to quote (s clause) when passing it to (concat). Better still: loose the (concat), since tempo-template already concatenates strings for you. Consider this line: '(l ' \if (\ (p \if-clause: \ clause) \) \ It will evaluate to '(l ' if ( (p if-clause: clause) ) which then gets passed to the tempo-template code. Your problem line has this: (concat \ // end of if (\ (s clause) \)\) which I would expect to become (concat // end of if ( (s clause) )) and then // end of if (XXX) ;; XXX is failed eval of (s clause) when getting sent to tempo-template. I bet that something like this \ // end of if (\ (s clause) \)\ would work fine. Failing that, try quoting (s clause) so that it isn't evaluated when you call concat. In message [EMAIL PROTECTED], Mark Mynsted mmynsted@.vha. com writes: : OK. I attempted to get some code working this week-end to toggle : comments for the auto-generated code, and failed. The problem I am : having is that the (s clause) code keeps getting run as lisp code : rather than as part of the tempo template. : : Does anybody have any idea how to get this to work? The following is : a example. : : I set up a boolean variable called jde-gen-comments as follows: : : (defcustom jde-gen-comments t : *If no-nil, use comments, else do not use comments. : with comments: : : try : { : : : } catch (Exception e) : { : : } // end of try-catch : : witout comments: : : try : { : : : } catch (Exception e) : { : : } : : Setting this variable to t, uses comments in skeletons and templates. : :group 'jde-gen : :type 'boolean) : : : Here is an example of what I am attempting to do and how it does not : work. The error is Symbol's function definition is void: s. I : assume this is because the code is in a (l expression) block, and so : the (s clause) is being evaluated. I have tried everything I can : think of, even putting the (s clause) in a variable then appending it : if applicable... If I do that, then the the literal text (s clause) : is written in the comment rather then the value stored by tempo in : clause. I would really like to figure this out. Altering the : templates via customize is far too time consuming. I would rather : alter the jde-gen.el once, that keep altering via customize... : : (defcustom jde-gen-cflow-if : '( : (if (jde-parse-comment-or-quoted-p) : '(l \if\) : '(l ' \if (\ (p \if-clause: \ clause) \) \ : (if jde-gen-kr : () : ''n) : \{\''n''r'n : \}\ : (if jde-gen-comments : (concat \ // end of if (\ (s clause) \)\) : ()) : ''n') : ) : ) : Skeleton if statement. To insert the if statement at point, type if : and then space. Note that abbrev mode must be enabled. See : `jde-enable-abbrev-mode' : :group 'jde-gen : :type '(repeat string) : :set '(lambda (sym val) : (jde-gen-define-abbrev-template : if : (jde-gen-read-template val)) : (set-default sym val))) : : : Please help. : : : -- : Sincerely yours; : : Mark Mynsted : : VHA Management Information Systems Client Services : 972.830.0592, internal x1592 : : : /\ : \ / ASCII Ribbon Campaign : X Against HTML Mail : / \ : :
Re: people using jdk 1.2?
One more thought on the classes data structure and I'll shut up. ;-) It would be nice if the data extracted from common jars could be shared across projects. That is, JDE shouldn't keep a separate list of the classes in rt.jar for each project a user has open. Assuming that the map approach is adopted, this would basically amount to keeping a collection of maps (one per classpath entry) and sharing items in that collection across projects. This would require putting a dirty flag on each map instead of on the project's collection of maps. Javier and Paul - please let me know if you want help with any of this. Eric In message 010301c12408$532e5c10$4173d490@kinnucanp, Paul Kinnucan writes: : Hi All, : : Unless there are any strong objections, I'd like to adopt Eric's suggestion : and make JDK 1.2 a requirement for the JDE, beginning with JDE - 2.2.9beta1. : (I have frozen JDE-2.2.8 and plan to release it shortly.) I believe it's : possible to use JDK 1.2+ to develop for JDK 1.2 anyway by not using JDK : 1.1 and by using the JDK 1.1 cross-compile option. : : BTW, thanks, Eric, for taking the time to do a performance review of the : JDE's Java code and make specific recommendations for improving the : performance. Your recommendations are excellent. Javier Lopez has already : sent me updates that implement some of them and I plan to include Javier's : updates in JDE 2.2.9beta1. It will be interesting to see if they make a : perceptible difference. : : - Paul : : - Original Message - : From: [EMAIL PROTECTED] : To: Kevin A. Burton [EMAIL PROTECTED] : Cc: [EMAIL PROTECTED] : Sent: Monday, August 13, 2001 9:06 AM : Subject: Re: people using jdk 1.2? : : : : [java 1 vs. java 2 comments] : : : Has there been any documentation out about this? I don't see why using : the : : Collections API would increase performance. : : Yes, a number of articles and book chapters have been written about : the cost of acquiring the synchronization lock on java objects. Since : every method on Vector/Hashtable is synchronized, and since these were : frequently used classes in JDK 1.2, they quickly become performance : bottlenecks. The java 2 collections are not synchronized by default : and so do not suffer from this particular shortcoming. : : The second performance problem I noticed is algorithmic in nature. : The JDE builds a list of all compiled classes in your project ( : 5,000 in the JDK base -- not counting i18n and so forth -- alone). : When determining which class to import, it does a linear scan on this : list. Clearly it would be faster to sort the list and then use binary : searches for lookups. : : Other obvious, low hanging fruit include using StringBuffer.append() : instead of String concatenation inside of loops, and removing unnecessary : synchronized method calls in those same loops. : : An alternative to using a sort/search loop algorithm would be to replace : the list data structure with a Map. In the current implementation, the : list is comprised of fully qualified classnames. The search looks for : the qualified classname only (the `Map' in `java.util.Map'). Clearly one : could precompute the `Map' string when building the data structure and : turn the search loop into a simple hash lookup that resolves to either : a single String (`Map' - `java.util.Map') or a List of Strings (`List' : - {`java.util.List', `java.awt.List'}). : : Eric : :
Re: Need some help
In message [EMAIL PROTECTED], Douglas WF Ach eson writes: : I know this is not JDEE related, I have not got any help from other : emacs newsgroups/lists :-( This message is for the XEmacs people in : the crowd. I want to change the functionality of the compile button. : I want to invoke ant and not make. I thought I could change the vector : defined in the toolbar.el file -- that does not work. And, there is no : compile-button-function to alter. Any help would be appreciated ... The toolbar-items.el file is where I looked to find an answer to your question (I do not use toolbar myself - takes up too much room smile). It defines a (non-customizable) defun which includes the following: [...] (require 'compile) (if toolbar-compile-already-run (compile compile-command) [...] I then typed C-h v compile-command [RET] and found this: `compile-command' is a variable declared in Lisp. -- loaded from compile Value: make -k Documentation: *Last shell command used to do a compilation; default for next compilation. Sometimes it is useful for files to supply local values for this variable. You might also use mode hooks to specify it in certain modes, like this: (add-hook 'c-mode-common-hook (lambda () (or (file-exists-p makefile) (file-exists-p Makefile) (set (make-local-variable 'compile-command) (concat make -k buffer-file-name) I conclude that you need to write a jde-mode-hook that sets `compile-command' to `ant -find build.xml -emacs' Unfortunately there doesn't seem to be an easy way to just use jde-ant-build as the value of compile-command, b/c jde-ant-build wants to call (compile-internal compile-command), and the toolbar button wants to do (compile compile-command) - this cannot end well. :-/ That said, it looks like the toolbar will prompt you for additional arguments when you clikc on the compile icon, so you probably don't need jde-ant anyway. Sorry if this was too long winded - hope it helps, Eric
syntax highlighting in jde-mode not working properly
Question: When using JDE on windows i have no problem with java syntax highlighting when emacs is in jde-mode. However, on Red Hat Linux 7.1, when I load a java file I lose all syntax highlighting when emacs is in jde-mode. If I switch to java-mode, i get my syntax highlighting but then I lose my JDE environment. Does anyone know how to correct this? BTW, paths to all JDE and lisp package are correct. my .emacs file is pasted inline below - ;; Red Hat Linux default .emacs initialization file ;; Are we running XEmacs or Emacs? (defvar running-xemacs (string-match XEmacs\\|Lucid emacs-version)) ;; load path for jde (add-to-list 'load-path (expand-file-name /usr/share/emacs/20.7/jde-2.2.7.1/lisp)) (add-to-list 'load-path (expand-file-name /usr/share/emacs/20.7/lisp/eieio-0.16)) (add-to-list 'load-path (expand-file-name /usr/share/emacs/20.7/lisp/elib-1.0)) (add-to-list 'load-path (expand-file-name /usr/share/emacs/20.7/lisp/semantic-1.4beta5)) (add-to-list 'load-path (expand-file-name /usr/share/emacs/20.7/lisp/speedbar-0.13a)) ;; If you want Emacs to defer loading the JDE until you open a ;; Java file, edit the following line ;;(setq defer-loading-jde nil) ;; to read: ;; (setq defer-loading-jde t) ;; (if defer-loading-jde (progn (autoload 'jde-mode jde JDE mode. t) (setq auto-mode-alist (append '((\\.java\\' . jde-mode)) auto-mode-alist))) (require 'jde)) ;; Sets the basic indentation for Java source files ;; to two spaces. (defun my-jde-mode-hook () (setq c-basic-offset 2)) (add-hook 'jde-mode-hook 'my-jde-mode-hook) ;; Set up the keyboard so the delete key on both the regular keyboard ;; and the keypad delete the character under the cursor and to the right ;; under X, instead of the default, backspace behavior. (global-set-key [delete] 'delete-char) (global-set-key [kp-delete] 'delete-char) ;; Turn on font-lock mode for Emacs (cond ((not running-xemacs) (global-font-lock-mode t) )) ;; Always end a file with a newline (setq require-final-newline t) ;; Stop at the end of the file, not just add lines (setq next-line-add-newlines nil) (set-background-color Black) (set-foreground-color White ) (set-cursor-color Yellow) ;; Enable wheelmouse support by default (require 'mwheel) (custom-set-variables '(display-time-day-and-date t) '(transient-mark-mode t) '(display-time-mode t nil (time)) '(c-basic-offset 2) '(column-number-mode t)) (custom-set-faces '(default ((t (:foreground white :background black '(font-lock-comment-face ((t (:foreground green '(font-lock-string-face ((t (:foreground yellow '(font-lock-keyword-face ((t (:foreground blue '(font-lock-constant-face ((t (:foreground lightgoldenrod '(font-lock-type-face ((t (:foreground lightgrey '(modeline ((t (:foreground black :background lightsteelblue '(highlight ((t (:foreground black :background cyan '(font-lock-variable-name-face ((t (:foreground LightGoldenrod '(font-lock-function-name-face ((t (:foreground LightSteelBlue '(font-lock-builtin-face ((t (:foreground blue)
Re: Renaming Proposal
In message [EMAIL PROTECTED], Paul Kinnucan write s: : Yes, one possibility is to replace jde- with j- in symbol names, on the : analogy of c-mode. Another is jmode-. Thus, jde-global-classpath might : become j-global-classpath or jmode-global-classpath. I would very much prefer jmode- as a prefix, but I'm not gonna lose sleep over it.
Re: ANN: Name Change Plans
: Shall we trademark JMode just in case? It seems many of us, me included, : are willing to help defer the legal cost of one. Can the FSF help in this area? That is, could the FSF set up a dedicated fund for JMode's trademark (to which we could contribute) and take care of whatever paperwork there is? Keep in mind that part of owning a trademark is defending it - if you don't send out cease and desist letters to people who violate it, you can't later claim that they violated your rights. Perhaps the FSF would be willing to oversee the `trademark watch' that protects trademark holders from such abuses? (I must note here that I have mixed feelings about this - the whole idea of saying that these letters are mine and you may not use them is really very silly, but that's the way things are) Getting the FSF involved would have several advantages that I can think of: 1. Paul wouldn't have to waste any more time on this; 2. Because of 1, jde 2.8 final will be out sooner smile 3. A precedent would be established that other open source projects could follow. 4. cravenness shame='none'Those of us in the US who make contributions to the fund could get a tax credit for contributing to a qualified non-profit organization./cravenness Eric
Re: ANN: Name Change Plans
In message [EMAIL PROTECTED], Udalrich wri tes: : : Keep in mind that part of owning a trademark is defending it - if : you don't send out cease and desist letters to people who violate it, : you can't later claim that they violated your rights. : : Is that actually an issue here? The interest in getting the trademark is : to prevent some company from sending Paul another cease and desist letter, : not to monopolize the word JMode. Even if he loses the rights, I doubt : that someone else could trademark it and force him off of it. At the very : least, he's got a very strong case for prior use. IANAL, but I believe it is an issue. In the US, I believe the rule is defend it or lose it. Now that may mean that if you don't defend it, others can use it (which I'm sure would be fine with Paul). But, it may also mean that those who use it can get the USPTO to agree that you've stopped defending it and so *they* should be eligible for exclusivity on the TM. I don't know if this is true or not for trademarks, but it merits investigation. Also, remember that it's not a one time expense: TMs expire and have to be renewed. That's what happened to JD Edwards, as others on this list have explained it - they let their TM lapse for a year or so, right around the time the JDE... er...Jmode was born. Eric speculatingly wildly Friedman
History list jde-interactive-make-arg-history is unbound
When I enable jde-project - Read Make Args or jde-project - Ant Read Args or jde-project - Ant Read Target, I get errors like the one the subject `History list jde-interactive-make-arg-history is unbound' This is with Xemacs, solaris, jde 2.2.8beta1. Any ideas? Eric
Error wrong-type-argument char-or-string-p nil
I'am experiencing very often the error described below. Is someone know how to correct it ? Thanks in advance. Eric. Emacs : GNU Emacs 20.5.1 (i386-redhat-linux-gnu, X toolkit) of Tue Feb 22 2000 on porky.devel.redhat.com Package: JDE version 2.2.8 beta1 ecb-1.31 eieio-0.16 elib-1.0 semantic-1.4beta7 speedbar-0.13a jde / ecb configuration: ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;;; JDE configuration ;; Set the debug option to enable a backtrace when a ;; problem occurs. ;;;(setq debug-on-error t) ;; Update the Emacs load-path to include the path to ;; the JDE and its require packages. This code assumes ;; that you have installed the packages in the emacs/site ;; subdirectory of your home directory. ;;(add-to-list 'load-path (expand-file-name /usr/local/emacs/jde/lisp)) ;;(add-to-list 'load-path (expand-file-name /usr/local/emacs/semantic)) ;;(add-to-list 'load-path (expand-file-name /usr/local/emacs/speedbar)) ;;(add-to-list 'load-path (expand-file-name /usr/local/emacs/eieio)) ;;(add-to-list 'load-path (expand-file-name /usr/local/emacs/elib)) (add-to-list 'load-path /home/ech/.lisp/semantic) (add-to-list 'load-path /home/ech/.lisp/speedbar) (add-to-list 'load-path /home/ech/.lisp/eieio) (add-to-list 'load-path /home/ech/.lisp/elib) (add-to-list 'load-path /home/ech/.lisp/jde/lisp) ;; If you want Emacs to defer loading the JDE until you open a ;; Java file, edit the following line (setq defer-loading-jde nil) ;; to read: ;; ;; (setq defer-loading-jde t) ;; (if defer-loading-jde (progn (autoload 'jde-mode jde JDE mode. t) (setq auto-mode-alist (append '((\\.java\\' . jde-mode)) auto-mode-alist))) (require 'jde)) ;; Sets the basic indentation for Java source files ;; to four spaces. (defun my-jde-mode-hook () (setq c-basic-offset 4) (c-set-offset 'substatement-open 0) ; this is the one you care about (c-set-offset 'defun-open 0) ; this is the one you care about (c-set-offset 'inline-open 0) ; this is the one you care about (c-set-offset 'statement-case-open 0) (c-set-offset 'case-label '+) (setq tab-width 4 ;; make sure spaces are used instead of tabs indent-tabs-mode nil) (message my jde-mode-hook function executed)) (add-hook 'jde-mode-hook 'my-jde-mode-hook) ;; ;; ECB (add-to-list 'load-path (expand-file-name /home/ech/.lisp/ecb)) (require 'ecb) (custom-set-variables '(ecb-truncate-lines nil) '(ecb-layout-nr 0) '(ecb-other-window-jump-behavior (quote only-edit))) ;;- ;; to prevent the truncated line problem with jde and ecb (setq truncate-partial-width-windows nil) ;; bug in overlay - ;;(require 'overlay-fix) ;; jde checker. ;; (require 'jde-check) (setq jde-check-option-allow-maxlinelen 160 jde-check-option-allow-protected t jde-check-option-allow-noauthor t ) Error description: - Signaling: (wrong-type-argument char-or-string-p nil) insert(nil) (let ((p ...)) (insert text) (put-text-property p (+ p ...) (quote mouse-face) (quote highlight)) (if facer (if ... ... ...))) tree-buffer-insert-text(nil nil) tree-buffer-add-node([nil 2 nil nil [[Parents] 1 nil t [root 0 root t nil ... t] (#0 [#(List 0 4 ...) 2 List nil #1 nil nil]) t] nil nil] 1) (while --dolist-temp--98233 (setq node (car --dolist-temp--98233)) (tree-buffer-add-node node (1+ depth)) (setq --dolist-temp--98233 (cdr --dolist-temp--98233))) (let ((--dolist-temp--98233 ...) node) (while --dolist-temp--98233 (setq node ...) (tree-buffer-add-node node ...) (setq --dolist-temp--98233 ...)) nil) (catch (quote --cl-block-nil--) (let (... node) (while --dolist-temp--98233 ... ... ...) nil)) (cl-block-wrapper (catch (quote --cl-block-nil--) (let ... ... nil))) (block nil (let (... node) (while --dolist-temp--98233 ... ... ...) nil)) (dolist (node (tree-node-get-children node)) (tree-buffer-add-node node (1+ depth))) (if (tree-node-is-expanded node) (dolist (node ...) (tree-buffer-add-node node ...))) tree-buffer-add-node([[Parents] 1 nil t [root 0 root t nil (#0 [[Variables] 1 nil nil #1 ... t] [#(SdRouteList () 0 11 ... 11 14 nil) 0 ... nil #1 nil nil] [#(add (Object) : boolean 0 3 ... 3 5 nil 5 11 ... 11 15 nil 15 22 ...) 0 ... nil #1 nil nil] [#(add (int, Object) : void 0 3 ... 3 5 nil 5 8 ... 8 10 nil 10 16 ... 16 20 nil 20 24 ...) 0 ... nil #1 nil nil] [#(addAll (Collection) : boolean 0 6 ... 6 8 nil 8 18 ... 18 22 nil 22 29 ...) 0 ... nil #1 nil nil] [#(addAll (int, Collection) : boolean 0 6 ... 6 8 nil 8 11 ... 11 13 nil 13 23 ... 23 27 nil 27 34 ...) 0 ... nil #1 nil nil] [#(clear () : void 0 5 ... 5 11 nil 11 15 ...) 0 ... nil #1 nil nil] [#(contains (Object) : boolean 0 8 ... 8 10 nil 10 16 ... 16 20 nil 20 27 ...) 0 ... nil #1 nil nil] [#(containsAll (Collection) : boolean 0 11 ... 11 13 nil 13 23
Re: JDEbug problem, cannot debug
Two suggestions: 1) Your report included this line: JDE -1 1 launch 1 -vmexec java -classpath ~/Development/source/ rj.pipeline.Pipeline It seems odd to me that your compiled classes live in a directory called source - is that correct? 2) Try installing the jdk 1.3.1 release candidate 1 (developer.java.sun.com) and see if your results are any different. Eric In message [EMAIL PROTECTED], [EMAIL PROTECTED] wr ites: : Ok, 2nd try ;) : : Hi there, : System : : - Suse 7.0 Linux : - Emacs 20.7.1 : - JDE 2.2.6 / semantic-1.3.3 / speedbar-0.13a : - java version 1.3.0 : Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.0) : Classic VM (build 1.3.0, J2RE 1.3.0 IBM build cx130-2623 (JIT enabled: jitc)) : - prj.el is attached : : Problem : : First I set a breakpoint in the ctor of my main class. Then I start the Debug er (JDEbug-Processes-Start Debuger) and finally start to debug (JDE-Debug A pp) I get the following situation : : *** Debugger Output for Process rj.pipeline.Pipeline(17) *** : : vm started... : All threads suspended... : Launch command line: : java -classpath ~/Development/source/ rj.pipeline.Pipeline : : Emacs connected to standard IO port 2351 for process rj.pipeline.Pipeline. : Launched VM Java Debug Interface (Reference Implementation) version 1.3 : Java Debug Wire Protocol (Reference Implementation) version 1.0 : JVM Debug Interface version 1.0 : JVM version 1.3.0 (Classic VM, J2RE 1.3.0 IBM build cx130-2623 (JIT disab led)) : initSIOConnect: starting standard I/O handshake. : initSIOConnect: starting SIO connect thread. : Debugger waiting for Emacs to connect to app SIO port 2351. : Setting breakpoint at line 89 in Pipeline.java. : Debugger connected to standard I/O socket. : Running rj.pipeline.Pipeline. : Closed transport for application's standard output. : rj.pipeline.Pipeline process ended. : vm disconnected... : : /--- : : *JDEbug* buffer : cd /home/rjocham/Development/source/rj/pipeline/ : java -classpath /home/rjocham/emacs/lisp/jde-2.2.6/java/lib/jde.jar:/usr/lib/ java/lib/tools.jar jde.debugger.Main : : : (jde-dbo-init-debug-session) : : JDE -1 1 launch 1 -vmexec java -classpath ~/Development/source/ rj.pipeline .Pipeline : : : (jde-dbo-message : 1 Launched VM Java Debug Interface (Reference Implementation) version 1.3 : Java Debug Wire Protocol (Reference Implementation) version 1.0 : JVM Debug Interface version 1.0 : JVM version 1.3.0 (Classic VM, J2RE 1.3.0 IBM build cx130-2623 (JIT disab led))) : : : (jde-dbo-message 1 initSIOConnect: starting standard I/O handshake.) : : : (jde-dbo-message 1 initSIOConnect: starting SIO connect thread.) : : : (jde-dbo-message : 1 Debugger waiting for Emacs to connect to app SIO port 1137.) : : : (jde-dbo-command-result 1 1137) : : : (jde-dbo-event-set : 1 all : (list Thread 1 main waiting suspended by debugger : (list) : (list) : nil) : (list 'jde-dbo-vm-start-event)) : : JDE 1 2 run : : : (jde-dbo-message 1 Debugger connected to standard I/O socket.) : : : (jde-dbo-message 1 Closed transport for application's standard output.) : : : (jde-dbo-message 1 Closed transport for application's standard error output. ) : : : (jde-dbo-event-set 1 none nil : (list 'jde-dbo-vm-death-event)) : : : (jde-dbo-event-set 1 none nil : (list 'jde-dbo-vm-disconnected-event)) : : : (jde-dbo-command-result 2) : : : I cannot see any error message in this text, so I am wondering why I cannot d ebug. : : TIA : Ralph : __ : Get your own FREE, personal Netscape Webmail account today at http://webmail. netscape.com/ :
Re: more on testing JDEbug
In message [EMAIL PROTECTED], "Eric D. Friedman" w rites: : : Using FSF emacs (will try xemacs shortly) and 2.2.7b10, I was able to : debug the test code I wote about earlier. OK, I tried xemacs and it does *not* work. Using top, sorted by CPU usage, I see several java processes (which represent threads on linux), all of which are inactive. Is it possible there's a thread synchronization issue? I'm doing this in a `vanilla' setup. That is, `xemacs -q -l just-enough-lisp-to-load-jde-beta.el path/to/my/test/Main.java' Eric
Re: more on testing JDEbug
Now I upgraded to jdk 1.3.1 RC-1 and my test case works with xemacs. The release notes for jdk 1.3.1 say that there were problems with the JPDA in 1.3 + hotspot, and I know that Optimizeit didn't work with hotspot VMs before 1.3.1, so perhaps JDEbug is a victim of the same bugs? At any rate, I can now debug in both emacsen. Hooray for me! smile Xemacs has the same problem as FSF emacs when it comes to watching for access: the debugger doesn't understand a command argument `-sp.' Eric In message [EMAIL PROTECTED], eric writes: : : In message [EMAIL PROTECTED], "Eric D. Friedman" w : rites: : : : : Using FSF emacs (will try xemacs shortly) and 2.2.7b10, I was able to : : debug the test code I wote about earlier. : : OK, I tried xemacs and it does *not* work. Using top, sorted by : CPU usage, I see several java processes (which represent threads on : linux), all of which are inactive. Is it possible there's a thread : synchronization issue? : : I'm doing this in a `vanilla' setup. That is, : `xemacs -q -l just-enough-lisp-to-load-jde-beta.el path/to/my/test/Main.java' : : Eric :
Re: more on testing JDEbug
In message [EMAIL PROTECTED], Paul Kinnucan write s: : Eric, I am a little confused. Are you saying that my thread priority "fix" : in beta10 is an improvement? If so, that is very interesting. I believer : there other debugger threads that JDEbug sets to max priority (actually : MAX_PRIORITY-1). I've never understood why the code, which was written by a : Sun summer intern, was setting the priority of these threads. However, : since the intern was working as a member of the JPDA team, I assumed he had : access to inside information so I was reluctant to touch his code in this : area. Recently, however, I have been reading Holub's "Taming Java Threads" : and found his discussion of how thread scheduling differs drastically from : platform to platform enlightening and horrifying. Holub's advice is : basically just not to monkey with thread prioirty since you can't set : priorities in a platform-independent way. So I'm inclined to comment out : all the set-priority calls in the JDEbug code. Yes, the beta10 fix yielded a working debugger in both emacsen. There were no changes to code or to the number of ambient processes between the upgrade, and I repeated the exercise with a downgrade (didn't work) and a re-upgrade (worked). But also keep in mind the importance of upgrading the VM itself from 1.3 = 1.3.1. In my experience Holub is exactly right. In VMs (linux) that implement threading as processes, the scheduler in the kernel has an opportunity (indeed, an obligation) to control "threads" in a way that just doesn't happen when threading is implemented within a single process. I was curious, so I wrote a little priority test in which I start two threads, one with MAX_PRIORITY and the other with MIN_PRIORITY. Each thread has an instance of a Runnable whose run method looks like this: long runcount = 0L; public void run() { try { while (true) { System.out.println(Thread.currentThread().toString() + ":" + runcount++); } // end of while (true) } catch (Exception e) { e.printStackTrace(); } // end of try-catch } Since these runnables are just competing for CPU time (and System.out, of course), you'd expect the one that belongs to the Thread with MAX_PRIORITY to eventually end up with a much higher runcount. Curiously, my results are exactly the opposite: if left to run ~10,000 times, the MIN_PRIORITY thread ends up about 1,000 iterations ahead. I ran the test a few times, for different durations, and MIN_PRIORITY always got more cycles. I conclude from this (completely unscientific) test that you and Holub are exactly right - setting thread priorities isn't worth the trouble, because of the inherent OS dependencies in scheduling. As to trusting the inside information of Sun's summer intern - well The JDK has quite a few classes that were probably written by well meaning, but poorly mentored summer interns. The Observable/Observer classes are a disaster because of the requirement that you sublass Observable to use them (observable should've been an interface and Sun should've provided an "observable support" class to which implementors could delegate, a la property change support). java.text.BreakIterator is terrible because it cannot be extended to introduce more intelligent segmentation rules, which is why IBM had to rewrite it. Making Stack a subclass of Vector is pretty awful too, since you end up with a data structure that can be altered in all kinds of un-stack-like ways if people aren't paying attention. At any rate, it's very easy to criticize someone else with the benefit of 20/20 hindsight (and it's fun too, as Homer Simpson once said, ha ha), but suffice it to say that I'm not exactly shocked that a javasoft insider would flub some multithreading code - it's still darn hard to get right, even if you're spending a summer in the Silly Valley. Eric
Re: more on testing JDEbug
In message [EMAIL PROTECTED], eric writes: : : Yes, the beta10 fix yielded a working debugger in both emacsen. There : were no changes to code or to the number of ambient processes between : the upgrade, and I repeated the exercise with a downgrade (didn't work) : and a re-upgrade (worked). But also keep in mind the importance of : upgrading the VM itself from 1.3 = 1.3.1. Correction - I retraced my steps and realized that I hadn't tested beta9 with VM 1.3.1 and xemacs. I have done so and it *does* work, so it would seem that the real problem is in VM 1.3.0, which is known to have JPDA issues. To summarize beta9beta10 --- FSF/1.3GOOD*BAD* Xemacs/1.3 BAD* BAD* FSF/1.3.1 GOOD GOOD Xemacs/1.3.1 GOOD GOOD * results were seemingly random - sometimes it works, sometimes it doesn't. In these cases the GOOD/BAD indicator show what happened most of the time. Apologies for the confusion, Eric "obviously not a QA whiz on TV or anywhere else"
Re: PROPOSAL: New Java Build Feature (LONG)
I stand corrected - the depend task works exactly as Mark says it does. Mark, thanks for bringing this to my attention. Eric In message [EMAIL PROTECTED], M ark Bucciarelli writes: : Actually, Ant does handle the dependency example you present below. : : Use the optional depend task. The following build.xml will recompile both : A.java and B.java in your step 4 below. : : project name="tmp" default="all" basedir="." : property name="build" value="./build/" / : target name="all" : mkdir dir="${build}" / : depend srcdir="${basedir}" : destdir="${build}" : cache="depcache"/ : javac srcdir="${basedir}" : depend="on" : includes="A.java, B.java" : destdir="${build}" : classpath=".;${build}" : debug="on" : / : /target : /project : : If you're interested in reading the docs, I've included the text from the : Ant manual for the depend task. Thanks for bringing this to my attention--I : had indeed missed it. : : Depend : A task to manage Java class file dependencies. : Description : The depend task works by determining which classes are out of date with : respect to their source and then removing the class files of any other : classes which depend on the out-of-date classes. : : To determine the class dependencies, the depend task analyses the class : files of all class files passed to it. Depend does not parse your source : code in any way but relies upon the class references encoded into the class : files by the compiler. This is generally faster than parsing the Java : source. : : To learn more about how this information is obtained from the class files, : please refer to the Java Virtual Machine Specification : : Since a class' dependencies only change when the class itself changes, the : depend task is able to cache dependency information. Only those class files : which have changed will have their dependency information re-analysed. Note : that if you change a class' dependencies by changing the source, it will be : recompiled anyway. You can examine the dependency files created to : understand the dependencies of your classes. Please do not rely, however, on : the format of the information, as it may change in a later release. : : Once depend discovers all of the class dependencies, it "inverts" this : relation to determine, for each class, which other classes are dependent : upon it. This "affects" list is used to discover which classes are : invalidated by the out of date class. The class files of the invalidated : classes are removed, triggering the compilation of the affected classes. : : The depend task supports an attribute, "closure" which controls whether : depend will only consider direct class-class relationships or whether it : will also consider transitive, indirect relationships. For example, say : there are three classes, A, which depends on B, which in-turn depend on C. : Now say that class C is out of date. Without closure, only class B would be : removed by depend. With closure set, class A would also be removed. Normally : direct relationships are sufficient - it is unusual for a class to depend on : another without having a direct relationship. With closure set, you will : notice that depend typically removes far more class files. : : Performance : The performance of the depend task is dependent on a number of factors such : as class relationship complexity and how many class files are out of date. : The following tests have been run when build Ant itself, on the author's : machine using JDK1.3 : : Building Ant from clean using Javac 11 seconds : Building Ant from clean using Jikes 5 seconds : Running depend when up-to-date and no cache 4 seconds (Depend takes 2 : seconds) : Running depend when up-to-date and with a cache 2 seconds (Depend takes 1 : seconds) : : This involves compiling 177 files. The above figures are indicative only. : The decision about whether it is cheaper to just recompile all classes or to : use the depend task will depend on the size of your project and how : interrelated your classes are. : : Limitations : There are some dependencies which depend will not detect. : : If the Java compiler optimizes away a class relationship, there can be a : source dependency without a class dependency. : Non public classes cause two problems. Firstly depend cannot relate the : class file to a source file. In the future this may be addressed using the : source file attribute in the classfile. Secondly, neither depend nor the : compiler tasks can detect when a non public class is missing. Inner classes : are handled by the depend task. : Parameters : Attribute Description Required : srcDir This is the directory where the source exists. depend will examine : this to determine
Re: PROPOSAL: New Java Build Feature
In message [EMAIL PROTECTED] m, "Denis, Ronald J (Ronald)** CTR **" writes: : I too use ant for my builds. It does not compile : every file every time. However, admittedly there have : been times when compile errors occur which only go away : upon a full rebuild. This doesn't happen often but does : happen often enough that its annoying. It's quite clear why and when this happens. Ant does an "up to date" check on the source files you hand to its "javac" task (which could also be handled by jikes) and passes the compiler a list of .java files that are older than their corresponding .class files. This is why Ant will always rebuild classes that are not organized in a directory structure that mirrors the package hierarchy. It's also why Ant cannot handle the following case unless you do a full, clean build: 1. write the following classes class A { void foo() { } } class B extends A { void bar() { foo(); } } 2. build and run: everything is fine. 3. now change A as follows: class A { void foo(int i) { } } 4. build with Ant and only A gets rebuilt (as it is the only out-of-date source file) 5. run and you will get a java.lang.NoSuchMethodError Conclusions: Ant is not the panacea that some, charmingly (alarmingly?) naive users claim that it is. It has a couple of advantages over make: 1. it does not fire up multiple VMs to do a build; 2. it is hard to write non-portable build files (with make the inverse is true); 3. it does not require much from users - no shell, sed, awk wizardry required; With that said, Ant does not offer any fundamental advantage over make in terms of dependency analysis. Using timestamps to recompile class files is simply not enough in java, as the example above makes clear. Eric
Re: AW: filling javadoc comments
: Do you think it would be a good idea for the JDE : to require filladapt and set it up to do filling : correctly on Javadoc comments? Yes, please! Eric : : - Paul : : : At 01:01 PM 3/2/2001 +0100, you wrote: : take a look at filladapt-mode : http://cc-mode.sourceforge.net/filladapt.php : : Yes and then you must ajust the option filladapt-token-table: : Call "M-x customize-option RET filladapt-token-table RET" and then : add the following elements (but do not add this at the end but add it : before the last to items already defined; for this simply press the : related [INS]-button) : : After your changes the customize buffer should look like: : : ... : [INS] [DEL] List: : Regexp: @param[ ] : Symbol: bullet : [INS] [DEL] List: : Regexp: @return[ ] : Symbol: bullet : [INS] [DEL] List: : Regexp: @see[] : Symbol: bullet : [INS] [DEL] List: : Regexp: @exception[ ] : Symbol: bullet : [INS] [DEL] List: : Regexp: []+ : Symbol: space : [INS] [DEL] List: : Regexp: $ : Symbol: end-of-line : [INS] :[State]: this option has been set and saved. : : Please note the last two elements are already there as default value of this : option. Please note also that [ ] is a space and a tab between brackets . : : Then [Save for Future Sessions] and you will get well filled Javadocs! : : Hope this helps, : Klaus : : : : : : : : : -Original Message- : From: Martin Monsorno [SMTP:[EMAIL PROTECTED]] : Sent: Friday, March 02, 2001 11:57 AM : To:jde mailing list : Subject: filling javadoc comments : : I often use M-q inside of javadoc-comments to automatically break : long lines. The problem is: when I have this: : @param id an id : @return something useful : the result is: : @param id an id @return something useful : : Does anybody know how to prevent emacs from filling lines with tags? : : -- : Martin Monsorno : mailto:[EMAIL PROTECTED] :
JDEbug on solaris
Is anyone able to use JDEbug on solaris/xemacs? This is with jde 2.2.6.2 I've followed the instructions for setting up JDEbug and am using the 1.3.1 beta VM, which is supposed to have fixed the problems with debugging in hotspot VMs (solaris does not have a "classic" vm). I coded up a simple class that has a main method that creates a single instance and invokes a single member method: String foo(String foo) { foo += "y"; // breakpoint set here foo += "z"; return foo; } I start up the debugger and do a JDEbug-Processes-Launch Process. The app starts, but there's no indication that my breakpoint has been hit (nothing shows up in the Locals buffer, though `foo' is definitely a local with a value at this point. JDEbug-Continue runs the app to completion without hitting my breakpoint. If I set two breakpoints, the same thing happens, so I'm pretty sure that it's not a problem of the display not being updated to the breakpoint. The debugger output follows. Thanks, Eric *** Debugger Output for Process FooBar(5) *** vm started... All threads suspended... Launch command line: java -classpath /home/eric/classes/xerces.jar:/home/eric/prj/ETJavaFoundation/classes:/home/eric FooBar Emacs connected to standard IO port 33819 for process FooBar. Launched VM Java Debug Interface (Reference Implementation) version 1.3 Java Debug Wire Protocol (Reference Implementation) version 1.0 JVM Debug Interface version 1.0 JVM version 1.3.1-beta (Java HotSpot(TM) Client VM, interpreted mode) initSIOConnect: starting standard I/O handshake. initSIOConnect: starting SIO connect thread. Debugger waiting for Emacs to connect to app SIO port 33819. Debugger connected to standard I/O socket. Running FooBar. FooBar process ended. vm disconnected...