タグ

progとelispに関するNeanのブックマーク (25)

  • iterator.el : Emacs Lispで外部イテレータを実現する

    # Rubyにて # 外部イテレータとして使う i = [1,2,3].to_enum # => #<Enumerator: [1, 2, 3]:each> i.next # => 1 i.next # => 2 i.next # => 3 i.next rescue $! # => #<StopIteration: iteration reached an end> # 循環リスト i = [1,2].cycle # => #<Enumerator: [1, 2]:cycle> i.next # => 1 i.next # => 2 i.next # => 1 i.next # => 2 ;;; リストからなるイテレータ (let ((iter (iterator:list '(1 2 3)))) (iterator:next iter) ; => 1 (iterator:next it

    iterator.el : Emacs Lispで外部イテレータを実現する
  • eval-after-load設定すべきもの, hookで設定すべきもの - Shohei Yoshida's Diary

    eval-after-loadで設定すべきもの 一度だけ設定すればよいものは, eval-after-loadで設定すべきです. 具体的にはキーバインド, face, バッファローカルでない変数の設定, ファイルのロードなどです. (defcustomizeで定義された変数については custom-set-variablesを使えば, eval-after-load内に書く必要はありません) local-set-keyを使いたい場合は hookになります. with-eval-after-load Emacs 24.4からは with-eval-after-loadというマクロが加わっています. これにより, quote+prognを書く必要がなくなります. 少しすっきりします. Before (eval-after-load 'comint '(progn (setq comint-in

    eval-after-load設定すべきもの, hookで設定すべきもの - 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
  • git-gutter.el - naoyaのはてなダイアリー

    寝れないので変な時間にブログを書いたりする。 時折思い立ったように Emacs Lisp を見直して色々導入を試みたりするも、結局割り当てたキーバインドを忘れてたりして定着しない、というものは多い。そんな中でもここ1, 2ヶ月くらいで定着したのが git-gutter.el。 このように緑のプラス記号なんかが出て git で管理しているファイルを編集した場合の差分がどこかが一目でわかる。 多くの elisp がそうなんだけど、導入する前までは便利そうだけどそこまで必要かな? と思いつつ入れてみたらもう手放せなくなった、そういう類です。ぼーっとしながらコード書いてる時でも、あそことあそことあそこを編集したんだなってのが git diff とかしなくても分かる。 これを入れるとちょっと動きがモッサリするみたいな話もあるけど、作者の id:syohex さんが鋭意改善中 (http://d.ha

    git-gutter.el - naoyaのはてなダイアリー
  • Difficulties of elisp — The Cliffs of Inanity

    The thesis that underlies my project to translate the Emacs C code to Common Lisp is that Emacs Lisp is close enough to Common Lisp that the parts of the Emacs C code that implement Lisp can be dropped in favor of the generally superior CL implementation.  This is generally true, but there are a few difficult bits. Symbols The primary problem is the translation of symbols when used as variable ref

  • Emacs Lisp てほどき— .emacsを書くための —目 次1 はじめに 12 *scratch*バッファで 23 基本的な S 式 34 シンボル 75 バッファローカルな変数と暗黙値 96 関数とコマンド 117 ラムダ式とフック

    Emacs Lisp てほどき — .emacsを書くための — 目 次 1 はじめに 1 2 *scratch*バッファで 2 3 基的な S 式 3 4 シンボル 7 5 バッファローカルな変数と暗黙値 9 6 関数とコマンド 11 7 ラムダ式とフック 13 8 おわりに 15 A Emacs Lisp のコーディング書式 16 Х. С. СУДЗУКИ i 1 はじめに Emacs は,起動時,(典型的には) ホームディレクトリに .emacs という名前のファイルがあるか調べ,あ れば,それにもとづいて様々な初期設定を行う。ファイル .emacs のテキストは,一見したところ括弧が目 立つ独特のプログラミング言語で書かれているが,実は,この言語こそが Emacs を操る手段にほかなら ない。 そもそも,Emacs にある様々な編集機能は,ユーザがかなりの程度まで自由に制御で

  • gdbでEmacs Lisp のスタックトレースを表示する - *iroi*

    Emacs"で"デバッグする方法はいっぱい出てくるのに、Emacs"を"デバッグする方法が http://www.emacswiki.org/emacs/DebugEmacs くらいしかみつけられないです... とりあえずgdb で elispのスタックトレースをみたいので GDBで実行中のスクリプト言語のスタックフレームをダンプしてみる試み - muddy brown thang を参考に 書いてみました。 関数(struct Lisp_Function)以外に対応してないとか, アーキテクチャ(OSX)にとても依存している気がします。 あとハッシュを計算するのが面倒なのでシンボルテーブルを引くのが欲しいです。 実行結果は以下 bt だと C の関数ばっかりでよくわからない! のが (gdb) bt #0 0x00007fff84a210b6 in __kill () #1 0x0000

    gdbでEmacs Lisp のスタックトレースを表示する - *iroi*
  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
    Nean
    Nean 2011/08/09
    文字列。
  • erefactor.el - まにっき

    最近、長年書き溜めた色んな elisp を公開してます。 Emacs Lisp の refactoring 用ツールをまとめた erefactor.el を公開しました。 http://www.emacswiki.org/emacs/erefactor.el https://github.com/mhayashi1120/Emacs-erefactor erefactor.el は大きく三つの機能に分けられます。 symbol 名の変更 ローカル変数 highlight 外部 elint 似た機能を持つ elisp として https://github.com/mitsuo-saito/auto-highlight-symbol-mode がありますが、あちらは色々な言語用の汎用版で、こちらは Elisp 限定版と捉えればよいと思います。highlight 機能が被ってしまったので、その場

    erefactor.el - まにっき
  • js2-mode.el (フォーク版) 20101228 リリース - mooz deceives you

    ちょくちょく no title の方をいじっていたのですが, 今年中に行った変更は今年中に一度リリースしてしまおうということで. 変更点をまとめておきます. 変更点 ネストされた関数式やオブジェクトリテラルのインデント オリジナルの js2-mode で, ネストされた関数式やオブジェクトリテラルのインデントが以下のように嫌な感じになっていた問題を修正しました. $.ajax({ type : "POST", url : "some.php", data : "name=John&location=Boston", success : function (msg) { alert( "Data Saved: " + msg ); } }); 修正版では, 次のようになります. $.ajax({ type : "POST", url : "some.php", data : "name=Jo

  • Emacs Lispのソースコードデバッガ edebug を使う - http://rubikitch.com/に移転しました

    edebugとはソースコードデバッガedebugとは、Emacs Lispのソースコードデバッガです。 これを使うと、Emacs Lispがどのように実行されているのかをステップバイステップで見ることができます。 前の記事で紹介した trace-function では不十分な場合は、edebugで格的にデバッグします。 edebugは状態がころころ変化するので、実際に手を動かしてみましょう。 edebugを有効・無効にするC-u C-M-xで関数をedebug対象にするedebugは基的には関数単位でedebug対象にします。 特定の関数をedebug対象にするのは簡単です。 通常、関数フォームを評価する、すなわち関数を定義するには、defun中あるいは、defunの直後でC-M-xを使います。 それに対し、関数フォームをedebug対象にするには数引数をつけ、C-u C-M-xを使い

    Emacs Lispのソースコードデバッガ edebug を使う - http://rubikitch.com/に移転しました
  • デバッグの第一歩!Emacs Lisp関数をトレースする方法 - http://rubikitch.com/に移転しました

    Emacs Lispのデバッグをしているとき、特定の関数呼び出しをトレースしたいことがあります。 関数呼び出しのトレースとは、呼び出した関数の引数の値と、返り値をチェックすることです。 もちろん、関数が呼び出されたかどうかもわかります。 トレースの実現にはadvice機能を使っています。 M-x trace-functionでトレースするM-x trace-functionは、特定の関数をトレースします。 このコマンドは、トレース対象関数と出力バッファを聞いてきます。 出力バッファはデフォルトで*trace-output*なので、そのままにしておくのが無難です。 複数の関数をトレースする際に出力がごちゃごちゃになるのが嫌ならば別のバッファ名にしておけばいいです。 その後でトレース対象関数を呼び出したら、トレース結果を表示します。 M-x trace-function-backgroundで

    デバッグの第一歩!Emacs Lisp関数をトレースする方法 - http://rubikitch.com/に移転しました
  • Hatena::LetのエディタをEmacsにする - Kentaro Kuribayashi's blog

    ブックマークレット作成・管理サービスのHatena::Letは、便利な開発環境があって、書いてはすぐに実行してデバッグしてまた実行して……というサイクルで開発できるのですが、APIもあるのでEmacsで書いたらポストして保存 → ブックマークレット実行なんてこともできます。というわけで、以下をでっちあげた。deferred.el便利ですね。 さらにブックマークレットも自動的に実行できるようにしたいなあ。

    Hatena::LetのエディタをEmacsにする - Kentaro Kuribayashi's blog
  • 非同期と継続と私 - 技術日記@kiwanami

    非同期のプログラミングの解説の中にはよく「継続(渡し)」が良く出てきます。継続といえば Scheme の call/cc ですが、やっぱり JSDeferred のサンプルのページにも出てきます。直感的にはあんまり関係ないような気がしますが、関係があるようです。 さらに、非同期と遅延評価の関係も気になります。非同期は「結果が後で来る」感じですが、遅延評価は「必要になるまで結果を計算しない」ということで、後回しにする感じが似ています。 今回、deferred.el を作った後にこれらについて考えてみたところ、なんとなく自分の中で実用的な結論に達したのでまとめてみました。以下、その過程とまとめです。 あらすじ 継続渡し(CPS)と非同期 CPS変換から非同期化 Deferredで非同期化 遅延評価と非同期 遅延関数のCPS変換から非同期化 Deferredで非同期化 明示的形式と暗黙的形式 継

    非同期と継続と私 - 技術日記@kiwanami
  • リージョンのコードを実行してみる ruby 版 - わからん

    以前 PHP 用に書いた関数を移植。リージョン選択して C-c C-r で実行。結果ウィンドウは q で削除できる。便利。 (defun my-ruby-eval-region () (interactive) (when (region-active-p) (let ((region-str (buffer-substring-no-properties (region-beginning) (region-end))) (result-buf "*ruby*") (temp-file (make-temp-file "my-ruby-eval-region-"))) (with-temp-file temp-file (insert (concat "require \"pp\"" "\n" region-str))) (shell-command (concat "ruby " te

  • deferred.el のできるまで:調査、設計と実装 - 技術日記@kiwanami

    deferred.elを作る上での参考にした情報や、設計・実装のメモです。 一般的なDeferredの理解や、Deferredの情報まとめとしても使えるかもしれません。 Deferredについて コールバックをうまく書くイディオム 非同期処理の抽象化の道具 汎用性が高く、使い始めると無いと困るレベル 後述のbrazilさんの記事が大変オススメです。 参考にした情報など 基的に古い記事(2年以上前)が多く、JavaScript界の中ではすでにブームは過ぎ去って、常識の域になっているようです。そうは言っても、deferred.elを実装するために過去のブックマークなどを掘り起こして読み直してみたのですが、自分の中では再発見することも多かったです。 JSDeferred deferred.elで一番参考にした実装です。実装がシンプルです。 後述のMochikit.AsyncのDeferredに

    deferred.el のできるまで:調査、設計と実装 - 技術日記@kiwanami
  • Emacs Lisp が「書ける」ようになるまで - 技術日記@kiwanami

    先日の関西Emacsでは、Emacs Lisp の入門記事がうけるとか、「書ける」ようになる情報がないらしいという話を聞きました。確かに、Emacsの初歩的な操作入門と、良く書ける人がアプリやブログなどでelispをばしっと書いてるのはよく見ます。入門から書けるようになるまでの間の過程は見たこと無かったかもしれないと思いました。 ということで、Emacsの先人たちにはまだまだ及びませんが、いくつかのアプリを書いてみた自分がたどった方法を書いてみます。先にまとめると以下の2つになると思います。 elispでどうしても書きたい物があること たくさん書いて動かして(こっちが先)、そしてInfoや他人のコードを見て勉強する 書ける以前のまとめ Emacs歴10年以上。すでに生活の一部。 でも設定を書くのに使っていたぐらい。 既存のアプリの分かりやすいバグを手元でちょっと直すとか。 LISP系の言語

    Emacs Lisp が「書ける」ようになるまで - 技術日記@kiwanami
  • e2wm の設計と実装 - 技術日記@kiwanami

    はじめに e2wm.elのソース読んだり、自分流に拡張するための参考になるように、e2wmの設計と実装について簡単に説明します。 あらすじ 全体の構成の説明 各モジュールの説明 各イベント時の動きの説明 現在の実装と今後の予定 図の一覧@Cacoo 全体の構成 まず、全体構成の図を示します。 全体の構成図 全体的な流れとして、イベントや画面の変化などをパースペクティブ管理に集めてきて、そこでパースペクティブに応じた加工を行い、ウインドウレイアウト制御のライブラリで画面に描画するという形です。 モジュール間の依存関係は次の図のようです。矢印の先が依存先です。 モジュール間の大まかな依存関係 パースペクティブ管理や履歴の情報とウインドウ制御の機能を、各モジュールが参照して使っているというようなイメージになります。 e2wm.elのソースコードの命名も、大体このような分類で並んでいます。 各モジ

    e2wm の設計と実装 - 技術日記@kiwanami
  • Emacs Lisp基礎文法最速マスター - http://rubikitch.com/に移転しました

    基礎文法最速マスターブームにのっかってみる。Ruby基礎文法最速マスターをだいたいEmacs Lisp(elisp)に置き換えてみる。 Emacs LispはEmacsで使われているLisp方言のひとつだ。他の言語をある程度知っている人はこれを読めばEmacs Lispの基礎をマスターしてEmacs Lispを書くことができるようになるかもしれない。無保証ではあるが。 ある程度はCommon Lispにも応用できると思うよ。 更新情報 [2010/02/03] 注釈の誤りを修正。 let*について加筆。 基礎 対話的にEmacs Lisp式を評価する Emacsを起動したときに生成されている、スクラッチバッファ(*scratch*)を使うと、Emacs Lispの式を簡単に評価することができる。M-Tabで補完できるぞ。 式を書いたらC-jを押すと、式の値が出てくるぞ。 (+ 1 3) 4

    Emacs Lisp基礎文法最速マスター - http://rubikitch.com/に移転しました
    Nean
    Nean 2010/02/02
    はずかしながら、ielmって知らんかった。こういうの、どの入門書にも書いといてくれなきゃなぁ。
  • bookshelf.jp

    This domain may be for sale!