102.emacs
helm使用時に絞り込む前の状態ではディレクトリの一覧に「.」(現在のディレクトリ)と「..」(ひとつ上のディレクトリ)が表示されています。 しかし現在のディレクトリのほうは使い道が無いですし、 上のディレクトリには「←」でいけます。 ディレクトリを深く…
特定のキーの連続入力により挙動を変化させることのできるkey-comboですが、 evilの際はevil-***-state-mapに定義しないと/等のキーを設定していた場合に normal-state時検索が行えなくなります。(おそらく設定した値を挿入する動きになっているため) (use-p…
見た目にこだわる上でオレオレカラーテーマが作りたくなると思いますが、 一からつくるとさすがにしんどいのでまずは本のテーマのカラーパレットを変更するぐらいにとどめておくといいと思います。 その時におすすめなのはbase16というものです。 mkaito/bas…
Evilにしてから数日が立ちますがyyとかddとか素晴らしいですね。 心なしか気持ちまで軽くなった気がします。 しかし、なれの問題かもしれませんがEmacsのキーバインドを使いたい時もあるので 以下の設定でキーバインドをOverwriteしています。 ;;;;;;;;;;;;;…
こちらを参考にevilを導入してみました。 tarao.hatenablog.com 最初はspacemacsもありかなと思ったのですが、 今までの設定とのバランスが難しかったのでいったんevilでやってみます。 (use-package evil :config ;; before (evil-mode 1) (setq evil-cross…
ポモドーロテクニックとはざっくりいえば時間を区切って短時間集中->休憩->集中を繰り返すことで、 作業効率をあげようというものです。 www.lifehacker.jp そのタイマー機能をemacs内で実現するのがorg-pomodoro.elです。 github.com 使い方 init.elで(requ…
集中力が持たない人は時間を図ってみるといいらしいです。 そんなことも簡単、emacsならね。 Stopwatch (November 16, 2011)
階層が深くなってよみずらい、、、。 そんな時はコードを折りたたんで表示するようにすると良いと思います。 (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…
save-window-excursionを使うとemacsが意図せず 画面分割されてしまうことを防げます。 例えば起動時にバックグラウンドでコマンドを走らせたい場合など。 こうした用途ではpop-winもありますが、 pop-winでは結局popを閉じる一手間がいるので特に確認の必要…
multi-termはそのままでは日本語打っても読み込んでくれませんが 以下の設定を書けば大丈夫です。 (setenv "LANG" "ja_JP.UTF-8") (set-language-environment "Japanese")
パッケージのインストールは package.elでパッケージを一括管理&いらないパッケージ削除 - fnwiyaBlog 等で自動化している方が多いかと思いますがアップデートはどうでしょう? M-x list-package->U->xでアップデートできるのですが、 少々手間です。 その…
いつも書く決まったテンプレート。 そんなものを書くことは人間のすべきことじゃありません。 以下を設定して (require 'autoinsert) (setq auto-insert-query nil) (setq auto-insert-directory "~/.emacs.d/insert-tmp/") (setq auto-insert-alist (append…
2つのファイルの差分をみたい時に画面分割した上で2画面同時にスクロールできると便利です。 そんなときはM-x scroll-all-modeでscroll-all-modeを起動してC-nなりで移動すれば隣の画面も一緒についてきてくれます。 解除も同じくM-x scroll-all-modeです。
複数台でemacsの環境を共有するときはgit等で設定ファイルを持って行くと思いますが、 *.elcごとgitに挙げない場合はpullした場合でもemacs起動時以前のelcが読み込まれるので新しい設定が反映されません。 これの解決策は色々悩んだのですが起動時にバイト…
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 使ってない設定を消…
感動した。 github.com 個人的にfile-defuns.elのrename-current-buffer-fileとかdelete-current-buffer-fileはずっと欲しいなと思いつつ作るのめんどうがっていたのでありがたい。勉強させてもらいますm( )m
新しくディレクトリを作りつつ新規ファイルを開きたい時に、 M-x make-directory ↓ find-file は面倒なので。 (ターミナルでmkdirはもっと面倒) ;;; find-fileでディレクトリが無ければ作る (defun make-directory-unless-directory-exists() (let ( (d (fil…
複数台でemacsの設定を共有しているときに便利です。 以下の設定をinit.elの最初(すくなくともinit-loaderによる読み込みより前)に記述してください。 ※ファイル分割を行っていることが前提です。 (shell-command "git -C $HOME/.emacs.d pull") (add-hook…
emacsを立ち上げさっそくタスクにとりかかるのもいいですが、 偶然の言葉との出会いも素敵です(ほぼ日手帳的な良さ) それを叶えてくれるパッケージ作成しました。 fnwiya/meigen-bot · GitHub 設定 (add-to-list 'load-path path-to-meigen-bot) (require …
init-loaderでは数字から始まるファイルのみ読み込まれます。 その特性を利用して、一時的に使用しない設定ファイルのファイル名を「00-ファイル名」と頭にアンダースコアをつけた形に変更するのはよく使うテクニックだと思います。 しかし弊害としてこの状…
emacsのパッケージに書かれている;;;###autoloadがずっと謎でした。 簡単にいうautoload cookieというやつで、 これをつけておくとパッケージにしたときにautloadファイルが生成されて、 ファイルの読み込みをautoloadしてくれるようになるみたいです。 たし…
はてなダイアリー用には色々なelispがあったのですがはてなブログ用はなかったので作ってみました。 fnwiya/hatena-blog-mode · GitHub 設定 (require 'hatena-blog-mode.el) (setq hatena-id "XXXXXXXX") (setq hatena-blog-api-key "XXXXXXXX") (setq hate…
完全にいただきものです。 hydraとか使ってたけどこっちのほうがシンプルな気がする。 分割したウィンドウの大きさをインタラクティヴに変更する - mooz deceives you Re: 分割したウィンドウの大きさをインタラクティヴに変更する - とりあえず暇だったし何…
emacsは毎日起動しますよね? だったらライブラリのアップデートなどをその起動時に自動で行うようにしたら便利なのでは?ということで設定しました。 ポイントはasync-shell-commandを使うことでバックグラウンドで起動し、 特に意識することなく普通に他の…
外部パッケージはuse-packageなどで遅延ロードができるのですが、 標準機能はそうもいきません。 そこでまとめてemacs-startup-hookに引っかけるようにすると、 emacsを立ち上げる際にはloadされず、 init後に読み込まれるので起動を高速化できます。 (add-h…
github.com smartchrからの乗り換え。 個人的に便利だなとおもったのは ("{" . ("{`!!'}" "{" "{\n`!!'\n}")) (";" . (";\n" ";")) などの改行を入れる系です。 こういった機能はjs2-modeなどの大きなパッケージに入っていることもありますが、 改行したいと…
時間は共通なんだからバッファごとのモードラインに表示する必要ない。 run-with-timerで5秒毎に更新して上げてます。 ついでにファイルを開いているときはフルパス、その他のときはバッファ名を表示するようにしてます。 ;; タイトルバー (when (window-sys…
すすんで書くことはあまりないですが読むことがあったので設定。 (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…
全画面はコマンドあったのですが半画面は現状ハードコードするしかないのかな? 複数環境で画面サイズが違うのでかき分けてます。 ;; check-frame-size ;; at *scratch* ;; (frame-height) => C-j ;; (frame-width) => C-j (when (memq window-system '(mac …
いわゆるdotfilesはgitで管理されてる方が多いと思いますが、 その際余計な情報を紛れ込ませないように.gitignoreの設定ができます。 とくにemacsはしらない間にいろいろなファイルが自動生成されるので、 ignoreの設定はホワイトリストがおすすめです。 最…