Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
インデントの崩れる音がする
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
enkatsu
December 01, 2020
Programming
290
0
Share
インデントの崩れる音がする
第65回スタジオ・アルカナ社内勉強会
インデントの崩れる音を聴く試み
enkatsu
December 01, 2020
More Decks by enkatsu
See All by enkatsu
NICOGRAPH 2022 で発表してきました
enkatsu
0
360
住所正規化 API をLambda + Redis で動くようにしたお話
enkatsu
0
500
Open Street Map の歩き方
enkatsu
0
480
Other Decks in Programming
See All in Programming
一度始めたらやめられない開発効率向上術 / Findy あなたのdotfilesを教えて!
k0kubun
3
2.7k
存在論的プログラミング: 時間と存在を記述する
koriym
5
740
Xdebug と IDE による デバッグ実行の仕組みを見る / Exploring-How-Debugging-Works-with-Xdebug-and-an-IDE
shin1x1
0
290
モックわからないマン卒業記 ~振る舞いを起点に見直した、フロントエンドテストにおけるモックの使いどころ~
tasukuwatanabe
3
440
Strategy for Finding a Problem for OSS: With Real Examples
kibitan
0
130
How to stabilize UI tests using XCTest
akkeylab
0
150
20260313 - Grafana & Friends Taipei #1 - Kubernetes v1.36 的開發雜記:那些困在 Alpha 加護病房太久的 Metrics
tico88612
0
240
条件判定に名前、つけてますか? #phperkaigi #c
77web
2
910
今からFlash開発できるわけないじゃん、ムリムリ! (※ムリじゃなかった!?)
arkw
0
170
AI活用のコスパを最大化する方法
ochtum
0
360
AI時代の脳疲弊と向き合う ~言語学としてのPHP~
sakuraikotone
1
1.8k
Symfony + NelmioApiDocBundle を使った スキーマ駆動開発 / Schema Driven Development with NelmioApiDocBundle
okashoi
0
250
Featured
See All Featured
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.4k
The SEO Collaboration Effect
kristinabergwall1
0
410
We Are The Robots
honzajavorek
0
210
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
280
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
140
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
1
1.5k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.4k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.2k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.2k
Art, The Web, and Tiny UX
lynnandtonic
304
21k
Transcript
インデントの崩れる⾳がする 2020/10/30 スタジオ・アルカナ社内勉強会 #65 株式会社スタジオ・アルカナ 遠藤勝也
背景 PRのレビューをしていると、頻繁にインデントが崩れていることがあった EditorConfigは設定されてる ⌘ + Opt + l で整形している 崩れるファイルは
.blade
原因 <div> <div> {{ $name }} </div> </div> 中の <div>
を削除して、 ⌘ + Opt + l で整形 <div> {{ $name }} </div> bladeの構⽂は無視してHTMLのみ整形される
そんなことはどうでもよくて
インデントの崩れる⾳が鳴ったら⾯⽩そうだと思った
デモ
⼿法 エディタのプラグインを開発する インデント崩れを検知する ※ 今回は「インデントが崩れた」というより 「インデントが削除されて⾏頭がスペース以外になった」という場合に絞る
エディタのプラグインを開発する エディタの選定 Visual Studio Code Atom Sublime Text Jetbrains IDE
エディタのプラグインを開発する Visual Studio Code CodeよりAtom派 Atom プラグイン開発の⼿順が結構更新されている印象なのでドキュメントを探すのが⼤ 変そう Sublime Text
最近使ってないからなー Jetbrains IDE Javaだし⾳を鳴らすことも簡単に出来そう
IntelliJ IDEAで開発する テンプレートリポジトリから https://jetbrains.org/intellij/sdk/docs/basics/getting_started.html https://github.com/JetBrains/intellij-platform-plugin-template IntelliJ IDEAのプロジェクト作成から https://qiita.com/Vexus2/items/e04a21f00e467b7ac8ad
⾳が鳴るまでの流れ . IDEを起動する . プラグインを有効化する . ファイルを編集してインデントを崩す . 保存する .
⾳が鳴る!
プラグイン有効化ショートカットの設定 resources/META-INF/plugin.xml で設定できる <keyboard-shortcut keymap="$default" first-keystroke="shift meta F12"/> これで shift
meta F12 を押すと、 com.intellij.openapi.actionSystem.AnActionEvent を継承したクラスの public void actionPerformed(AnActionEvent e) が実⾏される
ファイルの変更時に処理を実⾏する public void actionPerformed(AnActionEvent e) で com.intellij.openapi.vfs.newvfs.BulkFileListener を 実装したクラスを設定する。 //
this.createIndentPatrolListener() はBulkFileListener を実装したクラスを返すメソッド BulkFileListener listener = this.createIndentPatrolListener(project); this.connection = project.getMessageBus().connect(); this.connection.subscribe(VirtualFileManager.VFS_CHANGES, listener);
インデント崩れを検知する diff diff-match-patch diff4j ⾃前でパーサを書く
diff-match-patchを採⽤
class Main { public static void main(String[] args) { -
System.out.println("Hello, World!!"); +System.out.println("Hello, World!!"); } } 差分を取って改⾏の後にスペースが削除されていることを検出する
⾳を鳴らす javax.sound.sampled で鳴らせる
結果 エディタから⾳がなって嬉しい いまさらだけどJavaのStream APIかっこいい 崩れ⽅によって⾳の迫⼒を変えたい インデント崩れの検出⼿法を再検討したい
参考⽂献 https://jetbrains.org/intellij/sdk/docs/intro/welcome.html https://github.com/JetBrains/intellij-platform-plugin-template#sample-code