(defun sut (arg) "テスト対象" (let ((a 1) (b 10) (c 100)) (message "sut: %s" (list a b c arg))) t)

はじめに 本記事は、Emacs のカレンダー機能・天文計算ツールの簡単な紹介、Emacsでサポートされている世界の暦、また本フレームワークを使った、和暦の実装を試みと、その際に気づいた注意点を紹介します。また「またアジア各国の旧暦に関する雑学」についても触れています。 世界の暦 世界には様々な暦が存在します。 人類が月の満ち欠けを意識し、農耕・牧畜、そして宗教祭礼を始めた頃から、一年のうち、どの時期に何をするかを記録することは、社会生活を営む上で重要となり、そこから暦の概念は始まったと考えられます。 その中でもグレゴリオ暦は、世界的に共通の暦として使われ、日本でも多くの年中行事の基準となっています。 しかし、欧米を除いて単一の暦を使っている国はあまり多くはなく、ほとんどの国が、ローカルな暦とグレゴリオ暦を併用しています。グレゴリオ暦のみを使っている日本は、欧米以外では数少ない例外です。 た
概要 基本的に Emacs Lisp (または、Lisp 自体)をあまり知らない方向けです。 Emacs Lisp でどんなコードが書けるのかを知って、興味を持ってもらえればと書きました。 さて、Lisp はマクロで構文を拡張出来る事が特徴ですが、もちろん Emacs Lisp も例外ではなく、フィボナッチ関数を色々な書き方で実装する事が出来ます。 今回は、それ以外にも、ジェネレータ版、遅延評価版、果てはスタックマシーンのコードを直接記述する方法まで、取り揃えました。 (それぞれの関数は、簡単の為、引数に負の値が指定されない事を前提にしています。) 内訳は以下の通りです。 再帰呼び出し系 fib-tail-recursion fib-double-recursion ループ系 (マクロを展開すると結局は同じ様なコードになるけど、色々な書き方が出来る) fib-while fib-dotim
GNU Emacs は、フリーソフトの世界で最も長く、継続的に開発されてきたアプリケーションの1つです。考え方によっては、30年以上を経て、これを複数世代のプロジェクトと見なすことができます。しかし、これだけ長寿であると課題もあります。Emacsコミュニティの多くの人たちは、そろそろエディタ内部のLispインタプリタを、より高速で最新のものにリプレースする時だと結論付けてきましたが、Emacsの大半が動作している基礎となる仮想マシンを入れ替えると、Lispによる Emacs特有の性質 に与える影響を含め、大規模な影響が出ます。 この話題は以前にも上がりましたが、最近では9月11日にChris WebberがEmacs開発リストに、Robin Templetonの Guile-Emacs への作業状況に関して質問を しています 。その名前から分かるように、Guile-Emacsは内部のEma
ace-isearch 20170506.12(in MELPA) A seamless bridge between isearch, ace-jump-mode, avy, helm-swoop and swiper ace-isearch は、isearch(インクリメンタルサーチ)を 超強化するEmacs Lispです。 isearchのクエリ文字数によって、以下の挙動を行います。 1文字→ace-jump-mode 2〜5文字→isearch 6文字以上→helm-swoop 0.4秒アイドルになると自動でace-jump-mode, helm-swoopへ移行します。 ace-jump-mode とは、画面に表示されている文字をタイプすることで、 3ストロークでカーソルを移動するコマンドです。 画面内の移動に特化しています。 helm-swoop とは、M-x helm-occ
use-package 20170710.1234(in MELPA) A use-package declaration for simplifying your .emacs use-package マクロは、emacsのパッケージ設定を 劇的に簡潔にして読みやすくするマクロです。 <2014-12-12 Fri>更新: @kai2nenobuさんも詳しい記事をお書きになりました。 以下の定番の記述がすごいすっきり書けるようになります。 load-path キー割り当て autoload auto-mode-alist interpreter-mode-alist パッケージ読み込み前に行う処理 パッケージ読み込み後に行う処理 Emacsがアイドル状態に行う処理 一時的な設定の無効化 特にキー割り当てに関しては bind-key.el により とてもすっきり記述できます。 作者はEma
migemo 20160924.741(in MELPA) Japanese incremental search through dynamic pattern expansion 日本人でEmacsを使っていてMigemoを使っていないならば、 今すぐインストール してください。 そう、今すぐです。 Emacsのisearchは少ないタイプ数で目的地に到達してくれる 優れたカーソル移動手段です。 しかし日本語文字列の場合は、 ローマ字から変換をする必要があるため、 isearchの恩恵が受けられません。 Migemoは漢字変換の手間を排除し、 ローマ字を入力するだけで 日本語文字列を検索してくれます。 たとえば、C-s nihonで「日本」にカーソルが行きます。 Migemoを使うには、cmigemoというバックエンドをインストールする必要があります。 Debian系列ならば $ su
system-specific-settings 20140818.757(in MELPA) Apply settings only on certain systems Emacs Lispプログラミングをしたり、複数のマシンで共通する設定を書くときには ホスト名やOSごとの処理を記述する必要が出てきます。 そこで、system-specific-settings.elで提供されているマクロを使うと便利です。 when-system-name-match when-system-type-match if-system-name-match if-system-type-match これらのマクロはautoloadされるので、MELPA経由でインストールすれば requireを書かなくても使えます。 使い方は通常のwhenやifと同じですが、条件の書き方が異なります。 完全一致 '(n
を入れるだけです。 これでletがレキシカルスコープになって動作も速くなって幸せになれます。 (require 'cl)問題 にも決着が見えてきました。 cl.el 自体がdeprecatedになっていて、今は cl-lib.el を使うようになっています。 cl.elがcl-lib.elを呼ぶようになっていて、Common Lispマクロ・関数には「cl-」というプレフィクスがつきます。 loop→cl-loop destructure-bind→cl-destructuring-bind remove-if-not→cl-remove-if-not よって、(require 'cl-lib)してしまえばCommon Lisp関数も 合法的に 使えます! おまけに、Emacsにも 念願のパッケージシステム が登場したおかげで、外部パッケージをどんどん投入できるようになりました。 使うと役
このライブラリ群はEmacsに不足している名前がわかりやすい関数、他の言語では提供されているデータ構造を操作する便利な関数を提供してくれます。このライブラリを使うと、プラグインや、スクリプトを作るのがすごく楽になります。 +1の部分であるCaskは、ライブラリというよりプラグインなので別にしてます。 それぞれどんなライブラリか、かいつまんで紹介します。 dash.el dash.elは、Emacsのリスト操作APIを提供するライブラリです。このライブラリは、かなりEmacsのリスト操作を分かりやすく、補完してくれるライブラリになっています。 リスト操作に関連してか、 Clojureのスレッディングマクロ On Lispで紹介されているアナフォリックマクロ バインドという機能 木構造の操作のAPI など様々なものを提供しています。 メリットとしては、 もっと関数型言語っぽく書ける リスト操作
2012年12月13日、HerokuがJRubyを公式サポート言語に加えたと発表しました。公式サポート言語、フレームワークは、 Ruby JRuby Node.js Clojure Python Java Gradle Grails Scala Play ということになりました。すでにScalaやClojureといったJVM言語をサポートしていたので、意外に対応が遅かったような印象もあります。RubyコミュニティがC実装のRubyとUnixのプロセス並列によるスケーリングを好む傾向にあって、JRubyがRuby側からはさほど普及していないことが理由として挙げられるかもしれません。 Herokuは2011年8月にJava対応を開始していて、すでにJRubyを動かすこと自体はできました。今回は公式サポート開始ということで、特別な設定をすることなく利用可能となったということです。 既存のCRub
こんばんは。第二回腐lispの時間です。 今回はループ処理と高階関数について説明します。そして最後にfizzbuzz問題のアレンジ版を作ってみますよ。 ループ 一番単純なループはwhileです。書き方はこちら。 (while 条件式 フォーム1 フォーム2 ) whileを使って、1からlimitまでのリストを作る関数を作ってみます。 fizzbuzzなので1から15までのリストを作ります。 (defun generate-list (limit) (let ((i 1) ret) (while (<= i limit) (setq ret (cons i ret)) (setq i (1+ i))) (reverse ret))) (generate-list 15) ; (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) 高階関数 高階関数というのは引数に関数を
Shadow.vim Vim 用のプラグインに Shadow.vim というものがあります. これは, ファイルを保存するたびに 指定されたコマンドを実行し 実行結果を保存する という作業を行なう非常にシンプルなプラグインで,作者である ujihisa さんは,以下のように説明されています. これは任意の言語で任意の事前処理を行なうための薄いフレームワークです。コマンドや関数は提供されず、以下のようなファイル読み込み時と保存時のフックのみを提供します。 シンプルでこそあれ,小粒でもピリリと辛いプラグインです.その使い方,そして応用例に関しては no title を見ると良いでしょう. Shadow.el さて,先述の Shadow.vim ですが,残念ながら Emacs では動作しません.当たり前ですね. 話は変わりますが,先日開催された Yokohama.vim #1 で「Vim も E
ヘルプバッファや補完バッファをポップアップで表示してくれるpopwin.elをリリースしました。popwin.elはEmacsにポップアップウィンドウという概念を導入することにより、バッファを表示する(display-buffer)際のEmacsのトチ狂った仕様を矯正します。この「トチ狂った仕様」とは例えば、 M-x describe-functionしたらウィンドウが勝手に分割された あるいはウィンドウのバッファを勝手に切り替えられた ヘルプバッファ(*Help*)とか補完バッファ(*Completions*)がどのウィンドウに出現するか予測できない しかも作業後にそれらのバッファが表示されたままになったりする のようなものを指します。Emacsを触ったことがある人なら上記のいずれかは不満に思ったことがあるはずです。ちなみに僕は全てを不満に思っています。 余談になりますが、Wikiped
Emacs Advent Calendar jp: 2010 : ATND 19日目です。昨日は [twitter:@r_takaishi] さんの org-modeとAnythingが交差するとき,物語は始まる - うどん駆動開発 でした。 Web漁ったり会社で Emacs 使ってる人に聞いたりしてると、みんな generic.el の事を知らないらしいので、ちょっと紹介してみようかと思います。 generic.el はハイライト程度の簡単なメジャーモードをお手軽に作るためのライブラリです。Emacs20くらいの昔から標準添付です。「このファイル用のモードってEmacsに無いなぁ」なんて時に使ったりします。 たとえば 例えばこんなシンタックスのファイルがあるとします "#" ではじまるのはコメント "/*", "*/" でかこまれてるのはコメント hoge, fuga, piyo はキー
Emacs Advent Calendar jp: 2010 の13日目というわけで、相撲大好き Emacser の tomoya です。どすこんばんわ (2日連続のネタです)。 昨日12日目は荒川智則さんのいつもの操作がなんなのか調べる方法でした。明日は kwappa さんになります。 ちなみに、去年は Mac の Emacs 23.1 以降でOS標準辞書を使ってみるというネタでした。今年はこれを更に分解して、Elisp で遊んでみたいと思います。 カーソルについて。 さて、パソコンの UI には、主にマウスカーソルとキャレットカーソル*1がありますが、エディタにおいてはキャレットカーソルは最も重要な情報源です。 RPG でいうところの操作キャラの現在地で、これを見失うと操作不能になりますし、調べるとアイテムが見つかったりします。 そんな現在地ですが、Emacs では文字の入力位置という
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く