[ 新規に投稿する ]

「textlintを処理するマクロサンプル」の動作についてNo.40712
はっち さん 23/07/13 13:54 [ コメントを投稿する ]
  こんにちは。「textlintを処理するマクロサンプル」の画面表示について質問があります。

まず、textlint001.zipを解凍し、textlint.iniを編集後「マクロ」→「マクロ実行」→「textlintしてアウトプット枠に出す」を押すと以下のエラーが発生します。

--
textlint:実行を開始しました。結果が反映されるまで操作を続行できます。

Error
Please specify --stdin-filename option

Stack trace
Error: Please specify --stdin-filename option
    at Object.execute (S:\Desktop\nanika\node_modules\textlint\lib\src\cli.js:86:27)
--

このエラーはtextlint.macの6行目を

--
$ini=(currentmacrodirectory+"\\textlint.ini");
--

に、textlint_hidemaru.jsの6行目を

--
var strCmdLine = "npx.cmd textlint --dry-run -f json --stdin --stdin-filename *.txt"
--

にすることで回避できました。

この状態で「マクロ」→「マクロ実行」→「textlintしてアウトプット枠に出す」を押すと、textlint自体は動作しますが、アウトプットペインに以下のように表示されます。

--
textlint:実行を開始しました。結果が反映されるまで操作を続行できます。
textlint:結果を反映します。
こんにちは、私の、名前は、名無しのごんべぇ、といいます、よろしくです。。
こんにちは、はろー、わーるど、てすてうs
子供
[{"messages":[{"type":"lint","ruleId":"ja-no-mixed-period","message":"文末が\"。\"で終わっていません。","index":57,"line":2,"column":20,"range":[57,58],"loc":{"start":{"line":2,"column":20},"end":{"line":2,"column":21}},"severity":2},{"type":"lint","ruleId":"no-mixed-zenkaku-and-hankaku-alphabet","message":"アルファベットは「半角」で表記します。","index":57,"line":2,"column":20,"range":[57,58],"loc":{"start":{"line":2,"column":20},"end":{"line":2,"column":21}},"severity":2,"fix":{"range":[57,58],"text":"s"}},{"type":"lint","ruleId":"no-hoso-kinshi-yogo","message":"放送禁止用語「子供」が含まれています。 言い換え語: 子ども 参照: http://monoroch.net/kinshi/","index":60,"line":3,"column":1,"range":[60,61],"loc":{"start":{"line":3,"column":1},"end":{"line":3,"column":2}},"severity":2,"fix":{"range":[60,62],"text":"子ども"}},{"type":"lint","ruleId":"ja-no-mixed-period","message":"文末が\"。\"で終わっていません。","index":61,"line":3,"column":2,"range":[61,62],"loc":{"start":{"line":3,"column":2},"end":{"line":3,"column":3}},"severity":2}],"filePath":"*.txt"}]
--

「秀丸エディタのマクロライブラリ」内の「textlintを処理するマクロサンプル」ページ
https://hide.maruo.co.jp/lib/macro/textlint001.html
に掲載されている画像のような形に出力させるにはどのようにすればよろしいでしょうか?

秀丸エディタのバージョンは9.23 32bitバージョンです。
OSはWindows 11 HomeEditionです。

textlintを動作させたいファイルはS:\Desktop\nanika\sample.txtです。
内容は

--
こんにちは、私の、名前は、名無しのごんべぇ、といいます、よろしくです。。
こんにちは、はろー、わーるど、てすてうs
子供
--

です。

textlint001.zipの解凍先はC:\Users\Me\AppData\Roaming\Hidemaruo\Hidemaru\Macroです。(ユーザ名はMeに置換しています)

textlint.iniの内容は

--
[textlint]
dir="S:\Desktop\nanika"
--

です。(フォルダ名はnanikaに置換しています。)

textlint.macは以下の通りです。

--
//textlint 自動サンプル

//設定は、textlint.iniで場所だけを指定します。
hidemaruversion ("9.19.14");

$ini=(currentmacrodirectory+"\\textlint.ini");
$dir=getinistr($ini,"textlint","dir");

jsmode (@"JScript\textlint_sample");
execjs ("textlint_hidemaru.js");
endmacro;
--

textlint_hidemaru.jsは、上記の6行目以外は変更しておりません。

何か手がかりがありましたらお教えください。よろしくお願いいたします。
[ ]
RE:40712 「textlintを処理するマクロサンプル」の動作についてNo.40713
秀丸担当 さん 23/07/13 15:56 [ コメントを投稿する ]
  textlintを改めてインストールしてみたら、確かにエラーになるようでした。
最近のバージョンで仕様が変わったのか、ご指摘のように、以下のようにするといいようでした。

