OSDN Git Service

Add tools to dump luatexja.fmt (work in progress). kmaeda-fmt
authorKazuki Maeda <kmaeda@users.sourceforge.jp>
Sun, 4 Dec 2011 23:43:12 +0000 (08:43 +0900)
committerKazuki Maeda <kmaeda@users.sourceforge.jp>
Sun, 4 Dec 2011 23:43:12 +0000 (08:43 +0900)
.gitignore [new file with mode: 0644]
config/ltjfmtutil.cnf [new file with mode: 0644]
config/luadump.lua [new file with mode: 0644]
config/luadump.tex [new file with mode: 0644]
config/luatexja.ini [new file with mode: 0644]

diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..e01d227
--- /dev/null
@@ -0,0 +1,6 @@
+*.log
+*.aux
+*.toc
+*.out
+*.tmp
+*~
diff --git a/config/ltjfmtutil.cnf b/config/ltjfmtutil.cnf
new file mode 100644 (file)
index 0000000..8ff805a
--- /dev/null
@@ -0,0 +1,8 @@
+#
+# ltjfmtutil.cnf
+#
+# Run: fmtutil --cnffile ltjfmtutil.cnf --all
+#
+
+luatexja luatex language.def,language.dat.lua luatexja.ini
+lualatexja luatex language.def,language.dat.lua lualatexja.ini
diff --git a/config/luadump.lua b/config/luadump.lua
new file mode 100644 (file)
index 0000000..840376e
--- /dev/null
@@ -0,0 +1,46 @@
+--
+-- luadump.lua
+--
+
+-- ToDo: initex 時の dofile(), loadfile() の hack
+--       restore 時の require(), dofile(), loadfile() の hack
+--       読み込み済みファイルリストの作成.
+
+module('luadump', package.seeall)
+
+local require = _G.require
+
+function require_and_register(modname)
+   local ret = require(modname)
+
+   local modfilename = string.gsub(modname, '[.]', '/') .. '.lua'
+   local modfilepath = kpse.find_file(modfilename)
+   if modfilepath then
+      lua.bytecode[bytecode_index] = loadfile(modfilepath)
+      bytecode_index = bytecode_index + 1
+   end
+
+   return ret
+end
+
+function init()
+   bytecode_index = 1
+   _G.require = require_and_register
+end
+
+function finalize()
+   _G.require = require
+end
+
+function restore()
+   local write_nl = texio.write_nl
+   texio.write_nl = function() end
+   local i = 1
+   while lua.bytecode[i] do
+      print(i)
+      lua.bytecode[i]()
+      lua.bytecode[i] = nil
+      i = i + 1
+   end
+   texio.write_nl = write_nl
+end
\ No newline at end of file
diff --git a/config/luadump.tex b/config/luadump.tex
new file mode 100644 (file)
index 0000000..31ce8c6
--- /dev/null
@@ -0,0 +1,37 @@
+%
+% luadump.tex
+%
+
+\catcode`@=11
+
+\directlua{require('luadump')}
+
+\let\luadump@directlua@orig\directlua
+
+\long\def\luadump@directlua#1{%
+  \luadump@directlua@orig{
+    #1
+    lua.bytecode[luadump.bytecode_index] = function()
+      #1
+    end
+    luadump.bytecode_index = luadump.bytecode_index + 1
+  }%
+}
+
+\def\luadump@init{%
+  \directlua{luadump.init()}
+  \let\directlua\luadump@directlua
+}
+
+\def\luadump@finalize{%
+  \let\directlua\luadump@directlua@orig
+  \let\luadump@directlua\undefined
+  \let\luadump@directlua@orig\undefined
+  \let\luadump@init\undefined
+  \let\luadump@finalize\undefined
+  \directlua{luadump.finalize()}
+  \everyjob{\directlua{require('luadump'); luadump.restore()}}
+  \catcode`@=12
+}
+
+\endinput
diff --git a/config/luatexja.ini b/config/luatexja.ini
new file mode 100644 (file)
index 0000000..a9e448d
--- /dev/null
@@ -0,0 +1,22 @@
+%
+% luatexja.ini
+%
+
+\let\DUMP\dump
+\let\dump\relax
+
+% from luatex.ini
+\input luatexiniconfig.tex
+\input luatex-unicode-letters.tex
+\input pdftexconfig.tex
+\input etex.ini
+
+\input luadump.tex
+\luadump@init
+\input luatexja.sty
+\luadump@finalize
+
+\let\dump\DUMP
+\let\DUMP\undefined
+
+\dump