zsh-workers
 help / color / mirror / code / Atom feed
* [PATCH] zyodl.vim: Fix nested parentheses
@ 2015-07-16 23:36 Daniel Shahaf
  0 siblings, 0 replies; only message in thread
From: Daniel Shahaf @ 2015-07-16 23:36 UTC (permalink / raw)
  To: zsh-workers

---

This seems to work.  Adding "contains=zyodlParenthetical" to
zyodlSItemArg2 made the latter match too much, so I settled for
a "skip=" instead, which ought to be good enough in practice.

(The difference is whether nested parentheticals inside a zyodlSItemArg2
would be highlighted correctly, similarly to the new 'chapter(...)'
testcase.)

Daniel



diff --git a/Util/zyodl.vim b/Util/zyodl.vim
index 94efb29..b67bfa5 100644
--- a/Util/zyodl.vim
+++ b/Util/zyodl.vim
@@ -22,8 +22,13 @@
 "   example(print *.c+LPAR()#q:s/#%+LPAR()#b+RPAR()s+LPAR()*+RPAR().c/'S${match[1]}.C'/+RPAR())
 "   ifzman(zmanref(zshmisc))ifnzman(noderef(Redirection))
 "   LPAR()foo 42 foo+RPAR()
+"   chapter(foo (foo) foo)
+"   chapter(foo (foo (foo) foo) foo) bar
+"
+"   # intentionally doubled
+"   sitem(foo)(foo (foo) foo)
+"   sitem(foo)(foo (foo) foo)
 "
-"   chapter(foo (foo) foo) # nested parentheses
 "   sitem(foo)(foo tt(foo) foo) # nested underline
 
 if exists("b:current_syntax")
@@ -33,25 +38,28 @@ endif
 "" Syntax groups:
 syn clear
 syn cluster zyodlInline contains=zyodlTt,zyodlVar,zyodlBold,zyodlEmph,zyodlCond
-syn region zyodlTt      start="\<tt("      end=")" contains=zyodlSpecial
-syn region zyodlVar     start="\<var("     end=")" contains=zyodlSpecial
-syn region zyodlBold    start="\<bf("      end=")" contains=zyodlSpecial
-syn region zyodlEmph    start="\<em("      end=")" contains=zyodlSpecial
+syn region zyodlTt      start="\<tt("      end=")" contains=zyodlSpecial,zyodlParenthetical
+syn region zyodlVar     start="\<var("     end=")" contains=zyodlSpecial,zyodlParenthetical
+syn region zyodlBold    start="\<bf("      end=")" contains=zyodlSpecial,zyodlParenthetical
+syn region zyodlEmph    start="\<em("      end=")" contains=zyodlSpecial,zyodlParenthetical
 syn region zyodlIndex   start="\<.index("  end=")" contains=zyodlSpecial
 syn match  zyodlSpecial "+\?\<\(LPAR\|RPAR\|PLUS\)()"
 syn match  zyodlNumber  "\d\+"
 syn region zyodlItem    start="\<xitem(" end=")" contains=zyodlSpecial,@zyodlInline
 syn region zyodlItem    start="\<item("  end=")" contains=zyodlSpecial,@zyodlInline
 syn region zyodlExample start="\<example(" end=")" contains=zyodlSpecial
-syn region zyodlTitle   start="\<\(chapter\|subsect\|sect\)(" end=")" contains=zyodlSpecial,@zyodlInline
+syn region zyodlTitle   start="\<\(chapter\|subsect\|sect\)(" end=")" contains=zyodlSpecial,@zyodlInline,zyodlParenthetical
 syn match  zyodlTitle   "^texinode(.*$"
+syn region zyodlParenthetical start="\w\@<!(" end=")" transparent contained contains=zyodlParenthetical
 
+" zyodlCond doesn't contain zyodlParenthetical, since section names (probably) don't have parentheticals.
 syn region zyodlCond    start="\<\(ifzman\|ifnzman\)(" end=")" contains=zyodlRef,zyodlSpecial,@zyodlInline
 syn region zyodlRef     start="\<\(zmanref\|noderef\)(" end=")"
 
+" zyodlSItemArg2 should use zyodlParenthetical instead of the 'skip='
 syn keyword zyodlKeyword sitem nextgroup=zyodlSItemArg1
 syn region zyodlSItemArg1 oneline start="(" end=")" contains=zyodlSpecial,@zyodlInline nextgroup=zyodlSItemArg2 contained
-syn region zyodlSItemArg2 start="(" end=")" contains=zyodlSpecial,@zyodlInline contained
+syn region zyodlSItemArg2 start="(" end=")" contains=zyodlSpecial,@zyodlInline contained skip="\w\@<!([^)]*)"
 
 "" Highlight groups:
 hi def link zyodlTt Constant


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2015-07-16 23:36 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-07-16 23:36 [PATCH] zyodl.vim: Fix nested parentheses Daniel Shahaf

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).