keicy / .emacs.d Goto Github PK
View Code? Open in Web Editor NEWIt's a settings for emacs that v24.5 or later.
It's a settings for emacs that v24.5 or later.
原状が使いにくいため、一度根本的に見直し、シンプルな機能、使いやすいバインドに再構築する。
Helm 時には絶対キー定義が無効になるため、日本語切替の ``C-v` が効いていない。割り当てて効くようにする。
現状、 M-<return>
が定義しても効かない。
理由は、ensimeのコードで map にこのバインドが定義されているための模様。
with-eval-after-load-feature
でバインド定義してもこれを上書きできない模様、、。理由はよくわかんない、、できると思ってやっているんだが、。
解決法は下記。
(defun my-inf-binds()
(bind-keys :map ensime-inf-mode-map
; システムコマンド
("M-<return>" . execute-extended-command)
("C-<tab>" . keicy-window-or-split)
("C-<return>" . comint-accumulate) ; デフォルトで M-<return> に割り当てられていたもの
; 編集
("M-j" . backward-char) ;一文字戻る
("C-M-j" . backward-word) ;一単語戻る
("M-k" . forward-char) ;一文字進む
("C-M-k" . forward-word) ;一単語進む
;("C-d" . delete-char) ;DEL ; これを追加すると `cntl-D` が効かなくなるので排除.ただこれがなくともデフォルトでこのバインドがシェル側に定義されているので困らない.
("C-M-d" . keicy-delete-word) ;単語DEL
("C-f" . delete-backward-char) ;Backspace
("C-M-f" . keicy-backward-delete-word) ;単語Backspace
("M-," . beginning-of-line) ;行頭
("M-." . end-of-line) ;行末
))
(add-hook 'ensime-inf-mode-hook 'my-inf-binds)
単に
(with-eval-after-load-feature 'ensime
(bind-keys :map ensime-inf-mode-map
...
とするのではなく、 mode-hook に引っ掛けることで上書きできる!
scala ブランチにマージする
下記記述に基づき有用なものを設定する。
# 抜粋
Customisation
To customise your ENSIME Emacs experience, don’t forget to read through the user-customisable variables with M-x customize-group RET ensime RET, as defined in ensime-vars.el.
この際、作業方法は emacs の customize-group の操作ドキュメントを参照する。
下記サイトから情報収集する。
scala ブランチにマージする ref #44
【追記】Scala にとどまらない問題だったため master にマージする
ENSIME の Activator Shell バッファをスクロール禁止にする。
画面が見切れてしまい見えなくなってしまうためスクロールしないバッファにしたい。
EShell 以外にももっと使いやすいものがあるかも。
いまは C-(S-)-w
だが、右手の方が便利っぽい!
なので、 M-(S-)-l
が良さそう!
" ' () {} []
などの記号を簡単に入力できるようにする
このあたりを参考に。
コーディングしていて欲しければ導入を検討しても良いかも。
Dired便利!もっと使っていくためにDocを追加する。
なんかFTPサーバにアクセスして閲覧できるクライアントにもなるらしい
現在 M-,
M-.
に割り当てているが、これらは慣習的に、IDEの定義元参照に使われている。
なので、他に良い割り当てが思いつけばそちらに移行したいと思う。
検討のポイントは下記
S-
を活用することで、1つのキーで両者のバインドをまかなえるscala ブランチにマージする
必要なものは下記
手順は下記にまとめた
詳細な情報は下記参照
activator
コマンドを sbt
コマンドとして使う定義を追加する必要がある。下記プラグインを入れて試してみる。
タグのメンテがないので良さそう。
grep速度が気になるようであればagから下記に乗り換える。
multiple-cursors 用 Isearch とのこと。 migemo対応しているので恐らく便利なはず。
実害はないが、微妙に関数が呼ばれていない。
このバインドに、通常の keyboard-quit
を割り当てると望の挙動になるかも?検証してみる。
あるいは、 mc/keyboard-quit
が正しく動作するように再設定する。
scala ブランチにマージ ref #44
ensime を導入すると companey-mode も自動で入る、かつ、設定もされている。
なので、キーバインドなどを再定義する。
customize-group から。ensimeのコマンドを入力したときにもし繋がっていなければ自動で繋いでくれるようになる。
下記プラグインを試してみる。
割り当てキーの空きを把握するため。
Helm , migemo のキー操作を追加する。
よく使う projectile の関数について、キーバインドを設定する
下記参考に。
OS側の設定メモ
; mozcサーバ側に、変換中のキー操作を定義することができる。
; http://log-c.blog.so-net.ne.jp/2011-08-24-3
; http://washieagle.blogspot.jp/2010/10/scim-mozcemacs.html
C-a のやつ
key | 動作 | 補足 |
---|---|---|
M-o |
レギオンを削除 | これは便利なので、 C-d に割り当てたい |
下記参考に。
これを読むと、候補としては Helm
, Ivy/Counsel
のどちらかかな。
Helmには上記良い解説があり、感じも掴めているのでいけそう。
動作が重いのと、互換のない更新がネックらしいので、Ivyでもいけそうならシンプルにこちらでも良いかも。
v24.5 や v25 の日本語Docがあるらしいのでそれを読んでみる。
with-eval-after-load-feature
を使うようにする
with-eval-after-load-feature
は bundle
の中でなくても単独で使える(with-eval-after-load-feature 'company
(bind-keys :map company-active-map
("C-<return>" . company-abort)
("M-p" . nil)
("M-i" . company-select-previous)
("M-n" . company-select-next) ;デフォルトでこれだが明示的に
;("<tab>" . company-complete-common-or-cycle) ; デフォルト: company-complete-common
))
【追記】
この定義方法は、追加は問題なくできるが、デフォルトの挙動を上書きはできず負けてしまうという問題が発覚した、。
これではなく、下記の方法を用いるとちゃんと上書きできるのでこちらの方法でリファクタ実施する。
(defun my-inf-binds()
(bind-keys :map ensime-inf-mode-map
; システムコマンド
("M-<return>" . execute-extended-command)
("C-<tab>" . keicy-window-or-split)
("C-<return>" . comint-accumulate) ; デフォルトで M-<return> に割り当てられていたもの
; 編集
("M-j" . backward-char) ;一文字戻る
("C-M-j" . backward-word) ;一単語戻る
("M-k" . forward-char) ;一文字進む
("C-M-k" . forward-word) ;一単語進む
;("C-d" . delete-char) ;DEL ; これを追加すると `cntl-D` が効かなくなるので排除.ただこれがなくともデフォルトでこのバインドがシェル側に定義されているので困らない.
("C-M-d" . keicy-delete-word) ;単語DEL
("C-f" . delete-backward-char) ;Backspace
("C-M-f" . keicy-backward-delete-word) ;単語Backspace
("M-," . beginning-of-line) ;行頭
("M-." . end-of-line) ;行末
))
(add-hook 'ensime-inf-mode-hook 'my-inf-binds)
日本語検索対応のため。
helm との連携も併せて実施する。
間違った押下で落とさないようにする。
branch : scala とする。
参考情報,ないよりマシ程度
日本語で検索すると導入記事がいくつかでてくるのでまずはそちらを参照するべし
など。下記参照
flycheck
ENSIMEの設定次第ではsbtが必要ないか検証。
/usr/bin/sbt
emacs設定に関するTips/ノウハウを管理するためのページを作ると便利かも。
下記を設定すればOK
;; カーソルの点滅を OFF にする
(blink-cursor-mode 0)
M-u 検索文字列を貼付
↓
M-u クリップボードからペースト
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.