「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.j
s:86:27)
--

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

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

に、textlint_hidemaru.jsの6行目を

--
var strCmdLine = "npx.cmd textlint --dry-run -f json --stdin --stdin-filenam
e *.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}},"severit
y":2},{"type":"lint","ruleId":"no-mixed-zenkaku-and-hankaku-alphabet","messa
ge":"アルファベットは「半角」で表記します。","index":57,"line":2,"column":20,
"range":[57,58],"loc":{"start":{"line":2,"column":20},"end":{"line":2,"colum
n":21}},"severity":2,"fix":{"range":[57,58],"text":"s"}},{"type":"lint","rul
eId":"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":"子ども"}},{"typ
e":"lint","ruleId":"ja-no-mixed-period","message":"文末が\"。\"で終わってい
ません。","index":61,"line":3,"column":2,"range":[61,62],"loc":{"start":{"li
ne":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\Macr
oです。(ユーザ名は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-filenam
e *.txt"

はたして書き方が合っているのか謎ですが、全くご指摘の通りの書き方で、「--stdi
n」に加えて、さらに「--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
は見落としておりました。ルールはすでにインストールされており、手書きで.textl
intrcファイルを作成しておりました。
当該コマンドを実行後、改めてtextlintを実行しましたが、特に動作に変わりはあり
ませんでした。

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

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

どうぞよろしくお願いいたします。

[ ]
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のコマンドラインに変更があったことがわかって助かりました。

[ ]