Hi Sandip, I haven't had time to evaluate your proposed enhancement. I hope to get to it this evening. I'll let you know as soon as I do.
Paul Chitale, Sandip V writes: > FRC posted this on gnu.emacs.help: > > <FRC post> > It goes like this in the jde-mode-hook of my .emacs: > > (mapatoms > (lambda (symb) (and (symbolp (symbol-function symb)) (string-match > "tempo-template-jde-gen" (symbol-name (symbol-function symb))) > (put (symbol-function symb) 'no-self-insert t))) > local-abbrev-table) > > I'm still an Emacs-Lisp rookie, so there might be a better way to get > the same result. > Note that it somewhat messed with completions within comments, as in > these cases I do want the space insertion but the expansion (even if > void) eats it unconditionally. This is a minor pb AFAIC and quoting > with C-q does the job. > > HTH, > > FRC > </FRC post> > > -----Original Message----- > From: Chitale, Sandip V > Sent: Wednesday, September 17, 2003 12:08 PM > To: '[EMAIL PROTECTED]'; 'Paul Kinnucan' > Cc: '[EMAIL PROTECTED]' > Subject: if template > > > > Marcel, > > I think I have a solution for your issue: > > <ISSUE> > I've got a problem with jde's if-template. F.e. I want to write > > if (a == b) { > > } > > However, when I type `i' - `f' - <SPACE>, this here happens: > > if ( [cursor]) { > > } > > As you can see, there's a space before the cursor. This space does not > appear because of one of these 3 conditional spaces but because of me > having typed the <space> key. What do I have to change in order to get > after typing `i' - `f' - <SPACE> this here: > > if ([cursor]) { > > } > > that is there's no space before the cursor. > </ISSUE> > > The solution is to set the 'no-self-insert property of the > tempo-template-* defuns. These tempo-template defuns are created in > jde-gen-define-abbrev-template in jde-gen.el Here is the hacked code: > > (defun jde-gen-define-abbrev-template (abbrev template) > "Defines a TEMPLATE that replaces ABBREV when you type ABBREV in a JDE > source buffer. TEMPLATE is a list of tempo template elements. See > `tempo-define-template' for information on template elements. The > resulting template is added to the list bound to > `jde-gen-abbrev-templates'. " > (let ((template-name (concat "jde-gen-" abbrev))) > (defalias (intern template-name) > (tempo-define-template > template-name > template > abbrev > (format "JDE template for %s control flow abbreviation." abbrev) > 'jde-gen-abbrev-templates)) > (put (intern (concat "tempo-template-" template-name)) > 'no-self-insert t))) > > I am sure the defun could be optimized and integrated into jde or > defadvised(?). > > Paul, can you integrate this? > >