$shibayu36->blog;

株式会社はてなでエンジニアをしています。プログラミングや読書のことなどについて書いています。

emacs

Emacsで特定のプロジェクトでだけ編集モードの設定を変える

最近JSを触っていて、このプロジェクトはインデントが2だけど、このプロジェクトはインデントが4で、プロジェクトごとに設定できないかなーという課題意識を持っていた。今まで全く知らなかったのだけど、これは.dir-local.elというのを利用すれば出来るよう…

user-emacs-directoryを利用して、特定のディレクトリにemacsの設定を隔離する

Caskはもう古い、これからはEl-Get - いまどきのEmacsパッケージ管理 - 貳佰伍拾陸夜日記d.hatena.ne.jp上記のブログに書かれている通りなのだけれど、自分もやってみたのでメモしておく。 動機 上記のブログを見て、emacsのパッケージ管理をel-get-bundleに…

emacsのmodelineでどのファイルを開いているか分かりやすくする

mode lineを出来るだけ良くしたい これまで mode-lineのモード情報をコンパクトに表示する - Life is very shortでごちゃごちゃしたモード情報をきれいにした smart-mode-lineを使い始めた - $shibayu36->blog;で、smart-mode-lineを使い始めたけど、あんま…

emacsにpowerlineを導入

smart-mode-lineを使い始めた - $shibayu36->blog;でsmart-mode-lineを導入したんだけど、出したい情報のカスタマイズがしやすくないよなーと思って、今度はpowerline.elを導入した。 インストール MELPAにあるのでそれで。 M-x package-install powerline設…

EmacsからiTermにコマンドを送る

EmacsからiTermに対してコマンドが送りたい時がある。例えば 現在Emacsで開いているファイルのディレクトリにiTermで移動したい 現在Emacsで編集中のテストをiTermで実行したい など。そういう時には以下の様なユーティリティを定義しておくと便利。AppleScr…

color-themeを使わずにemacsのテーマを変えたい

emacsのテーマを変えようとするとcolor-themeを使うのが標準っぽい感じだったのだけど、Emacs 24からはthemeフレームワークというのが導入されたみたいで、そちらを使ってテーマを作ったり使ったりするのが楽みたいという話を聞いた。Emacs 24以上を使うなら…

smart-mode-lineを使い始めた

mode-lineをカスタマイズしたいと思ってpackage.elのlistを眺めていたら、smart-mode-lineというのを見つけたので使ってみた。お手軽にmode-lineを見やすくするための拡張っぽい。 https://github.com/Bruce-Connor/smart-mode-line/ とりあえずMELPAにある…

cl-libをupdateしたら、Emacsが壊れた

この前血迷ってpackage.elで管理していたものを全部updateかけたら、emacs上で無限ループなどのいろいろな問題が起こり、emacsが動かなくなった。例えば helmを起動すると固まる yasnippetを起動すると(error "Lisp nesting exceeds `max-lisp-eval-depth'")…

バグが起こる最小構成のemacs設定を作る

先日【解決】emacsとrbenvとgemにハマってる - $shibayu36->blog;の挙動確認をしていて、どうやってデバッグしたらいいかよく分からなかった。ただ、よくバグ修正する時はおかしい挙動が再現する最小構成をまず作ることから始めると思うので、Emacsだとどう…

【解決】emacsとrbenvとgemにハマってる

emacsとrbenvとgemにハマってる - $shibayu36->blog; でずっとはまってて謎すぎたんだけど解決した。 原因 emacs上でGEM_HOMEが空文字に設定されていた。そのためGEM PATHSなどがおかしくなっていた。本当はunsetされていないといけない。再現させるにはterm…

ファイル名検索して一斉ファイルリネームする

例えばリファクタリングしたいときにクラス名を一斉に変える時がある。その時に対応するファイル・ディレクトリ名を一斉置換したい時がある。emacsで特定ディレクトリ以下の特定の名前のファイル・ディレクトリを抽出して、wgrepみたいに一括で変更したい— …

自分が入れたEmacs便利拡張・設定集 (2013年版)

年末emacs設定大掃除をして、これは捨てられないと思った設定書いてく - $shibayu36->blog;昨年に引き続き、2013年の自分のemacs.dを振り返るのをやろうと思います。今年はemacsでいろいろできるようにする、という方向よりも、emacsでの基本操作をどれだけ…

