ことさら−古都プログラマーの更級日記

京都でお寺を回りながら御朱印集めをしていたり、LoLをしたり試合を見に行ったりしているエンジニアのブログです。技術的なはなしとか日常的なはなし、カメラやLoLや競馬の話も書きます。右メニューに検索やらカテゴリーやらがあるので、見たい記事だけ見てね!

EmacsのQuickrunでKotlin Script(kts)を実行する - Quickrun未対応の言語をQuickrunで実行できるようにする

f:id:yoshiki_utakata:20180125113427j:plain
Kotlin(小鳥)

Quickrunとは

Quickrunというものがあります。もともとはVimプラグインですが、Emacsにも存在しています。

github.com

Emacsで今現在書いているコードをコマンド一つで実行してくれるというものです。

例えば

<?php

echo "hello world";

Emacsで書いて、M-x quickrun とすると、 hello world が実行されます。非常に便利なプラグインです。僕はphpunitの実行などに使っております。

QuickrunはKotlin未対応

Quickrunの対応言語は、GitHubリポジトリのREADMESupport Programming Languages を見てもらえれば分かるかと思いますが、先程述べたphpunitや、今回解説するKotlinは対応言語にありません。そこで、今回は.ktsファイルをQuickrunで実行できるようにしたいと思います。

Quickrunで.ktsを実行できるようにするための設定

Quickrunで新たな設定を定義する方法は、GitHubリポジトリのREADMEUser Defined Command に書いてありますが、詳しく説明します。

まずは、.kts ファイルを実行するためのコマンドの定義をします(Quickrunのインストール方法に関してはここでは省略します)。以下のように定義します。

(quickrun-add-command "kotlins"
  '((:command . "kotlinc")
    (:exec . "%c -script %s")))
  • 最初の "kotlins" というのはただの名前です。なんでも良いです。わかりやすい名前を付けて下さい。
  • :command はそのまんま、コマンドですので、kotlincとします。
  • :execは引数なども含めて実際に実行されるコマンドです。%c はコマンド、 %s は実行ファイル名になります。%c -script %skotlinc -script hogehoge.kts のようなコマンドになります

これがコマンド定義の最小構成です。

次に、.ktsで終わるファイル名の時に M-x quickrun が呼ばれたら、先程のコマンドを呼ばれるように設定します。

(add-to-list 'quickrun-file-alist '("\\.kts$" . "kotlins"))

全体では以下の通りになります。

(quickrun-add-command "kotlins"
  '((:command . "kotlinc")
    (:exec . "%c -script %s")))
(add-to-list 'quickrun-file-alist '("\\.kts$" . "kotlins"))

これで、 .kts ファイルを開いている時に M-x quickrun するとkotlin scriptが実行されるようになったかと思います。

参考