Even more emacs

Emacsは奥が深い。http://emacs.rubikitch.com/ を参考にせっせと設定を改善。

以下備忘録。

  • M-s (search)、M-r(rectangle)、M-g(goto)がprefix commandでそれぞれ関連コマンドが割り当てられているのを今更ながらに知る。M-gを長らくgoto-lineに割り当てていたが、これを機にやめた。
    • find-fileやbuffer系はhelmに慣れてきたのでそのままで。
    • wdiredなども便利そう。覚えているかが疑問だが。
  • C-u C-SPCで過去のmarkに戻る。
  • C-x +でwindowsのサイズを揃える。
  • C-x -でwindowの余白をなくすようにwindowをshurinkする。
  • C-u <column> C-x $で簡易アウトラインモード。
  • ESC ESC ESCはC-gと異なり再帰編集から抜けて続行できる。
    • modelineのモード名が[]のときは再帰編集中。
  • winner-modeでwindowの状態をundo可能。
  • Literate Devops with Emacsを視た。<s<TAB>でsource blockが展開されるの?
    • すげ、ほんとだ。Easy templatesで実現されているらしい。
  • \C-x .でrepeatできるようにする。
  • M-SPCでexpand-region。
  • multiple-cursors便利そうなので設定。
    • \C-x r tでregionの複数行を一気に編集。
    • \C-c < or >で選択した文字列と同じもの前方または後方に探して選択していく。
    • \C-c /で選択した文字列と同じものを全選択。
  • Occurに似てるけどhelm-swoopも\C-c Oに設定。
Advertisements
Even more emacs

more emacs

未だにChromebook Flip C100PAの環境整備中。前回から便利になった点は

  • croshclipを使ってcrouton上のEmacs(tty)からChrome OS上のChromeにリンクを飛ばせるようになった。以前はコピペしてたので、すごく便利になった。
  • terminal上のEmacsだとdark系のcolor themeの色がおかしくなることがあり、今までfont-lock-mode-hookで無理やり変えていたけど、解決方法(というかworkaround)が見つかった。どうもtty-color-approximateが暗いRGB値に対して変な色を返しているぽかったので、該当部分をコメントアウトして解決(多分。実はよく見ていない)。以下のpatchあてバージョンをinitファイルに入れた。
;; Workaround to make atom-one-dark theme work on tty
(defun tty-color-approximate (rgb &optional frame)
  "Find the color in `tty-color-alist' that best approximates RGB.
Value is a list of the form (NAME INDEX R G B).
The argument RGB should be an rgb value, that is, a list of three
integers in the 0..65535 range.
FRAME defaults to the selected frame."
  (let* ((color-list (tty-color-alist frame))
         (candidate (car color-list))
         (best-distance 195076) ;; 3 * 255^2 + 15
         (r (ash (car rgb) -8))
         (g (ash (cadr rgb) -8))
         (b (ash (nth 2 rgb) -8))
         best-color)
    (while candidate
      (let ((try-rgb (cddr candidate))
            ;; If the approximated color is not close enough to the
            ;; gray diagonal of the RGB cube, favor non-gray colors.
            ;; (The number 0.065 is an empirical ad-hoc'ery.)
            (favor-non-gray (>= (tty-color-off-gray-diag r g b) 0.065))
            try-r try-g try-b
            dif-r dif-g dif-b dist)
        ;; If the RGB values of the candidate color are unknown, we
        ;; never consider it for approximating another color.
        (if try-rgb
            (progn
              (setq try-r (lsh (car try-rgb) -8)
                    try-g (lsh (cadr try-rgb) -8)
                    try-b (lsh (nth 2 try-rgb) -8))
              (setq dif-r (- r try-r)
                    dif-g (- g try-g)
                    dif-b (- b try-b))
              (setq dist (+ (* dif-r dif-r) (* dif-g dif-g) (* dif-b dif-b)))
              (if (and (< dist best-distance)
                       ;; Comment out to make some dark themes look better
                       ;; ;; The candidate color is on the gray diagonal
                       ;; if its RGB components are all equal.
                       ;; (or (/= try-r try-g) (/= try-g try-b)
                       ;;     (not favor-non-gray)))
                       t)
                  (setq best-distance dist
                        best-color candidate)))))
      (setq color-list (cdr color-list))
      (setq candidate (car color-list)))
    best-color))
more emacs

Emacs init files revisited

もう何年も同じ設定の.emacsであったが、Chromebook Flip用に環境構築した際に大胆に変えてみた。今はQiitaとかで簡単に情報が手に入って便利。

やったこと。

  • init-loaderを使ってconfigを複数ファイルに分ける
  • use-packageでpackageの設定をきれいに
  • company, ycmd, helm, magitをまじめに設定
  • shell-modeまわりもcolor対応など手を入れる

helmは昔少し使っていたが、馴染んだワークフローと異なることもあって作業に集中できず、結局やめてしまった過去がある。今もhelm-find-filesなどはまだ完全に慣れていないが、helm-occurなどはすごく使いやすいので、今更ではあるがどんどん導入していきたいと思う。

Emacs init files revisited

Setting up Chromebook Flip (C100PA)

最近購入したChromebook Flip (C100PA)がお気に入り。最近すき間時間を使って趣味のコー ドをまた書き始めたので、持ち運びに便利で万が一壊れてもダメージ大にならない価格の laptopを探していてたどり着いた。ちなみに、この文章もFlipのEmacs上で書いている。

Play StoreのBeta版が最初から入っていたので、Androidアプリもそれなりに動く。それ なりと書いたのは、Kodiが自宅のDLNAサーバーを見つけられなかったから。Google Maps やKindleアプリは普通に動いたので、それなりに便利に使っている。

とりあえずcroutonとEmacs環境はお約束として、今までにインストールしたものは、以下の通り。

  • go1.7.5 linux/arm
  • Oracle JDK 1.8.0_121
  • App Engine SDK for Go 1.9.48 (linux x86版をダウンロードしてgoappをbuildし直した)
  • Google Cloud SDK ver 143 (linux x86版のversioned archiveをダウンロード)

App Engine SDK for Goはall.bashでbuild中testでエラー出たので、full buildは諦めて goapp、go-app-builder、go-app-stagerが出来たところでよしとしたw。とりあえずHello World動いた。

あとDockerかなぁと思ったが、さすがにcustom kernelがないと動かないらしい。Arch Linux for ARMをSDカードに入れるとNative Linuxが動くみたいだが、Chrome OS、 crouton(Crosh Window + Emacs full screen)、Chrome Remote Desktop、あとたまに Android AppをAlt-Tabで切り替えて使うのが便利すぎて当分変える気にならん。

Setting up Chromebook Flip (C100PA)

org2blog/wp

とりあえずこんな感じで。syntax highlightに(e)lispがないのでclojureで代用。

(require 'org2blog-autoloads)
(require 'netrc)
(setq blog (netrc-machine (netrc-parse "~/.netrc") "myblog" t))
(setq org2blog/wp-blog-alist
      `(("wordpress"
	 :url "https://kazush.wordpress.com/xmlrpc.php"
	 :username ,(netrc-get blog "login")
	 :password ,(netrc-get blog "password"))))
(setq org2blog/wp-use-sourcecode-shortcode t)
(define-key global-map "\C-cob"
  (lambda () (interactive)
    (org2blog/wp-login)
    (org2blog/wp-new-entry)))
org2blog/wp