[TxMt] (Another) Language grammar question
    Édouard Gilbert 
    edouard.gilbert at eleves.bretagne.ens-cachan.fr
       
    Sun Jun  3 22:57:14 UTC 2007
    
    
  
Hi everyone,
<not very interesting context>
I'm currently working with a software called OpenMusic. It's based on  
an extension of Lisp and make massive use of CLOS.
I thus often have to define new classes. I don't know if it's CLOS or  
OpenMusic related, but class slots definition are quite ineffective.  
Typically, defining a class in OM would look like
(defclass* name (superclasses)
	((<slot name> :accessor <slot name> :initarg :<slot name> :initform  
<default value> :type <type of the slot>
	  :documentation "<obscure string>"))
)
The boring part, that is slot definition, could of course benefit a  
lot of snippets. Typically, a <enter> short cut (or is it <return> ?  
Well, the keypad one.), as in LaTeX itemize environment, would be  
perfect.
So I'd like to define and extension of the Lisp language to match my  
need. I already had a slight problem and expect more to come (like  
when I started to write one for the GP language).
So here is the first one that I met. As you can see above, class are  
usually defined by defclass* instead of defclass.
I didn't find in the documentation how to match the * character.  
Escaping the * with \, as in
		{	name = 'meta.class.lisp.openmusic';
			match = '(\b(defclass|defclass\*)\b)(\s+)((\w|\-|\!|\?)*)';
			captures = {
				2 = { name = 'storage.type.class.lisp.openmusic'; };
				4 = { name = 'entity.name.class.lisp.openmusic'; };
			# Of course, there are still plenty of things missing.
		};
apparently won't work. What did I wrote wrong in that part ? It's  
just the meta.function.lisp rewritten and it does what expected when  
used with "defclass".
Thanks for your help,
Édouard
PS : I know I could perfectly avoid such troubles by creating a tab  
triggered snippet, but that's just a nice occasion to get in TM  
languages definition a bit further.
    
    
More information about the textmate
mailing list