自分流の .emacs管理

この記事は.emacs Advent Calendar 2013の三日目です。.emacs Advent Calendarということなので、今回は僕自身がどうやって.emacsを管理しているかということについて書こうかなと思います。 .emacsの管理ってなかなか難しくて、init.elにずっと書き続けてい…

golang用にgo-eldocやflycheckなどを入れました

goインストールから、emacsにgo-mode, go-autocompleteを導入するまで - $shibayu36->blog; でgoのemacs用設定を少ししたのですが、もう少し設定を進めました。 go-eldocの導入 勧められたので入れたらだいぶ便利でした。カーソル位置のメソッドのドキュメン…

Emacs 24.3のアップグレードのリベンジです

前回やりたかったこととしては OS Xネイティブのフルスクリーンではなくて、Emacs 23の時のようなフルスクリーンにしたい インラインパッチを当てたい ということでした。今日調べてみたらなんか知見が溜まってきているようなので、もう一度リベンジしました…

goインストールから、emacsにgo-mode, go-autocompleteを導入するまで

最近社内でgo勉強会をしているので、goのインストールとemacsの基本的な設定を行った。 goのインストール とりあえず適当にbrewで入れた。 $ brew install goあと http://golang.org/doc/code.html を参考に適当にGOPATHとPATHを設定した。.zshrc # Go PATH …

Emacsでのテキストハイライトの話

最近、まあまあ複雑なコードを読むときに、これとこれをハイライトしておきながら見たい、ということが多くありました。それでちょうど関西Emacsもあるし、そういうこと聞くかーと思って聞いてみたら、それっぽいものがあったので紹介します。 auto-highligh…

関西Emacs 08に行って来ました

関西Emacsに行って来ました。僕は軽くEmacs上でテストするっていう話をしました。あといろいろ気になってたことの相談とか、便利な拡張とかを教えてもらったりしました。 Emacsでテストする 131026 kansai-emacs from Yuki Shibazaki https://github.com/shi…

helm-c-moccurの代わりにhelm-occurを使うようにした

https://github.com/milkypostman/melpa/issues/1102 githubのmelpa repositoryをwatchしていたら、こんなissueを見つけた。helm-c-moccurはメンテされて無く、helmのrepositoryで同様の機能が実装されているので、消しても良いとのこと。もともとhelm-c-moc…

emacs 24.3へのアップグレードに失敗しました

なんとなくemacsの最新にするかとおもったので、アップデートを試してみました。結果として失敗しました。 以下の記事を参考に。 Mac OS X にインラインパッチの当たった Emacs を Homebrew でインストール | Good Design and Great Hack Better Full Screen…

Emacs実践入門を読みました

Emacs実践入門 ?思考を直感的にコード化し、開発を加速する (WEB+DB PRESS plus)作者: 大竹智也出版社/メーカー: 技術評論社発売日: 2012/03/07メディア: 単行本(ソフトカバー)購入: 22人 クリック: 396回この商品を含むブログ (1件) を見る ようやく読ん…

guide-key.elを導入した

キーバインドを覚えられない問題が顕著だったので、guide-key.elを導入した。guide-key.elは設定したprefix keyを入力した時に、その後に入力できるキーをpopupで表示してくれるもの。 基本的な導入や使い方は Emacs で自動的にキーバインドをポップアップす…

grepバッファでpopwin使うときにちょっとハマった

