BitBar の Emacs と GitHub のプラグインを少し便利にした

それぞれ以下の Pull Request です。 [Emacs Package Updates] Add error handler by masutaka · Pull Request #357 · matryer/bitbar-plugins [GitHub status] Add link to official github status by masutaka · Pull Request #356 · matryer/bitbar-plugins Emacs Package Updates plugin Emacs が見つからないとか、パッケージを更新できないなど、エラーが発 生した時はいつもの Gnu(ヌー)さんの横に err と表示されます。→ パット見、牛に見えますが、れっきとしたヌーです。多分。 パッケージを更新できないのは 100% これなんですよね。本当に謎。ネッ トに繋がらないだけだったら、エラーにはなりません。 loading... GitHub status plugin “Everything operating normally.” をクリッカブルにしました。GitHub に障害があったら https://status.github.com/ を見に行きたくなります よね?

2016-03-30 (Wed) · masutaka

BitBar の Emacs Package Updates プラグイン作って、本家にマージされた

Rebuild の Aftershow 132 で紹介された BitBar を使い始めました。 Homebrew のアップデート可能数 や、GitHub のステータス を表示させてい ます。宮川さんがやっている、現在のタスクを OSX のメニューバーに表 示というやつも試しています。 で、Emacs の Package アップデート可能数も出したかったので、本家に PR だして無事マージされました 。 こんな感じに表示されます。 Plugin のページからインストール出来ます。ポーリング間隔や Emacs の 場所は適宜変えて下さい。 Emacs Package Updates on BitBar - Put anything in your Mac OS X menu bar エラー処理が甘いので、あとで直すかも。本当はシェルスクリプトじゃな くて、Emacs Lisp スクリプトにしたかったのですが、標準出力の捨て方 が分からず一旦断念しました。 おまけ loading...

2016-03-22 (Tue) · masutaka

Qiita の markdown を Emacs からプレビューする

