Emacs

Emacs + Metals + lsp-mode でScalaを書く

最近重たい処理走らせてる時とかにIntelliJが遅くてつらかったのでEmacsでもある程度コード読んだり書けたり出来るようにしました。 最近はLSPが人気あるようでEmacsでもlsp-modeというのが結構使われているみたい。Scalaの場合はLSPとしてMetalsを使うこと…

EmacsをTerminalとして使う

emacs-libvterm っていうのを見つけたのだけどこれがすごく良いので紹介します。 emacs-libvterm https://github.com/akermu/emacs-libvterm EmacsにはTerminal系の機能としてterm-modeやeshellなどがあるんですが、遅かったり、クセが強かったりで使えてま…

iedit-mode が便利

変数名の変更には良く、query-replace を使っていたのですが、IDEでよくあるように複数箇所の同時編集がしたくなって探したら iedit-mode というのを見つけました。 tsdh/iedit デフォルトでは「C-;」で iedit-mode に入ります。 すると、バッファ内でカーソ…

anythingでプロジェクト内ファイル検索

https://github.com/tototoshi/anything-find-files-in-project/blob/master/anything-find-files-in-project.el動きとしては 1.現在のディレクトリから上にbuild.sbtとかpom.xmlとかそういうプロジェクトのルートに置いてそうなファイル探しにいく。 2.見つ…

main/testの間を素早く移動する

ScalaもJavaもEmacsで書いてます。ScalaはともかくJavaはつらい。 つらいけど、 yasnippet(Javaは冗長すぎてyasnippetが楽しい)と anything(import補完elispとか書いてる)と malabar-mode(すごい)とかがあるので生きてます。 あと自動コンパイルはinotify+wh…

シェルコマンドの実行結果をEmacsのバッファに吐き出す

見つけた lewang/e-sink - GitHub https://github.com/lewang/e-sink cloneします。 $ git clone git://github.com/lewang/e-sink.git e-sinkはe-sink.elとe-sink.plから構成されています。 e-sink -- e-sink.el `-- e-sink.pl 設定 e-sinkはemacsclientを使…

代入文の左辺右辺を書く順番を逆にする