grepバッファがうまくpopwinで出ていないと思ったら、grep-a-lot.elとか使っていて*grep*とかになるためだった。popwinはregexp指定もすることが出来たのでそれで解決した。 (push '("\*grep\*" :regexp t :height 0.5 :stick t) popwin:special-display-con…

package.elとinit-loader.elの同時利用での問題にハマった

最近elispをpackageとel-get両方で管理する - $shibayu36->blog;で書いたとおり、package.elとel-getで大体の管理をしています。その時にinit-loader周りでハマったことがあったのでメモ。init-loaderとはemacsでinit-loaderを導入してみた - $shibayu36->bl…

perlbrew.elをMELPAに登録しようと思ったら登録されていました

以前perlbrew.elを少し手直ししていたので、MELPAに登録しようと思ったら、何日か前に誰かに登録されていました。どうぞご利用ください。参考 emacsで利用するperlを切り替える(perlbrew.elの紹介) - $shibayu36->blog;

elispをpackageとel-get両方で管理する

関西Emacsに行って、elispをちゃんとpackage管理みたいなので管理しないとなあという機運が高まったので、管理の方法を見なおしてみました。これまでの管理方法としては、 基本的にはelispをcurlで落とし、git管理 最近はel-getを使ってみていた という感じ…

emacsのruby環境を整えています

最近VagrantとかChefとかCapistranoとか、それなりにrubyのプロダクトを触るようになったし、別の言語の良いプロダクトも見ないといけないという気分になったから、とりあえずemacsの環境を整えようと思い出した。まずは基本から。 ruby-mode modeはruby-mod…

el-getを使ってみる(インストール編)

最近emacs-jpなどを見ていて、emacs使ってるのにelispの管理もせず、手作業でインストールしてるのが恥ずかしくなってきた*1ので、el-getを試してみました。とりあえず今回はインストールして、packageをlistしてみて、一つinstallしてみるところまで。 イン…

expand-region.elでperlのコードの範囲選択

expand-region.elの紹介 - Life is very shortで紹介されていたexpand-region.elを使っていたのですが、expand-region.elはmodeごとにいろいろカスタマイズ出来るようでした。しかし、これまでperl用の設定がなく困ってました。で、色々探してたらhttps://gi…

auto-complete.elを少しカスタマイズした

auto-complete.elをちょっとだけ触ったのでメモ。補完周りはエディタにとってかなり重要なので、今後も見ていきたい。まず通常の設定。 (require 'auto-complete-config) (ac-config-default) 辞書ファイル置き場の設定。 (add-to-list 'ac-dictionary-direc…

emacsの例外処理を使ってdirex-project.elを便利にする

以前direx.elでgitプロジェクトのディレクトリツリーを表示する、またはdirex-project.elの紹介 - $shibayu36->blog;でemacsの例外処理の方法がよくわからないと書いたら、Emacs Lispで例外処理 - Life is very shortで例外処理の方法を教えてもらったので、…

emacs内でgit grepする方法

コードを書いているとプロジェクト内のコードを参考にしたかったり、一括で置換したかったりします。そんな時emacs内でgrepを使うのですが、プロジェクトがそれなりに大きくなると非常に遅くなります。gitのプロジェクトであれば、gitであればgit grepを使え…

emacsで、インストールしているperl moduleのソースを一瞬で表示する

emacsでperlのコードを呼んでいると、このモジュールの中身どうなってるんだっけって思って調べることがよくあります。そんな時、perldoc -mをemacs上で呼ぶと便利です。 emacs上でperldoc -mを使う方法はid:antipopさんがブログに書いていて、EmacsでPerl開…

perlbrew.elの添削を取り込んだ話

id:syohexさんが、perlbrew.elの添削をしてくれていたので、perlbrew.elに取り込んでみました。 勝手に添削 perlbrew.el - Life is very short perlbrew.elの使い方再び perlbrew.elはhttps://github.com/kentaro/perlbrew.el/blob/master/perlbrew.el から…

direx.elでgitプロジェクトのディレクトリツリーを表示する、またはdirex-project.elの紹介

emacsにはdirex.elという非常に便利なdirectory explorerがあります。これによって、ディレクトリのツリー構造が表示され、diredよりも便利にdirectoryを辿ることが出来るようになりました。 しかし、デフォルトでは自分にとってはいろいろと不便なときもあ…

GitHubでの仕事を快適にするコマンドを紹介します

趣味のプログラミングや仕事をgithubを使って行なっていると、「ちょっとこんなかんじの変更してみたんだけど、このcommit見てよ」とか、「このブランチのこのファイルちょっと見てくれない?」みたいなことがよく起こります。そういう時いちいちgithub上の…

emacsの正規表現をもっと便利に使う

emacsで正規表現を使って置換したいみたいな要求はそれなりにあると思いますが、それをやろうとするとemacsの正規表現のバックスラッシュ地獄みたいなものに遭遇することがよくあります。そんな時に使いたいtipsを少しだけ紹介します。 re-builderを使う ema…

Emacs Lispテクニックバイブル読んだ

Emacs Lispテクニックバイブル読み終わった。最近elispいろいろ書いていたので、参考になる部分が多かった。Emacs Lispテクニックバイブル作者: るびきち出版社/メーカー: 技術評論社発売日: 2011/11/26メディア: 単行本(ソフトカバー)購入: 5人 クリック:…

emacsでperlのuse文挿入を簡単に

EmacsでPerlのuse文を挿入 - subpop - subtechのように現在位置のperlモジュールのuseを自動で挿入してくれるものがあるのですが、自動で挿入するとuseを見やすいように整頓もしづらくなるので、ちょっと違うやり方を考えてみました。 やったことは現在位置…

git repositoryじゃない場所でもanything-git-project.elがエラーにならないように

先ほどのanything-git-project.elを少し手直ししてみた - $shibayu36->blog;に引き続きしてみた。けっこうひどいコードになってきてるから、リファクタリングしてもいいかもという気分になってきた。 (defun anything-git-project-is-git-repository () (let…

anything-git-project.elを少し手直ししてみた

id:yaottiさんが作っているanything-git-project.el(プロジェクト内のファイルを絞り込んで操作するanything-git-project.el - yaotti's diary)ですが、gitでproject管理している人にとってはすごく便利です。 ただ、一つだけ不満がありました。 現在のディ…

現在選択しているtextをwrapしてyasnippetを貼り付ける

昨日に引き続きyasnippetの話です。 yasnippet使ってたら選択範囲の周りにyasnippet展開したくなりました。例えばsubtestを現在書かれているコードの周りに囲みたいとかいう時です。 yasnippetにはyas/selected-textという、選択範囲の文字列を取得するコマ…

yasnippetの見直しをした

昔yasnippetすごいなーと思って、少しだけ使っていたのだけれど、なんかうまく使えていないなーと思ったので見直しをした。 設定 これまではyasnippet,anything-c-yasnippetをインストールした - $shibayu36->blog;の時に設定した時のまま(version 0.6.1)だ…

emacsのwindow幅に合わせて、分割数を変える

そろそろEmacsのウィンドウについて一言いっとくか - (rubikitch loves (Emacs Ruby CUI Books))で紹介されているother-window-or-split ですが、非常に便利に使わせてもらっています。ただ、外部ディスプレイに接続した時には縦二分割ではなく、もう少し分…

cua-mode.elが便利という話

矩形編集は何を使ってますか?僕は最近はcua-mode.elを使っています。 cua-modeとは 簡単に言えば矩形編集をインタラクティブに行うことのできるツールです。 emacs標準の矩形編集だと、C-x r tとか使って、文字列を入れて、一気に挿入というふうにしかでき…

emacsでperldocを使うためにperl-completion.elを入れた

anything-docでperldocを引こうとしていたんだけれど、MANPATHとかperlbrewとかの関係でうまく行かなかったので、perl-completion.elを利用して引くようにしてみた。色々補完とかもできるようになったし便利。昔のPCだと少し重くて動かなかったのだけれど、…

emacsでファイル行へのリンクを保存する

僕はコードを書いていると、「このファイルのこの行辺り、こんなことやってるからメモしておきたい」みたいなことがよく起こります。その時、emacsでgrepした時とかに表示されるファイルリンクみたいな感じで、メモしたいと思いました。下のような感じ。 と…

emacsで編集中のファイルをデフォルトブラウザで開く

emacsで編集しているファイルのディレクトリをFinderで開く - $shibayu36->blog;をやってたら、デフォルトブラウザで開くのもできた。適当にhtmlとかuserscriptとか書いてたら便利かもしれない。 default-browser http://www.leancrew.com/all-this/2012/04/…

emacsで編集しているファイルのディレクトリをFinderで開く

なんかいろいろあるかもしれないけど、とりあえずやってみた。 最初に (defun open-current-dir-with-finder () (interactive) (shell-command (concat "open " (file-name-directory (buffer-file-name))))) buffer-file-nameで現在のbufferのfilepathが取…

emacsでいろいろな情報をレジスタに保存する

emacsのwindow分割情報を一時的に保存できないかなーと思って探してたら、レジスタにいろいろな情報を保存できることがわかったのでメモ。 レジスタにwindow分割情報を保存する window-configuration-to-registerという関数でwindow分割情報を保存できます。…