[2015-04-05-1] の Qiita 版です。雑です。 init.el にこんなのを定義します。 (defun qiitadown () (interactive) (shell-command (format "qiitadown.sh %s" (buffer-file-name)))) (with-eval-after-load "markdown-mode" (define-key markdown-mode-map (kbd "C-c C-c C-q") 'qiitadown)) パスの通ったディレクトリに以下のシェルスクリプトをパーミッション 755 とかで置きます。 あと、qmc コマンドが必要です。Prepare に書いてあるように qiita-markdown-cli gem もインストールして下さい。 markdown ファイルを開いて、C-c C-c C-q すれば Chrome とかでプレビュー が見られます。

2016-01-15 (Fri) · masutaka

結局 package.el に戻ってきた

[2014-11-03-1] に package.el から Cask に乗り換え、 [2015-06-17-1] に Cask から El-Get に乗り換えましたが、 結局 package.el に戻ってきました。 理由は M-x el-get-update(-all) の更新がうまくいかず、エラーにな り、~/.emacs.d/el-get や ~/.emacs.d/elpa を全削除して入れなおすこ とがよくあったからです。最近は面倒になりアップデートもしなくなりま した…。 package.el でインストールするパッケージも init.el に書いてしまえば、 何をインストールしたか分かります。なにより Emacs デフォルトの機能 なので安心感があります(私はライトなデフォルト厨)。 バージョンロック出来ない問題は、アップデート前に ~/.emacs.d/elpa をバックアップすれば良いでしょう…。Time Machine もありますし…。 変更前と後の init.el はこちら。 ◆変更前 ;; See http://d.hatena.ne.jp/tarao/20150221/1424518030 (add-to-list 'load-path (locate-user-emacs-file "el-get/el-get")) (unless (require 'el-get nil 'noerror) (with-current-buffer (url-retrieve-synchronously "https://raw.githubusercontent.com/dimitri/el-get/master/el-get-install.el") (goto-char (point-max)) (eval-print-last-sexp))) ;; lock the pacakge versions (el-get-bundle tarao/el-get-lock) (el-get-lock) (el-get-bundle ajtulloch/mkdown.el :name mkdown) (el-get-bundle ataka/blgrep) (el-get-bundle ataka/clmemo) (el-get-bundle auto-complete) (el-get-bundle coffee-mode) (el-get-bundle dockerfile-mode) (el-get-bundle elpa:eldoc-extension) (el-get-bundle elpa:git-dwim) (el-get-bundle elpa:hl-line+) (el-get-bundle elpa:sequential-command) (el-get-bundle elscreen) (el-get-bundle flycheck/flycheck :depends (dash pkg-info let-alist cl-lib)) (el-get-bundle go-autocomplete) (el-get-bundle go-eldoc) (el-get-bundle go-mode) (el-get-bundle haml-mode) (el-get-bundle helm) (el-get-bundle helm-descbinds) (el-get-bundle helm-ghq) (el-get-bundle helm-migemo) (el-get-bundle highlight-symbol) (el-get-bundle keyfreq) (el-get-bundle markdown-mode) (el-get-bundle masutaka/egg :branch "freeze-time") (el-get-bundle masutaka/emacs-helm-bundle-show :name helm-bundle-show) (el-get-bundle masutaka/emacs-helm-hatena-bookmark :name helm-hatena-bookmark) (el-get-bundle migemo) (el-get-bundle mori-dev/scratch-log) (el-get-bundle navi2ch) (el-get-bundle nginx-mode) (el-get-bundle open-junk-file) (el-get-bundle org-tree-slide) (el-get-bundle osener/github-browse-file) (el-get-bundle php-mode) (el-get-bundle quickrun) (el-get-bundle rspec-mode) (el-get-bundle savekill) (el-get-bundle terraform-mode) (el-get-bundle web-mode) (el-get-bundle wgrep) (el-get-bundle yaml-mode) ◆変更後...

2015-10-03 (Sat) · masutaka

Emacs で URL encode するやつ

(require 'url-util) (url-hexify-string "http://masutaka.net/") => "http%3A%2F%2Fmasutaka.net%2F" (url-unhex-string "http%3A%2F%2Fmasutaka.net%2F") => "http://masutaka.net/"

2015-07-28 (Tue) · masutaka

helm-bundle-show.elからRubyGems.orgのページに飛べるようにした

[2015-04-13-1] の機能追加。 絞り込んでからの キーで、RubyGems.org のページに飛べるように しました(下記デモ画像中 [f4] )。例えば https://rubygems.org/gems/rails です。 URL をコピーするだけも可能です(下記デモ画像中 [f5] )。

2015-07-13 (Mon) · masutaka

El-Get を多少理解できた気がする

Cask から El-Get に移行したのが先月。 (ちなみに Homebrew の Cask は Emacs の Cask を参考にしたらしいです。) loading... el-get-update とかで頻繁にエラーになるので、調べ始めて文句を言って いるところ(愚かな奴めw)。 loading... loading... 結果、ようやく El-Get を理解できた気がする。 MELPA と同様、自前でレシピを持っているので、基本それを使えば良い。 El-Get は 2015/6/17 現在 1491 レシピ 持っている。 対する MELPA は 2538 レシピ 。これは El-Get にとって脅威ではなく、 むしろメリット。なぜなら、El-Get は自前で持っていないレシピは MELPA のレシピを使うから(後述)。 El-Get のレシピがあるパッケージ こう書けば良い。el-get-bundle を使わない方法は調べていない。 (el-get-bundle helm) El-Get のレシピがなく、Git リポジトリがあるパッケージ el-get-bundle を使う以上、なるべく Git とかの VCS を source にした ほうが良い(バージョンをロックできるのは VCS を使った時だけだから)。 MELPA から GitHub のリポジトリが見つかったら、このように書けば良い。 (el-get-bundle mori-dev/scratch-log) ブランチを指定したければ :branch で指定する。ブランチ名は文字列で...

2015-06-17 (Wed) · masutaka

helm-hatena-bookmark.elに神対応を入れた

はてブを使っているEmacsユーザに朗報です! 今まで~/.hatenabookmarkを作るために http://coderepos.org/share/browser/lang/shellscript/misc/anything-hatena-bookmark-get-dump を手動実行したりcrontabに登録する必要がありましたが、この度不要に なりました。 ~/.emacs.d/init.elに以下の設定をするだけで~/.hatenabookmarkを自動 更新してくれます。デフォルトでは1時間に1回更新します。 (setq helm-hatena-bookmark:username "Your Hatena Account") (helm-hatena-bookmark:initialize) 使用方法は今までどおりM-x helm-hatena-bookmarkです。私は⌘-bに割り 当てています。 (define-key global-map (kbd "s-b") 'helm-hatena-bookmark) すでにMELPAにもリリースされているので、M-x package-install helm-hatena-bookmarkでインストールできます。 あと、これとは別にコマンド実行したらすぐ一覧を出す ようにしました。 今まで不便だと感じつつ使っていて、あ、自分が作ったツールだから直せ ばいいのか!と気づきましたw あまりユーザはいないようなので、カスタマイズ可能にはせず、ばっさり 切り捨てました。必要なら変更しますのでIssueやPull requestなどお願 いします。 ~/.hatenabookmarkの作成は今までのシェルスクリプトとほぼ同じです。 内部でcurlをstart-processで非同期実行し、sentinelで終了通知が来た らGNU sedで置換しています。高速化のために外部コマンドを使うことに しました。 私のはてブ数6030の場合、curlが約30秒、sedが約0.5秒でした。sedでの call-process-regionが速いのが意外でした。curlは非同期で動くので、 60秒とかに増えても気にならないと思います。 sedの特殊な文法を使っているので、OSXのsedでは使えません(見つからな いと(helm-hatena-bookmark:initialize)がエラーで止まります)。 brew等でGNU sedをインストールしてください。 $ brew install gnu-sed 良い実装が出来て満足。

2015-04-19 (Sun) · masutaka

helm-bundle-show.elを作ったら、またEmacsから離れられなくなった

bundleしてるgemにcdする。pecoで絞り込みつつ - Qiita Emacsでも同じことがやりたかったので、helm-bundle-show.elを作りまし た。絶対誰か作っているだろ!と思って探したけどありませんでした。 MELPAにも取り込まれた ので、M-x package-install helm-bundle-showで インストールできます。 私は “C-x y” に割り当てました。便利! (define-key ctl-x-map (kbd "y") 'helm-bundle-show) パッケージ名をhelm-bundlerにするか、helm-bundle-showにするか悩みま した。helm-bundlerだと責務が大きくなりそうなので、helm-bundle-show にしました。 ちなみにzshの関数はこんなのを作りました。awkでprint以外使ったの初 めてかも。 function peco_bundle_show() { local selected_dir=$(bundle show | awk 'NR>1 {print $2}' | peco | xargs bundle show) if [ -n "$selected_dir" ]; then BUFFER="cd ${selected_dir}" zle accept-line fi zle clear-screen } zle -N peco_bundle_show bindkey '^xy' peco_bundle_show

2015-04-13 (Mon) · masutaka

Emacs-24.5 on OSX Yosemiteのビルド手順詳細

Emacs-24.5がリリースされたので 、さっそくビルドしました。 [2014-10-25-1] の手順と同じです。 /usr/includeがないとビルドに失敗するので、 $ xcode-select --installでCommand Line Toolsをインストールしてからね。 $ curl -LO http://ftp.gnu.org/pub/gnu/emacs/emacs-24.5.tar.xz $ curl -LO ftp://ftp.math.s.chiba-u.ac.jp/emacs/emacs-24.5-mac-5.9.tar.gz $ tar xfJ emacs-24.5.tar.xz $ tar xfz emacs-24.5-mac-5.9.tar.gz $ cd emacs-24.5 $ patch -p 1 < ../emacs-24.5-mac-5.9/patch-mac $ cp -r ../emacs-24.5-mac-5.9/mac mac $ cp ../emacs-24.5-mac-5.9/src/* src $ cp ../emacs-24.5-mac-5.9/lisp/term/mac-win.el lisp/term $ \cp nextstep/Cocoa/Emacs.base/Contents/Resources/Emacs.icns mac/Emacs.app/Contents/Resources/Emacs.icns $ ./configure --prefix=$HOME/opt/emacs-24.5 --with-mac --without-x $ make $ make GZIP_PROG='' install # *.elを圧縮したくないので $ cp -r mac/Emacs.app ~/Applications emacs-mac patchの配布元は従来通り...

2015-04-12 (Sun) · masutaka