例えば $a = array(); とか書くときに 代入される側の $a のほうを先に書くのは自然な流れではない。 array() のほうを先に書きたい。というか思わずそっちから書き始めちゃう。 だからこういうコマンド便利じゃないかと思った。 (defun my-php-super-semico…

EmacsLispのファイルパス連結

EmacsLispでパスを連結する方法 別に (concat "/home" "/" "homuhomu") とかでも事足りてしまうんだけどやっぱり納得いかんよね。 file-name-as-directoryを使いましょう。 後ろに/を付けてくれる。 ELISP> (file-name-as-directory "/home") "/home/" ELISP…

load-path通しまくり

今まで律儀に (add-to-list 'load-path "~/.emacs.d/ほむ") (add-to-list 'load-path "~/.emacs.d/ほむほむ") (add-to-list 'load-path "~/.emacs.d/ほむほむほむ") (add-to-list 'load-path "~/.emacs.d/ほむほむほむほむ") .... ってやってたわけだが (dol…

Emacsでrfcを読む

ちょっと便利よ。 ;; rfc (defvar my-rfc-directory "~/Documents/rfc" "The directory rfc documents are saved") (defun rfc (n) "Open the rfc document. If the specified document doesn't exist, Download it from internet." (interactive "nNo.: ") …

Emacsでフォントを設定する

Emacsでのフォントの設定でぐぐると自分でフォントセットを定義したり.Xresourcesいじったり、一生懸命な人が多いけれど んなことしなくても簡単な方法あるよってことで。まず、 M-: (customize-face 'default)する。デフォルトの外観の設定画面が出るからFo…

XmonadからStumpWMに乗り換えました

Xmonadをしばらく使ってたのですがHaskellわかんないのでStumpWMに乗り換えてみました。 StumpWMはCommon Lispで実装されたタイル型WMで、設定もCommon Lispで書けます。イエーイ インストール インストールはUbuntuならapt-getで入ります。 $ sudo apt-get inst…

Scalaではてダ用のコマンドラインツールを作りました。

Scalaではてなダイアリーの記事をコマンドラインから管理できるツールを作りました。 Scalaなのでjavaがあれば使えます。 付属のhateda.elを使えばEmacsからも使えます。 今のところ下書きAPIに対応しています。 というか下書きだけ管理できれば十分かなあと…

php-modeからPHP Manualを開く

Emacsにはデフォルトでphp-modeあるけどまずインデントからしておかしいのでこっち使いましょう、ってのが前提。 PHP mode for Emacs http://php-mode.sourceforge.net/ このphp-mode、マニュアルへのジャンプ機能があるみたい。 C-cRETでマニュアルのトップ…

ensimeで標準以外の scaladoc/Javadoc をブラウザで見る

TLで流れてきたので 以下の例はhttpcomponents-clientのJavadocを開く場合。 ;; URLを生成する関数を定義して、 (defun ensime-org-apache-http-doc-url (type &optional member) (ensime-make-java-doc-url-helper "http://hc.apache.org/httpcomponents-cl…

zencoding + emacs

zencodingとは div#hoge>table>tr>td とか書いて、展開させて、HTMLちょっぱやで書こうぜってやつね。 Emacsで使う 全部ここに書いてある EmacsWiki: Zen Coding 簡単に説明すると 1. zencoding-mode.elをダウンロード はい、ここから http://github.com/chr…

ansi-termで複数のバッファを開かないようにする

M-x ansi-termするたびに *ansi-term* *ansi-term* *ansi-term* *ansi-term* ... とバッファが増えていくのがうざいので、 *ansi-term*バッファがなければ新しく開く すでに*ansi-term*があればそのバッファに切り替える という動きをするようにアドバイス。…

scala-modeで*inferior-scala*をポップアップさせるadvice

scala-modeでは M-x scala-run-scala でscalaインタプリタが起動します。 C-c C-r (scala-eval-region)や、C-c C-b (scala-eval-buffer)で式を評価することができます。 ただ少し困ったことに、scala-eval-region, scala-eval-bufferをした結果を見るために…

英辞郎 on the web をEmacsで使う

Emacsで辞書を引く機能としてはsdicなんかがメジャーだったりしますが、英辞郎のデータ買うのめんどくさいのでWeb版を使ってます。 id:uhiaha888さんと同様、自分も英辞郎on the webからデータを取得してEmacs内で表示しようと思ったこともありましたが、 HT…

Emacsのブックマーク機能

Emacsにはブックマーク機能が標準で入っているのだけど、 どうもあまり知られていないらしい。 開いているファイルやディレクトリを登録する まずブックマーク登録の仕方です。 今いるディレクトリ(bookmark-test)を登録してみます。 「C-x r m 」で↓のよう…

Sunrise Commander

EmacsWiki: Sunrise Commander ちょっと便利そうだなって思って使ってみてます。 高機能なDiredな感じ? 名前が必殺技っぽくていいですね。 例えばファイルをコピーするとき、Diredだとコピー先を打ち込むの面倒じゃないですか? Sunrise Commanderだと2つ…

無駄な行末の空白を削除する(Emacs Advent Calendar jp:2010)

Emacs Advent Calendar jp: 2010 : ATND 『5分でさくっとかけるような tips でいいのです。そういう tips の方が意外と有用だったりするのですから。』 ということで、 しょうもないようで、でもこれがないとやってられん!っていうTips紹介します。 みなさ…

Scalaハッカソン(Scala勉強会第10回)に参加しました。

Scala勉強会第10回 in 渋谷 : ATND 毎週水曜に開かれているScala勉強会@渋谷ですが、 今週は文化の日とぶつかったのをいいことに、 ハッカソンとなりました。 会場はGMOさん@セルリアン。 10:00〜18:00まで各自好きにいろいろやってました。Lift触ってる人 W…

Scala + Emacs + ctags

Scalaでタグジャンプ exuberant-ctags のインストール ubuntuの場合 $ sudo apt-get install exuberant-ctags .~/ctagsの設定 ctagsはデフォルトではscalaに対応していないようですが、 設定を加えることで簡単に対応させることができます。~/.ctags に次の…

scala-mode + imenu

scala-modeにimenuがつくようになるのを祈りつつ。 やっつけ仕事 ↓こんな感じ e2wmでimenuを右に表示してます。 あとついでにanything-imenuもやってる。 あと美人時計ですねっ! とりあえずこれでぴょんぴょん飛べるようになった。 パターンのもれはその都…

PHP + flymake

phpでflymake使おうと思ったんだけど flymakeの設定のしかた調べるのめんどかったから 適当にネット徘徊して設定パクろうと思った。 メモメモ ついでにjsとrubyのもくっついてますね。 VimからEmacsに乗り換えたので便利機能紹介します - 八発白中 (when (re…

auto-hightlight-symbol

shibuyalisp Hackathon参加してきました。 Emacs島で@kiwanamiさんにdeferred.elの解説してもらったり、 あとはEmacsいじって遊んでました。全然ハックしてない! 教えてもらった便利elauto-highlight-symbol http://github.com/mitsuo-saito/Junk/raw/maste…

ENSIMEのエラー内容表示

ENSIMEではシンタックスやtype mismatchのエラーがあると 色を付けて警告します。 で、エラーの原因は色が付いてる箇所にマウスを合わせると、ミニバッファに表示される、 のですが、これはX上(とかwindowsとか?)のEmacsのみで動作します。 without X つま…

ENSIMEのsbtコンソールが文字化けしたときの対処

sbtの起動オプションにこれ付け加えるといいよ。 -Dsbt.log.noformat=true sbt emacs mode | The Scala Programming Language

Scala勉強会でEmacsの話をしてきた。

週一という無謀なペースで開かれているScala勉強会in渋谷(#rpscala)に参加しています。 第6回の今回はちょっと発表してみました。 テーマは「ENSIME」 ひとつ前のエントリで書きましたが、Emacs上で動くScalaのIDEです。 前半はENSIMEの紹介、 後半は発表と…