From: Kevin H. <hu...@ea...> - 2009-02-19 20:53:03
|
Hi jEdit Devs, I'm working on a mode file for Nginx (nginx.net) configuration files. In Nginx syntax, there are a couple cases where tokens don't make sense. Thus, they shouldn't be highlighted unless they're in a certain context. I've ignored this issue in the past, but as I'm comparing against vim syntax files, I'm wanting "to do it right." (Vim doesn't get all the way there, but it seems to begin to have a notion of blocks.) For instance, the token "alias" only makes sense inside the "location { }" block. The "location" block only makes sense inside the "server { }" block. So upon encountering a "location ~ /uri {" scheme, I'd like to have the inside be delegated to another rule set. The problem is, I don't know how to do this. The closest I've been able to come is with something like: (Using '>' at line beginning so my email client won't wrap lines.) > <SEQ TYPE='KEYWORD1' AT_WORD_START='TRUE' DELEGATE='HTTP_CORE_SERVER_LOCATION'>location</SEQ> Then, inside the HTTP_CORE_SERVER_LOCATION rule set, using > <SPAN TYPE='OPERATOR' NO_LINE_BREAK='FALSE' DELEGATE='HTTP_CORE_SERVER_LOCATION_BODY'> > <BEGIN>{</BEGIN> > <END>}</END> > </SPAN> > > <EOL_SPAN TYPE='KEYWORD2' DELEGATE='ALIAS'>alias</EOL_SPAN> But this gives other oddities, such as (not) matching a keyword after a block, or before, or otherwise not recognizing the block nature of the token. I don't see much about how to do recursive block delegations like this in the user docs. Any ideas, pointers, or help? Thanks, Kevin |