タグ

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

  • 新しい 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
  • Mavericksで Emacsからデスクトップ通知を使う - Shohei Yoshida's Diary

    Bash - Mavericksでターミナルからパイプで通知だけするワンライナー - Qiita の Emacs版 コード (defvar notification-center-title "Emacs") (defun notification-center (msg) (let ((tmpfile (make-temp-file "notification-center"))) (with-temp-file tmpfile (insert (format "display notification \"%s\" with title \"%s\"" msg notification-center-title))) (unless (zerop (call-process "osascript" tmpfile)) (message "Failed: Call AppleScript

    Mavericksで Emacsからデスクトップ通知を使う - Shohei Yoshida's Diary
  • 関西 Emacs #8に参加しました - Shohei Yoshida's Diary

    (kansai-emacs #x08) #関西Emacs : ATND 第 8回 関西 Emacsに参加しました. あまりおもしろいネタがしこめて いなかったので, 特に発表する気はなかったのですが, 最近の作業報告的な 感じの発表を行いました. 発表資料 その他 フリータイムが多かったので, いろいろ要望を受けたことの対応を行っていました. helm-open-githubの複数候補選択時の対応 emacs-anzuの anzu-query-replace-at-cursorの実装 emacs-anzuの置換機能の改善 を行いました. 自分では十分と思っていた機能でも, 言われてみるとなるほど なぁということがあって, 参考になりました. こういう場では意見がたくさん 聞けていいですね. 特に私のような一人で自分が思うがままに実装する人間に とっては. おわりに やっぱり熱を持っている人

    関西 Emacs #8に参加しました - Shohei Yoshida's Diary
  • 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
  • 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
    tomoya
    tomoya 2013/06/20
    とりあえず入れておいて、必要なときだけ思い出したようにオンすると良さげ。
  • git-messenger.elを書いてみました - Shohei Yoshida's Diary

    TokyoVim #14 に参加して git-messenger.vim を作ってみた - sorry, uninuplemented: の Emacs版です。まだその行のコミットログをポップアップする 機能しかありません。 リポジトリ https://github.com/syohex/emacs-git-messenger コード popup.elが必要になりますので、利用する際は前もってインストールして おいてください。 ;;; git-messenger.el --- Port of gitmessenger.vim ;; Copyright (C) 2013 by Syohei YOSHIDA ;; Author: Syohei YOSHIDA <syohex@gmail.com> ;; URL: ;; Version: 0.01 ;; Package-Requires: ((p

    git-messenger.elを書いてみました - Shohei Yoshida's Diary
  • 第 7回関西 Emacsに参加/発表してきました。 - Shohei Yoshida's Diary

    http://atnd.org/event/ke7 参加して, git-gutter.elについて発表してきました。 発表内容 git-gutter.elについて発表しました。資料はこちらです。 デモをしているときに期待した動作しないなぁと思ったら バグ(git diffの問題のようにも思えますが)だったので、修正して アップデートしておきました。 他の人の発表 @kiwanamiさんの発表が特に面白かったですね。 ternもすごかったんですけど、非同期プログラミングの話が良かったです。 僕自身、非同期プログラミングは並行プログラミングと違う頭で 考えるものなのかなとどこか思っていたんですけど、そうではなく 非同期プログラミングにおいても並行プログラミングを理解して いないとそのことを活かせないというのが印象的でした。 emacs-jp 朝は少し早く行って、emacs-jpの作業をしようか

    第 7回関西 Emacsに参加/発表してきました。 - Shohei Yoshida's Diary
  • httpstatus コマンドで、HTTP のステータスコード(以下略 - Shohei Yoshida's Diary

    一般的な Web Programmer ならば、HTTP Status code はすべて暗記していると聞きました。 しかし、僕は初心者なので、なかなか覚えきれていないので、HTTPのステータスコードを さがすのに便利なツールを用意しました。helm-httpstatusです。以下をコピペしてください。 (defvar helm-httpstatus-source '((name . "HTTP STATUS") (candidates . (("100 Continue") ("101 Switching Protocols") ("102 Processing") ("200 OK") ("201 Created") ("202 Accepted") ("203 Non-Authoritative Information") ("204 No Content") ("205 Reset

    httpstatus コマンドで、HTTP のステータスコード(以下略 - Shohei Yoshida's Diary
    tomoya
    tomoya 2013/02/21
    元記事みて「Emacs でやろう!」と思った瞬間、すでにやられてた。やっぱり、やったなら言っていいってやつか。
  • 自動で revertしたとき、そのことを通知する - Shohei Yoshida's Diary

    Git で branch 切り替えた時とかに emacs で開いてるファイルの buffer を更新 - yoshiori.github.io の id:tomoyaさんのはてブコメントで、通知する方法は、っていうのが あったのでそれについて、revertが行われるときの hook pointとしては before-revert-hookっていうのと after-revert-hookというのが使えます。 今回は完了してからでいいので、after-revert-hookを使えばよいでしょう。 Linux環境なら以下のようにすれば通知できます。hook関数なので引数を 受け取れないですが、buffer-file-nameとしておけば、ファイル名が 取得できると思います。 (require 'notifications) (defun my/after-revert-hook () (noti

    自動で revertしたとき、そのことを通知する - Shohei Yoshida's Diary
    tomoya
    tomoya 2013/02/06
    Great! after-revert-hook 使って、auto-revert を通知。
  • mode-lineのモード情報をコンパクトに表示する - Shohei Yoshida's Diary

    mode-lineに表示されるモードが長ったらしいとうざいです。 最近は PCの画面も横に伸びてきて、1つしかウインドウがない 場合はいいんですが、フレームを分割をしていくと、窮屈に なってしまいます。 そのあたりのことを何も気にせず設定していると以下のようになって しまいます。心当たりがある方も多いのではないでしょうか。 外部から変えられてたり、autocompleteみたいに簡潔につけているものも あるんですが、すべてそういうわけではありませんので、結局長いのが 残ってしまっていたっていう現状だったんですが、対応方法がわかった ので示します。 対応方法 Hiding and replacing modeline strings with clean-mode-line - Mastering Emacs に書いているままなんですが、after-change-major-mode-hoo

    tomoya
    tomoya 2013/02/02
    モードラインの表示を上書きする。
  • Emacs Lispの正規表現における \A, \z - Shohei Yoshida's Diary

    s.elのソースを読んでいたとき、発見したので 記事に残しておきます。 "\A"というのは文字列の先頭、"\z"というのもは文字列の末尾にマッチする アンカーです。"^", "$"は行頭、行末を意味し、1列しかない文字列だと 同じ意味ですが、複数行を扱うとき意味が変わってしまいます。 "\A" = "\`", "\z" = "\'" "\A"に相当するものが、"\`"(バックスラッシュ + バッククォート)、 "\z"に相当するものが、"\'"(バックスラッシュ + クォート) 文字列に現れる場合は "\"は "\\"になりますので、実質 "\\`", "\\'" になります。 例 "\\`"と "^"で結果が違うことがわかります。 (let ((str "aa\naa")) (replace-regexp-in-string "\\`aa" "bb" str)) ; => "bb\naa

    Emacs Lispの正規表現における \A, \z - Shohei Yoshida's Diary
  • 各種モードの hookにまとめて登録するときの記法 - Shohei Yoshida's Diary

    好みの問題なのですが、各種モードで enableにしたいマイナーモードが あるとき, ;; C言語に関する設定いろいろ (add-hook 'c-mode-hook 'yas/minor-mode-on) ;; Rubyに関する設定いろいろ (add-hook 'ruby-mode-hook 'yas/minor-mode-on)) みたいに書いてもいいんですが、設定ファイルを分割していると どのモードで有効にしていたかなっていうのを確認するのが面倒 なので以下のように書くと最近いいかなと思いました。 ;; enable yasnippet mode (dolist (hook '(c-mode-hook c++-mode-hook cperl-mode-hook emacs-lisp-mode-hook js-mode-hook org-mode-hook python-mode-hoo

    各種モードの hookにまとめて登録するときの記法 - Shohei Yoshida's Diary
    tomoya
    tomoya 2013/02/02
    ひとつの関数を dolist によって、同時に各種モードの hook に登録している。その発想はなかった。
  • 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
    tomoya
    tomoya 2013/02/02
    shell-command-to-string() によって取得される値を mode-line に表示する
  • Emacs 24以上を使うなら color-themeではなく、Emacsの themeフレームワークを使おう - Shohei Yoshida's Diary

    color-themeでEmacsの見た目をきれいにする - Qiita Emacs 24以上を使っているという前提があるのですが、独自のテーマを作る場合は color-themeより、Emacs 24から導入された themeフレームワークを使う ことをおすすめです。 機能的には変わらないと思うのですが、color-themeをインストール する必要がないというのがお手軽です。~/.emacs.d以下においておけば、 load-theme関数を使って利用することができます。 サンプル 試しに @kubosho_さんの molokaiを themeフレームワーク版に 書き換えてみました。コードはほとんど同じです。カーソル等のごく一部の パラメータの指定が違うのと、各項目を quoteするぐらいです。 (deftheme molokai "Molokai color theme") (cus

    Emacs 24以上を使うなら color-themeではなく、Emacsの themeフレームワークを使おう - Shohei Yoshida's Diary
    tomoya
    tomoya 2012/12/12
  • MELPAへのパッケージの登録の仕方 - Shohei Yoshida's Diary

    昨日の関西 Emacs勉強会でパッケージ管理の話がちらっと出たん ですけど、あんまり自分でパッケージを登録する人が少なそうだったん でその手順を簡単に示します。 recipeを書いて、pull requestを送る https://github.com/milkypostman/melpa 上記の MELPAのリポジトリを forkします。その中に recipesディレクトリに 目的のパッケージの レシピを追加して pull requestを送り、それが master ブランチにマージされたら、package.elからインストールできるように なります。 pull requestを送るに当たっては、とにかく他の recipeを参考にする ようにしてください。MELPAをリポジトリを管理している方はとても 寛容な方ですごく丁寧に受け答えしてくれるのですが、たくさんの pull request

    MELPAへのパッケージの登録の仕方 - Shohei Yoshida's Diary
  • 第六回 関西 Emacs勉強会に参加してきました。 - Shohei Yoshida's Diary

    (kansai-emacs #x06) : ATND あんまりメモを取っていなかったですが、感想を。 @oaratさん tarao/term-plus-el · GitHub term.elを大幅に機能拡張した term+.elのお話。今回の勉強会の中で 一番インパクトがあったのではないかと思います。拡張どこからかなり 実用的に使えそうな機能が実装されていて感動しました。Emacsで シェルを使うことを諦めていた私ですが、term+.elは欲しい機能が 一通りあると思ったのでチャレンジしてみようかと思います。 私 websocket.elの話をしてきました。 以下発表資料です。 デモ Realtime Markdown Viewer Emacs Lisp REPL in Browser Chat Application @kiyoka pastehubというコピペ共有ウェブサービスの紹介。

    第六回 関西 Emacs勉強会に参加してきました。 - Shohei Yoshida's Diary
  • Emacs/Lisp温泉に参加してきました - Shohei Yoshida's Diary

    Emacs / Lisp 温泉 : ATND 2012/AUG/25に熊県玉名温泉で開催された Emacs/Lisp温泉に 参加してきました。 成果 大阪からだったので、目的地についたときには結構疲れていて 私の成果はほとんど行きと帰りの新幹線の中でできあったものです。 Realtime Markdown Viewerの日語対応 websocket.elにマルチバイト文字列を直接渡すとダメだって ことにソースを見て気づいてその対応をしました。これについては 別エントリを書こうかなと思います。リポジトリ。 メジャーモード tora-mode.elの作成 Vim版を参考にシンタックスハイライトとインデントの実装を行い ました。Emacsで__DATA__(or __END__)以降をコメントとして扱う 方法がわからなかったので、そこは未実装です。 quickrun.elのバグフィックス q

    Emacs/Lisp温泉に参加してきました - Shohei Yoshida's Diary
  • 気になった Emacs記事 2012/AUG/28 - Shohei Yoshida's Diary

    Emacsがホットだったこの 1週間でした。 Emacs勉強会(Agile渋谷) Sublime Text 2が使いたくなるEmacs勉強会が開催されました | Act as Professional Sublime Text 2 for Emacsers // Speaker Deck Emacs勉強会の感想。 - 日々、とんは語る。 関東であった Emacs勉強会。リストの一番上のサイトで発表・LT概要、 プレゼン資料、ブログ等の URLが記載されています。 Emacs/Lisp温泉 Emacs/Lisp温泉やりました - 技術日記@kiwanami = Emacs / Lisp 温泉行ってきました - ぺっくブログミラー@peccul Emacs温泉に行ってきた(概要編) - kozo2's blog Emacs温泉に行ってきました - sheephead Emacs/Lisp温泉

    気になった Emacs記事 2012/AUG/28 - Shohei Yoshida's Diary
  • websocket.el + Amon2でリアルタイム Markdown Viewer - Shohei Yoshida's Diary

    WebSocketがなんなのか全然わかっていませんが、サンプルを参考に リアルタイム Markdown Viewerを作成してみました。日語を書くとエラーになるとか、 効率を全く考えていないとか、繰り返しやってるとエラーが出るとか 問題はまだ多数ありますが、いろいろ楽しいことができそうな予感はしました。 デモ動画 初めの 10秒ぐらい戸惑っています。 必要なもの Emacsは 23以降がいいっぽいです。試したのは 24.1です。 websocket.el Amon2 3.5以降 サーバ側 Amon2付属の chat.psgiをちょっと直した程度です。 use strict; use warnings; use utf8; use Amon2::Lite; use Digest::MD5 (); use Text::MultiMarkdown qw/markdown/; get '/' =

    websocket.el + Amon2でリアルタイム Markdown Viewer - Shohei Yoshida's Diary
  • overlayのサンプル - Shohei Yoshida's Diary

    Emacsで文字列を装飾したり、属性を持たせる場合は propertize関数が 使えますが、バッファにある既存の文字列を加工する場合には overlayという機構が使えるようです。 勉強がてらサンプルを書いてみました。 コード (defvar akkari-n-list nil) (defun akkari-n () (interactive) (save-excursion (goto-char (point-min)) (while (re-search-forward "\\(赤座あかり\\)" nil t nil) (let ((lay (make-overlay (match-beginning 1) (match-end 1))) (color (background-color-at-point))) (push lay akkari-n-list) (overlay-pu

    overlayのサンプル - Shohei Yoshida's Diary
    tomoya
    tomoya 2012/08/20
    overlay、CSS で書ければ僕は幸せになれるんだけどなぁ。