From: Hironori Kitagawa Date: Thu, 5 Nov 2015 07:48:35 +0000 (+0900) Subject: lltjp-listings.sty: lstinline (WIP; not working now) X-Git-Tag: 20151212.0~2^2~7 X-Git-Url: http://git.osdn.jp/view?a=commitdiff_plain;h=80461790cbe58933b43e3fe1cc6cc10befe8a18f;p=luatex-ja%2Fluatexja.git lltjp-listings.sty: lstinline (WIP; not working now) --- diff --git a/src/patches/lltjp-listings.sty b/src/patches/lltjp-listings.sty index dfd97ca..5f20a25 100644 --- a/src/patches/lltjp-listings.sty +++ b/src/patches/lltjp-listings.sty @@ -182,14 +182,15 @@ % redefine \lstinline@ and \lst@InlineG % because \lstinline!あ...! causes ``Runaway argument?'' Error \def\lstinline@#1{% - \lst@Init\relax + \lst@Init\relax\typeout{N}% \ltj@lst@check@inline{\lst@InlineM#1}{\lst@InlineJ#1}} \def\lst@InlineG{% - \lst@Init\relax + \lst@Init\relax\typeout{G}\tracingall% \ltj@lst@check@inline{\lst@InlineM\}}% {\let\lst@arg\@empty \lst@InlineGJ}} \def\ltj@lst@check@inline#1#2#3{% + \typeout{<\meaning#3, \meaning#1>} \begingroup \lccode`\~=`#3\lowercase{\endgroup \ifx~}#3% \def\lst@next{#1}% @@ -221,19 +222,21 @@ \lst@AddToHook{Init}{% \luatexcatcodetable\CatcodeTableLTJlistings\ltj@@listing@jpcmd \lccode`\~="FFFFF\lowercase{\def~{\ltj@lst@ProcessJALetter}}%" - \directlua{luatexbase.add_to_callback('process_input_buffer', - function(buf) - local ret = '' - for i = 1, utf.len(buf) do - local c = utf.sub(buf, i, i) - local cu = utf.byte(c) - if cu >= 0x80 and tex.getcatcode(cu) \string~= 13 then - ret = ret .. utf.char(1048575) % U+FFFFF + \directlua{% + luatexja.patch_listings = 1 + luatexbase.add_to_callback('process_input_buffer', + function(buf) + local ret = '' + for i = 1, utf.len(buf) do + local c = utf.sub(buf, i, i) + local cu = utf.byte(c) + if cu >= 0x80 and tex.getcatcode(cu) \string~= 13 then + ret = ret .. utf.char(1048575) % U+FFFFF + end + ret = ret .. c end - ret = ret .. c - end - return ret - end, 'ltj.listings_unicode', 1)}% + return ret + end, 'ltj.listings_unicode', 1)}% \if@ltj@lst@double \let\ltj@lst@hss@normal=\ltj@lst@hss@double \else @@ -245,10 +248,45 @@ \let\ltj@lst@hss=\ltj@lst@hss@normal \fi } + +\def\ltj@lst@MakeActive#1{% + \let\lst@temp\@empty \ltj@lst@MakeActive@#1\relax} +\begingroup +\catcode`\^^A=12 +\catcode`\^^@=\active +\lccode`\$="FFFFF \catcode`\$=13 %" +\lowercase{% +\gdef\ltj@lst@MakeActive@#1{\let\lst@next\relax% + \ifx#1\relax + \else\let\lst@next\ltj@lst@MakeActive@ + \ifnum`#1>127 + \lccode`\^^A=`#1 + \lowercase{\lst@lAddTo\lst@temp{$^^A}}% + \else + \lccode`\^^@=`#1 + \lowercase{\lst@lAddTo\lst@temp{^^@}}% + \fi\fi\lst@next}} +\endgroup + + +\begingroup \lccode`\~=`\ \relax \lowercase{% +\gdef\lst@InsideConvert@#1 #2{% + \ltj@lst@MakeActive{#1}% + \ifx\@empty#2% + \lst@lExtend\lst@arg{\lst@temp}% + \else + \lst@lExtend\lst@arg{\lst@temp~}% + \expandafter\lst@InsideConvert@ + \fi #2} +}\endgroup + \lst@AddToHook{ExitVars}{% - \directlua{luatexbase.remove_from_callback('process_input_buffer', - 'ltj.listings_unicode')}% -} + \directlua{% + if luatexja.patch_listings then + luatexja.patch_listings=nil + luatexbase.remove_from_callback('process_input_buffer', + 'ltj.listings_unicode')% + end}} % 白線対策