fnwiyaBlog

EmacsとかLispとか可視化とか

102.emacs

helmの「.」と「..」を表示させない

helm使用時に絞り込む前の状態ではディレクトリの一覧に「.」(現在のディレクトリ)と「..」(ひとつ上のディレクトリ)が表示されています。 しかし現在のディレクトリのほうは使い道が無いですし、 上のディレクトリには「←」でいけます。 ディレクトリを深く…

evil-modeでもkey-comboを使う

特定のキーの連続入力により挙動を変化させることのできるkey-comboですが、 evilの際はevil-***-state-mapに定義しないと/等のキーを設定していた場合に normal-state時検索が行えなくなります。(おそらく設定した値を挿入する動きになっているため) (use-p…

emacsでオリジナルのカラーテーマを作るときはbase16をもとにすると楽

見た目にこだわる上でオレオレカラーテーマが作りたくなると思いますが、 一からつくるとさすがにしんどいのでまずは本のテーマのカラーパレットを変更するぐらいにとどめておくといいと思います。 その時におすすめなのはbase16というものです。 mkaito/bas…

evilのキーバインド設定をEmacsのデフォルトと共存させる

Evilにしてから数日が立ちますがyyとかddとか素晴らしいですね。 心なしか気持ちまで軽くなった気がします。 しかし、なれの問題かもしれませんがEmacsのキーバインドを使いたい時もあるので 以下の設定でキーバインドをOverwriteしています。 ;;;;;;;;;;;;;…

evilに雑に入門してみる

こちらを参考にevilを導入してみました。 tarao.hatenablog.com 最初はspacemacsもありかなと思ったのですが、 今までの設定とのバランスが難しかったのでいったんevilでやってみます。 (use-package evil :config ;; before (evil-mode 1) (setq evil-cross…

emacsでポモドーロテクニック(org-pomodoro)

ポモドーロテクニックとはざっくりいえば時間を区切って短時間集中->休憩->集中を繰り返すことで、 作業効率をあげようというものです。 www.lifehacker.jp そのタイマー機能をemacs内で実現するのがorg-pomodoro.elです。 github.com 使い方 init.elで(requ…

emacsで時間を図る(stopwatch.el)

集中力が持たない人は時間を図ってみるといいらしいです。 そんなことも簡単、emacsならね。 Stopwatch (November 16, 2011)

emacsでコードを折りたたむ(hs-minor-mode)

階層が深くなってよみずらい、、、。 そんな時はコードを折りたたんで表示するようにすると良いと思います。 (add-hook 'c++-mode-hook '(lambda () (hs-minor-mode 1))) (add-hook 'c-mode-hook '(lambda () (hs-minor-mode 1))) (add-hook 'scheme-mode-ho…

emacsで意図しない画面分割を防ぐ(save-window-excursion)

save-window-excursionを使うとemacsが意図せず 画面分割されてしまうことを防げます。 例えば起動時にバックグラウンドでコマンドを走らせたい場合など。 こうした用途ではpop-winもありますが、 pop-winでは結局popを閉じる一手間がいるので特に確認の必要…

multi-termで日本語/全角文字を入力する

multi-termはそのままでは日本語打っても読み込んでくれませんが 以下の設定を書けば大丈夫です。 (setenv "LANG" "ja_JP.UTF-8") (set-language-environment "Japanese")

auto-package-updateでemacsのパッケージのアップデートを自動化する

パッケージのインストールは package.elでパッケージを一括管理&いらないパッケージ削除 - fnwiyaBlog 等で自動化している方が多いかと思いますがアップデートはどうでしょう? M-x list-package->U->xでアップデートできるのですが、 少々手間です。 その…

emacsのautoinsertで楽する

いつも書く決まったテンプレート。 そんなものを書くことは人間のすべきことじゃありません。 以下を設定して (require 'autoinsert) (setq auto-insert-query nil) (setq auto-insert-directory "~/.emacs.d/insert-tmp/") (setq auto-insert-alist (append…

emacsで2画面同時にスクロールしたい(scroll-all-mode)

2つのファイルの差分をみたい時に画面分割した上で2画面同時にスクロールできると便利です。 そんなときはM-x scroll-all-modeでscroll-all-modeを起動してC-nなりで移動すれば隣の画面も一緒についてきてくれます。 解除も同じくM-x scroll-all-modeです。

emacsの設定を複数台で共有するときにバイトコンパイルで気をつけること。

複数台でemacsの環境を共有するときはgit等で設定ファイルを持って行くと思いますが、 *.elcごとgitに挙げない場合はpullした場合でもemacs起動時以前のelcが読み込まれるので新しい設定が反映されません。 これの解決策は色々悩んだのですが起動時にバイト…

emacsの起動を早くしたかったらとりあえずやっとくこと

GCの設定 (setq gc-cons-threshold (* 128 1024 1024)) バイトコンパイル M-x byte-compile-file ->"~/.emacs.d/init.el" 遅延ロード use-packageを使うならここが詳しいです。 Emacs - use-packageで可読性の高いinit.elを書く - Qiita 使ってない設定を消…

最高に便利な関数たちがのっている.emacs.d

感動した。 github.com 個人的にfile-defuns.elのrename-current-buffer-fileとかdelete-current-buffer-fileはずっと欲しいなと思いつつ作るのめんどうがっていたのでありがたい。勉強させてもらいますm( )m

find-fileでディレクトリが無ければ作る関数

新しくディレクトリを作りつつ新規ファイルを開きたい時に、 M-x make-directory ↓ find-file は面倒なので。 (ターミナルでmkdirはもっと面倒) ;;; find-fileでディレクトリが無ければ作る (defun make-directory-unless-directory-exists() (let ( (d (fil…

emacsを立ち上げたら自動で.emacs.dをpullしてきて、emacsを閉じるときに自動でpushする。

複数台でemacsの設定を共有しているときに便利です。 以下の設定をinit.elの最初(すくなくともinit-loaderによる読み込みより前)に記述してください。 ※ファイル分割を行っていることが前提です。 (shell-command "git -C $HOME/.emacs.d pull") (add-hook…

emacs起動時にランダムに名言をミニバッファに表示するmeigen-botリリースしました。

emacsを立ち上げさっそくタスクにとりかかるのもいいですが、 偶然の言葉との出会いも素敵です(ほぼ日手帳的な良さ) それを叶えてくれるパッケージ作成しました。 fnwiya/meigen-bot · GitHub 設定 (add-to-list 'load-path path-to-meigen-bot) (require …

読み込まれないバイトコンパイル済みファイルを保存時に削除する

init-loaderでは数字から始まるファイルのみ読み込まれます。 その特性を利用して、一時的に使用しない設定ファイルのファイル名を「00-ファイル名」と頭にアンダースコアをつけた形に変更するのはよく使うテクニックだと思います。 しかし弊害としてこの状…

emacs lispに書かれている;;;###autoload(autoload cookie)の意味

emacsのパッケージに書かれている;;;###autoloadがずっと謎でした。 簡単にいうautoload cookieというやつで、 これをつけておくとパッケージにしたときにautloadファイルが生成されて、 ファイルの読み込みをautoloadしてくれるようになるみたいです。 たし…

emacsからはてなブログを投稿するhatena-blog-mode.elをリリースしました

はてなダイアリー用には色々なelispがあったのですがはてなブログ用はなかったので作ってみました。 fnwiya/hatena-blog-mode · GitHub 設定 (require 'hatena-blog-mode.el) (setq hatena-id "XXXXXXXX") (setq hatena-blog-api-key "XXXXXXXX") (setq hate…

emacsのwindowをリサイズする

完全にいただきものです。 hydraとか使ってたけどこっちのほうがシンプルな気がする。 分割したウィンドウの大きさをインタラクティヴに変更する - mooz deceives you Re: 分割したウィンドウの大きさをインタラクティヴに変更する - とりあえず暇だったし何…

emacs起動時にバックグラウンド(非同期)でシェルコマンドを走らせる

emacsは毎日起動しますよね? だったらライブラリのアップデートなどをその起動時に自動で行うようにしたら便利なのでは?ということで設定しました。 ポイントはasync-shell-commandを使うことでバックグラウンドで起動し、 特に意識することなく普通に他の…

emacsの起動高速化tips(init時に必要ない標準機能系の設定は全部emacs-startup-hookにする)

外部パッケージはuse-packageなどで遅延ロードができるのですが、 標準機能はそうもいきません。 そこでまとめてemacs-startup-hookに引っかけるようにすると、 emacsを立ち上げる際にはloadされず、 init後に読み込まれるので起動を高速化できます。 (add-h…

key-combo.elでメジャーモードごとに設定をかき分ける/{やセミコロンでの自動改行をトグルで切り替える。

github.com smartchrからの乗り換え。 個人的に便利だなとおもったのは ("{" . ("{`!!'}" "{" "{\n`!!'\n}")) (";" . (";\n" ";")) などの改行を入れる系です。 こういった機能はjs2-modeなどの大きなパッケージに入っていることもありますが、 改行したいと…

emacsのタイトルバーに時計

時間は共通なんだからバッファごとのモードラインに表示する必要ない。 run-with-timerで5秒毎に更新して上げてます。 ついでにファイルを開いているときはフルパス、その他のときはバッファ名を表示するようにしてます。 ;; タイトルバー (when (window-sys…

emacsでperl(cperl-mode)

すすんで書くことはあまりないですが読むことがあったので設定。 (use-package cperl-mode :mode (("\.pl$" . cperl-mode)) :interpreter (("perl" . cperl-mode) ("perl5" . cperl-mode) ("miniperl" . cperl-mode)) :config (setq cperl-indent-level 4 cp…

emacsを起動時に画面左半分にする

全画面はコマンドあったのですが半画面は現状ハードコードするしかないのかな? 複数環境で画面サイズが違うのでかき分けてます。 ;; check-frame-size ;; at *scratch* ;; (frame-height) => C-j ;; (frame-width) => C-j (when (memq window-system '(mac …

.emacs.dの.gitignore設定はホワイトリストがおすすめ

いわゆるdotfilesはgitで管理されてる方が多いと思いますが、 その際余計な情報を紛れ込ませないように.gitignoreの設定ができます。 とくにemacsはしらない間にいろいろなファイルが自動生成されるので、 ignoreの設定はホワイトリストがおすすめです。 最…