タグ

ブックマーク / syohex.hatenablog.com (47)

  • package.elから Caskに切り替えました - Shohei Yoshida's Diary

    emacs の lisp 管理に cask つかいはじめた。これだよー 2014-04-24 11:55:48 via web 私もしばらく前に Caskに切り替えたのでそのメモ. Caskを使う利点 (あまりいないだろうけど)Emacsのバージョンごとにパッケージを管理できる Gitで管理されていれば, MELPAに登録されていなくてもインストールできる 0.6から Gitのタグ, コミット IDの指定ができるようになり, バージョンの固定化が可能に. 自分の環境をファイルに落とし込める インストール % curl -fsSkL https://raw.github.com/cask/cask/master/go | pythonMacユーザの人は homebrewで入れれるみたいです. % brew install cask Caskのアップデート まだ開発中で問題修正も稀にあるので,

    package.elから Caskに切り替えました - Shohei Yoshida's Diary
    aki77
    aki77 2015/06/29
  • LLDiverのエディタ対決に Emacs代表として参加しました. - Shohei Yoshida's Diary

    http://ll.jus.or.jp/2014/ エディタ対決に Emacs代表として参加してきました. ネガティブな発言が多めで、もっとポジティブなことを言うべき だったと反省しています. ごめんなさい. 資料 5分弱でということだったのでほとんど内容はありません. 以下脳内シミュレーションで話の内容を考えていたけど話さなかった ことや当日うまく話せなかったことについて. 拡張言語 Emacs Lisp 括弧だらけで, 機能的にも貧弱な言語ですが, 好きです. というか書くのが楽. 楽というのは論理的な意味でなく物理的な意味でです. 括弧が多いことなんて 慣れればどうにでもなります. 逆に物理的に書くのが大変と思うのは, pythonとか CoffeeScriptのようなインデントに意味がある言語. 自動インデントができない のが辛すぎる. パッケージ管理 package.elはとりあ

    LLDiverのエディタ対決に Emacs代表として参加しました. - Shohei Yoshida's Diary
    aki77
    aki77 2014/08/25
  • シェルスクリプトを公開するとき, コマンド前にバックスラッシュをつけるべき - Shohei Yoshida's Diary

    oh-my-zsh の環境で、peco-select-history が動かない - Qiita 追記 2014年 7月 7日 シェルスクリプトと書いてしまい漠然すぎましたが, ここで述べている ことが問題になるのは, .bashrc, .zshrcに関数, alias設定等がコピー される場合や, sourceコマンドでファイルを読み込む場合です. non-interactiveに実行されるシェルスクリプトについては特に 問題ないです. 問題点 そうしないと, 公開されたコマンドを自分の環境に導入した場合, aliasにより正しく動かなく場合があるためです. aliasをつけがちな コマンド(ls, grep等)がシェルスクリプトに含まれていると 特に問題が起こる可能性が高くなります. 例 pecoを使って カレントディレクトリのファイルをページャで開く 例を考えてみましょう. 単純に考

    シェルスクリプトを公開するとき, コマンド前にバックスラッシュをつけるべき - Shohei Yoshida's Diary
  • GNU版, BSD版 xargsの挙動の違い - Shohei Yoshida's Diary

    細いところを見ていくと膨大な違いがあるんでしょうけど, ハマりやすそうなところだけ. GNU版は Linuxディストリビューションにインストールされているもので, BSD版は MacOSX, 各種 BSDディストリビューションにインストールされて いるものとしています. 入力に非空白文字が含まれない場合の挙動 GNU版は最低 1回はコマンドが実行されますが, BSD版は入力に非空白文字が なければコマンドが実行されません. 例えば以下のコマンドを実行したとき, % perl -wl -e 'print "\n" for 1..100 | xargs ls'GNU版では lsが 1回実行されますが, BSD版では何も出力されません. --no-run-if-empty, -rオプション GNU版 xargsには, --no-run-if-empty(-r)オプションがあり, これを 指定する

    GNU版, BSD版 xargsの挙動の違い - Shohei Yoshida's Diary
    aki77
    aki77 2014/07/02
    xargs
  • peco + GNU global - Shohei Yoshida's Diary

    ソース探索時に便利 コード シンボルの補完を効かせたい場合は, 全部コマンドを打った方がいいかも. ちゃんと補完の設定をするというのありですが. function peglobal() { global $@ | peco | xargs less } イメージ

    peco + GNU global - Shohei Yoshida's Diary
    aki77
    aki77 2014/06/27
  • atom-ghqを書きました - Shohei Yoshida's Diary

    Emacsのために atomを稀に触っています. テストの書き方が全然理解できていなくて, 中途半端な状態ですが, 機能としてはとりあえず実現できました. テストが通らないと公開 できないそうなので, そこは頑張って通して公開したいところです. 機能はghqでインストールしたレポジトリ一覧を表示し, 選択したものを 別ウインドウで開くというものです. 拡張自体頑張って全部 atomを使って書いています. リポジトリ https://github.com/syohex/atom-ghq イメージ こんな感じで, コマンドパレットが開いて, 選択するとそのプロジェクトを 別ウィンドウで開きます. 感想 設定で変えれるんでしょうけど, 現状辛いところが多いです. Macで使っていたらもっといいところが増えると思いますが, 現状 Linuxだと超辛いです. いいところ CSS(LESS)でお手

    atom-ghqを書きました - Shohei Yoshida's Diary
    aki77
    aki77 2014/06/26
  • coffee-mode 0.5.2 released - Shohei Yoshida's Diary

    coffee-mode 0.5.2 is out. I fixed newline-and-indent issues. Repository https://github.com/defunkt/coffee-mode Issues if true |Cursor is '|' and executes coffee-newline-and-indent(C-m), then if true |Indentation is one level deeper than expected. if true | if trueCursor is '|' and executes coffee-newline-and-indent(C-m), then if true |if trueIndentation is one level deeper than expected. Finally P

    coffee-mode 0.5.2 released - Shohei Yoshida's Diary
  • emmet-modeの previewに関する設定 - Shohei Yoshida's Diary

    http://qiita.com/ironsand/items/55f2ced218949efbb1fb http://drumken.blog8.fc2.com/blog-entry-360.html previewをデフォルトでどうやったら無効にできるかを調べたので そのメモを示します. previewとは こんなやつです. デフォルトでは emmet記法(?)で書いて Ctrl-jとするとこんな感じに 展開後の HTMLが表示されます. 確認という意味ではいいんですけど, 手早くやりたい 場合は不要です. previewを表示しないようにするのは Ctrl-jの前に Ctrl-uをつけることで previewが表示され なくなります. prefixなしで previewを表示しないようにする emmet-preview-defaultをnilに設定してください バッファローカル変数で

    emmet-modeの previewに関する設定 - Shohei Yoshida's Diary
    aki77
    aki77 2013/10/04
  • git-gutterと git-gutter+の違い - Shohei Yoshida's Diary

    hunkを stageする機能の実装で悩んでいるときに, git-gutter+だと 実装されているのかなと思って確認したところ実装されていて, その他の 部分も見てみるとおぉと思ったことがあったので, ここらで git-gutter との違いを示しておこうかと思います. git-gutter+のリポジトリ https://github.com/nonsequitur/git-gutter-plus forkの経緯 git-gutter+は git-gutterから forkしたプロジェクトです. forkの経緯は git-gutter+の作者の方が高速化(厳密には低速化の防止)の ための Pull Requestを私が rejectしたことです. そのパッチはかなり 巨大で既存の挙動をいろいろ変えるものでした. rejectした理由は, 私が外せないと思った機能が除去されていたことと,

    git-gutterと git-gutter+の違い - Shohei Yoshida's Diary
  • 新しい magit向け magit-statusの設定 - Shohei Yoshida's Diary

    https://github.com/magit/magit magitが新しくなって, コミットメッセージを今まで独自のものから git-commit-modeを使うようになりました. そのせいかどうかは断定 できないんですが, commitメッセージを書き終えて, C-c C-cで それを反映させた後の Window構成が不安定になってしまったので, その対応(軽減するという程度のものかもしれません). 以前はこんなことなかったんですけどね. まあ他に任せられるところは 他に任せるという方針なんでしょうかね. コード multiple cursor等で有名なMagnar Sveenさんの設定そのものです。 (defadvice magit-status (around magit-fullscreen activate) (window-configuration-to-registe

    新しい magit向け magit-statusの設定 - Shohei Yoshida's Diary
  • keyfreqで Emacsの使い方を見直す - Shohei Yoshida's Diary

    コマンドの使用頻度を表示してくれる keyfreqの紹介 目的 効率的な移動コマンドをちゃんと使っているかとか, ユーティリティ 書いたけど, 全然使ってないとか判断するのに使えます. リポジトリ https://github.com/dacap/keyfreq インストール MELPAからインストールできます M-x package-install keyfreq 設定 (require 'keyfreq) ;; package.elからインストールした場合は不要 (keyfreq-mode 1) (keyfreq-autosave-mode 1) 表示例 M-x keyfreq-show で表示してくれます. 3039 24.20% self-insert-command SPC..~, ?.. 2509 19.98% next-line C-n, <down> 2127 16.94%

    keyfreqで Emacsの使い方を見直す - Shohei Yoshida's Diary
    aki77
    aki77 2013/09/05
  • litable.elの紹介 - Shohei Yoshida's Diary

    litable.elを紹介します. lispxmpみたいなイメージを持ってもらえれば いいと思うのですが、関数にどのように引数が渡されるかというのも視覚的に 表示されます。 動画 非常に視覚的なので動画を見るのが一番手っ取り早いでしょう http://www.youtube.com/watch?v=TgHvRcbYJ-8 https://www.youtube.com/watch?v=mNO-vgq3Avg リポジトリ https://github.com/Fuco1/litable インストール MELPAからインストールできますので、package.elでインストールして ください。 使い方 M-x litable-mode するだけです 図解 以下のような関数を定義し、評価しておきます。 その関数を利用しようとすると、関数定義の部分が変化します。 引数まで書くと、どのように引数が渡さ

    litable.elの紹介 - Shohei Yoshida's Diary
    aki77
    aki77 2013/07/19
  • Emacsでの環境変数の設定に exec-path-from-shellを使うようにした - Shohei Yoshida's Diary

    EmacsでPATHの設定が引き継がれない問題をエレガントに解決する - Qiita この手のツールは何個か知っていたんですが、環境変数を一つ取り出す度に シェルを起動しているというものが多くて、利用をためらっていたのですが、 exec-path-from-shellのコードを見たところ、複数指定してもまとめて 値を取ってくれるようなので、いいかなと思って切り替えました。 インストール package.elで MELPAからインストールしてください。 設定 以下のような感じで良いです。PATHが含まれていると、exec-path, eshellの PATHの 設定もあわせて行なってくれます。 ;; load environment variables ;; 追記 GEMに関する環境変数を設定すると rbenv経由で rubyがうまく使えなかったので削除 (let ((envs '("PAT

    Emacsでの環境変数の設定に exec-path-from-shellを使うようにした - Shohei Yoshida's Diary
    aki77
    aki77 2013/07/19
  • package.elを使う場合の設定ファイルの書き方 - Shohei Yoshida's Diary

    init-loader.el と package.el を導入して快適 Emacs ライフ - Qiita に影響されて書きます。 package.elの設定ははじめの方に書く ;; Emacs package system (require 'package) (add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/")) (package-initialize) package.elを使っているような人であれば、上記のような設定がどこかしらに あると思うのですが、これは初めの方に書くべきです。具体的には早い段階で package-initializeを呼ぶべきだからです。 package.elはパッケージ管理だけのツールではない package.elを使ってパッケージをインストールした場

    package.elを使う場合の設定ファイルの書き方 - Shohei Yoshida's Diary
  • git-messenger.el 0.03をリリースしました - Shohei Yoshida's Diary

    git-messenger.el 0.03をリリースしました リポジトリ https://github.com/syohex/emacs-git-messenger インストール MELPAに登録されましたので、package.elからインストールすることができます。 詳細表示機能の追加 git-messenger:popup-messageを C-u prefixで実行することで詳細表示が されるようになりました。コミットメッセージの他に Commit ID, Author, Commit Dateもあわせて表示されます。 常に詳細表示をする場合は git-messenger:show-detail 変数に tを 設定してください。 イメージは以下のような具合です hookの追加 popup後に実行される hookを追加しました. git-messenger:after-popup-ho

    git-messenger.el 0.03をリリースしました - Shohei Yoshida's Diary
  • 現在編集しているファイルを git add -Nする - Shohei Yoshida's Diary

    git管理下で git-gutter.elが効果を発揮しないのが嫌なので 作りました。ちなみに git add -Nはとりあえず stagingするという もので、後ほどちゃんと git addする表明みたいなものです。 ここでは明示的にコマンドを叩くようにしましたが、find-file-hook あたりに引っ掛けるのも良いかと思います。その場合は git管理下で あればというチェックが必要になるかと思いますので、そうしたい人は そのように実装してみてください。 コード (defun my/git-intent-to-add () (interactive) (save-buffer) (let* ((file (file-name-nondirectory (buffer-file-name))) (cmd (format "git add -N %s" file))) (unless

    現在編集しているファイルを git add -Nする - Shohei Yoshida's Diary
  • jsxの zsh補完 - Shohei Yoshida's Diary

    jsxの補完が書きたかったというか、コンマで区切られた値の補完を どうやるんだというのが知りたかったので書いてみました。 コード jsx --helpだけを参考に書いたので問題があるかもしれません。 #compdef jsx _jsx_warn() { local expl warning local -a jsx_warnings jsx_warnings=(all deprecated none) # Ignore existing values compset -P '*,' # Remove already-referenced warnings for warning in ${(s:,:)${IPREFIX}} do jsx_warnings=( ${jsx_warnings:#$warning} ) done _wanted jsx_warnings expl 'warnin

    jsxの zsh補完 - Shohei Yoshida's Diary
    aki77
    aki77 2013/05/23
  • quickrun.elに quickrun-replace-regionを実装しました - Shohei Yoshida's Diary

    Mac を使っているなら必ず使うべき2つの機能 "Automator" と "サービス" - kurainの壺 をパクって実装してみました。 概要 リージョンのコードを実行し、結果を表示するのではなく、リージョンを その結果で置き換えます。Macのようにどんなアプリでも任意に使えるという のはありませんが、Rubyだけでなく、quickrun.elがサポートする(自分で 追加したものも含む)言語で実行できることは利点でしょうか。そういうわけで Rubyわかんねーって人は、C言語で書くこともできます。 イメージ 真似して gifを作ってみました。 注意 日語を使う場合ですが、Ruby 2.0より前の場合明示的に encodingを実装しないと エラーになるので、Automatorの紹介であったやつと同じ例をやるとエラーが返ります。 Ruby 2.0だとデフォルトで utf-8と解釈するので

    quickrun.elに quickrun-replace-regionを実装しました - Shohei Yoshida's Diary
    aki77
    aki77 2013/02/22
  • direx.elの設定 - Shohei Yoshida's Diary

    https://github.com/m2ym/direx-el m2ymさんプロダクトの direx.elというイカした diredチックな ツールがあります。機能補充のための pull request(chmod, Elispの load, byte-compile)だけして使っていなかったんですが、そろそろ使おうと いうことで設定してみました。 キーバインドは dired-jumpと同じ "C-x C-j"です。 個人的にまだ完全に diredを置き換えられないので、C-u prefixを つけると dired-jumpを起動するようにしています。あとフレームを 分割しているときに、一番左に popupされるとどのバッファに対して ディレクトリ操作を行ったかがわかりづらくなってしまったので、 分割しているときは、other-windowでなく、同じ windowで表示するようにしてい

    direx.elの設定 - Shohei Yoshida's Diary
    aki77
    aki77 2013/02/04
  • vc-modeを使わずに mode-lineにブランチ情報を表示する - Shohei Yoshida's Diary

    以前カーネル開発で vc-modeを onにしたままやっていたら、バックグラウンドで ごにょごにょしすぎて、まともに使えるか!!、ってなってそれ以降ずっと offに していたんですが、さすがにブランチ情報がないと branch切ったときの確認に 手間がかかるなぁってことで、表示するようにしてみました。 CVS, subversionとかもう使わないんで、git対応だけです。 ついでに今リポジトリ内にいない場合もその情報を表示するように しています。 コード ;; Show Git branch information to mode-line (let ((cell (or (memq 'mode-line-position mode-line-format) (memq 'mode-line-buffer-identification mode-line-format))) (newcd

    vc-modeを使わずに mode-lineにブランチ情報を表示する - Shohei Yoshida's Diary