var strCmdLine = "npx.cmd textlint --dry-run -f json --stdin --stdin-filename *.txt"

はたして書き方が合っているのか謎ですが、全くご指摘の通りの書き方で、「--stdin」に加えて、さらに「--stdin-filename *.txt」と書くとなぜかうまくいきます。
同一フォルダの*.txtを全部調べるわけではなく、現在開いているファイルを直接見るわけではなく、普通に現在編集中の、未保存の内容を標準入出力を介してちゃんとできました。
「--stdin-filename *.txt」というのは実際の動作と関係無さそうに思えるので、もしかしたら今後textlintのほうで修正があるかもしれないです。

textlint.macの6行目は
$ini=currentmacrodirectory+"\\textlint.ini";
のままでいいと思います。


他には、サンプル画像の通りにするとしたら、textlint001.zipのReadme.txtにあるような、ルールの導入があるといいです。
コマンドプロンプトで、インストール先(S:\Desktop\nanika)に移動して、句読点の多さだけのルールだとしたら、以下のようにします。

S:
cd Desktop\nanika
npm install --save-dev textlint-rule-max-ten
npx textlint --init
[ ]
RE:40713 「textlintを処理するマクロサンプル」の動作についてNo.40714
はっち さん 23/07/13 16:44 [ コメントを投稿する ]
  こんにちは、お世話になります。

textlintの--stdin-filenameの件は、textlintを開発されたazu氏がブログにて言及されております。直リンクを張って良いのかわかりません。ブログのキーワードは「textlint v12.3.0リリース: ESMで書かれたルールを読み込めるように」です。ご参照お願いいたします。

"*.txt"であっているのかは私にもわかりませんが、とりあえず動作はしております。

textlint.macの6行目は、元々は$init=currentcacrodirectory+"\textlint.ini";になっておりました。円記号が一つ少ない状態でした。

$ npx textlint --init
は見落としておりました。ルールはすでにインストールされており、手書きで.textlintrcファイルを作成しておりました。
当該コマンドを実行後、改めてtextlintを実行しましたが、特に動作に変わりはありませんでした。

サンプル画像では指摘点の文字の背景色が変わり、ポップアップのような画面で指摘内容が表示されています。

当方の画面では、指摘点の色が変わったりポップアップは出ず、コマンドラインでtextlintを動作させたときに表示されるメッセージのみがアウトプットペインに表示されます。(画像をお見せできるとわかりやすいと思います。何か方法はありますか?)

どうぞよろしくお願いいたします。
[ ]
RE:40714 「textlintを処理するマクロサンプル」の動作についてNo.40715
秀丸担当 さん 23/07/13 17:33 [ コメントを投稿する ]
  詳しい情報ありがとうございます。
コマンドラインは変更があったのですね。失礼しました。
 --stdin-filename *.txtは意味があって必要でした。


マクロを手動実行すると、アウトプット枠は以下のように表示され、色が付きます。
------
textlint:実行を開始しました。結果が反映されるまで操作を続行できます。
textlint:結果を反映します。
test.txt(1,28) : 一つの文で"、"を4つ以上使用しています

textlint:完了しました。
------


..textlintrc.jsonは以下のようになっています。
------
{
  "plugins": {},
  "filters": {},
  "rules": {
    "max-ten": true
  }
}
------


マクロをもう一度手動実行すると、メニューは以下のようになります。
------
textlintしてアウトプット枠に出す
このファイル上で監視(W)
前の結果(1)
次の結果(2)
消去(3)
------

ここで、例えば次の結果(2)を選ぶと、色がついた読点のところに移動して、「一つの文で"、"を4つ以上使用しています」と出ます。
何か他に情報がある場合"taki@maruo.co.jp"までファイルを送ってもらってもいいです。
[ ]
RE:40715 「textlintを処理するマクロサンプル」の動作についてNo.40717
はっち さん 23/07/13 19:50 [ コメントを投稿する ]
  お世話になります。

念のためと思い、貼り付けていただいた.textlintrc.jsonファイルをもとに私が常用しておりますルールを入力し、それぞれ動作確認いたしました。

一つだけ動作不良を起こしているルールがあり、そのルールをfalse扱いにすると、他は正常に動作いたしました。

お手数をおかけしまして申し訳ございませんでした。
今後ともよろしくお願いいたします。
[ ]
RE:40717 「textlintを処理するマクロサンプル」の動作についてNo.40718
秀丸担当 さん 23/07/14 09:12 [ コメントを投稿する ]
  情報ありがとうございます。
できたということでよかったです。
またtextlintのコマンドラインに変更があったことがわかって助かりました。
[ ]

[ 新規に投稿する ]