タイトルで出落ちしてます。どうも、山口です。
前回の最後に、Atomで不要な制御文字が混入したら表示してくれるような
パッケージを作る、と言ってしまったので、
今回はそれにチャレンジ!!
あれ?ギャグ担当がちゃんとテックブログしてる?
ちなみに前回の記事は以下から(宣伝)
怪奇!!アスキーコード混入の巻(Atom編) - gracetory’s blog
どっち!?CoffeeScript と JavaScript
サイトでAtom用パッケージの作り方を紹介してくれている方はたくさんいたのですが、
CoffeeScriptとJavaScriptでの作り方が混在していてわけわからん状態でした。
もともと、AtomのパッケージはCoffeeScriptで書くものだったらしいのですが、
数年前からなんだかんだでJavaScriptで書けるようになったらしいですね。
ちょっと調べた感じ、CoffeeScriptは私には合わなそうだったので、
普通にJavaScriptで作れるようになったのはありがたや〜
最初の挫折
はい。無理でした。
前提として、「私はPHPしか書けない」。
私のスキルの問題はひとまず置いておいてください。
書けないなら勉強すればいいんです。現に今勉強中です(おせーよ)。
しかし!!
(ブログのネタ的に)今すぐに成果を得たい私は強硬手段に出ます!
いともたやすく他人のコードを利用するえげつない行為
Atomに絶賛提供してくれている、raccy様のパッケージ!!
このパッケージ、全角のスペースを可視化してくれる大変ありがたいパッケージなのです!!
名だたる企業さんも利用されているらしい、由緒ただしきパッケージなのです!!
デフォルトで表示してくれないAtomさんってどうなの?
で、漆黒の意思を持つ私は、
「全角スペースを判定してるところを見つけ出して、
そこに制御文字も追加すればいいんじゃない?」
と考えたわけです。
今回は人様のパッケージをアレンジするだけです。
自分でパッケージを作って公開するのはまた次の機会に。
再び挫折
長くなってきたので割愛しますが、
私のスキル不足で「不要な制御文字を別の文字に置き換えて表示」
という部分がなかなかできず。
本業の仕事もあるので、ひとまず
「不要な制御文字を見つけたら、エディタ側で通知を出す」
ができれば良しというようにハードルを下げました。
当初の理念は何処へやら…
コードを追加しよう!!
変更を加えるのは、lib/character-marker.coffee のみです。
通知の出し方は、以下のサイトを参考にしました。
# CompositeDisposableを追加 {Range, Point, CompositeDisposable} = require 'atom' # 通知オプション設定 option = detail: "ASCII Control Code In!!" dismissable: true # ボタンを押すまで通知が消えない # icon: null module.exports = class CharacterMarker # ~~割愛~~ checkText: (text) -> for char of @charMap if text.includes char return true # もし不要な制御文字が出てきたら通知をだす if text.match /[\x00-\x08\x0b-\x1f\x7f]/ atom.notifications.addWarning("Warning", option) return false # ~~割愛~~
ハードルを下げただけあって、簡単ですね!!
実際に前回の記事のやり方で使ってみたらこうなりました。
お、それなりにそれっぽい?
感想
「お、それなりにそれっぽい?」じゃねーよ、9割人様のものだろ。
無論、これで良しとはしません。
- 制御文字を可視状態にする
- パッケージをちゃんと自分で作って公開する
これらを達成するまで、このシリーズは続きます。
ブログのネタがしばらくできたぞ、わーい
次回はおそらくCEDECのレポートになる予定です。
お楽しみ(?)に!!