xyzzy lua-mode

xyzzyでlua-modeをなんとかしたいという話

xyzzyでlua-modeを作ろうと思ったんですが、構文ハイライトをさせようと思うと問題が。

luaではlong bracketという仕組みで複数行コメント及び複数行文字列リテラルを定義できます。

--[[
ここはコメントです。
複数行あります。
]]

a = [[これは"文字列"です。'改行'もできます。
ほげほげ]]

とまぁ、こんな感じです。

仕組み的に面白いのは複数行のコメントアウト

--[[
print("コメントアウトされています")
--]]

ここに‐を一個追加するとコメントアウトを無効にできます。

---[[
print("コメントアウトされていません。")
--]]

さらに=の数で対応ブロックを調整できるので、こんなことも。

--[=[
print([[複数行
表示したいな]])
--]=]

この構文をxyzzyのsyntax-tableで実装しようとすると無理があると思ったのでsyntax.ccに手を入れてやっとできるように。

lua使う人ってeditor何使ってるんでしょう? SciTEとかすかね、、、?

http://xyzzy-022.github.com/ にfeedbackできるとよいのですが、作法がわからず、、、(^^;

3 thoughts on “xyzzy lua-mode

  1. tetsu

    こんにちは、

    xyzzyでlua-modeを使いたくてこのページに辿り着いたんですが、
    `syntax.cc`にどのような修正を加えればいいかの情報を教えてもらっていいですか?

  2. ohno Post author

    返信遅くなりました。今、手元に0.2.2.250の変更後Binaryしかないので どのような変更をしたのかだけですが取り急ぎ。
    改造は以下の様にしています。

    – Chunk構造体に long bracket関連の境界状態を保持するメンバを追加して long bracketの走査関連等々追加
    – lua-mode.lを追加

    cc側の変更・追加は2~300行程度、lua-mode.lが 1000行弱ぐらいだったと思います。
    cc側は syntax stateの保持のために Chunk構造体に手を入れる必要があります。
    このために Buffer/syntax 等を変更し、syntax stateを更新するタイミングに全て手を入れる必要があったので
    他にも数ファイルを変更しています。

    lua-mode.lは 右も左もわからない中で フルスクラッチ実装ですので無駄が多そうですが、これくらいの規模です。

    時間できたら githubにあげて pull request出そうと思っていたのですが、forkしたところで力尽きてました。
    そのうち何とかしたいと思ってます、、、。

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.