https://old.reddit.com/r/emacs/comments/lly7po/do_you_use_emacs_lisp_as_a_general_purpose/ 1990年代初頭、東欧革命で東西ドイツが統一したあと、私は厄介な仕事、というか誰もやりたがらない仕事に派遣された。ある月曜日の朝、DASAの工場に入った(DASAというのは当初ドイツ航空で、そのあとダイムラー航空になり、今はエアバスに吸収された) プロジェクトはDASAからHPが受注したもので、東西のATC(航空交通管制)システムを統一するというものだった。つまり2つの大企業と政府からの発注ということで、うちのような受注会社はおこぼれを預かっていたわけだ。Emacsの話は実は2つある。 最初の話。その月曜日の朝、手助けする開発者達と顔合わせした。彼らは素晴らしいものに囲まれた研究所にいた。最新のHPワークステー
今回はこのバッチモードでのEmacs Lispに焦点を当てて,テキストを処理するスクリプトやサーバーデーモンを書くためのテクニックを紹介したいと思います. ■■ バッチモードでの標準入出力 バッチモードでは一部の関数が標準入出力を扱うための関数に変化します.早速おきまりのスクリプトを書いてみましょう(リスト1). ------------------ <リスト1> hello.el (princ "Hello, world.\n") ------------------ princ関数は第一引数を標準出力に出力する関数です.このスクリプトを実行するにはターミナル上でEmacsを起動します(リスト2). ------------------ <リスト2> % emacs --script hello.el Loading subst-ksc... oading subst-gb2312...
Emacs Lispを書き始める前に知っておくと良いLispの基礎について。この記事を読んでもEmacsのスキルは上がりません。あと、話の段取り上、めんどくさい方法から順に説明することがあるよ。 対象読者 むかしの自分 Emacsを使ってるけどLispについてちょっとは知っておきたいひと リスト (りんご ばなな みかん)のように要素を並べたものがリスト。データ構造に詳しくないひとは「配列みたいなもの」だと思ってもいい。厳密には連結リスト(linked list)なのでちょっと違ふんだけど、まあ似たようなもの。(あとで説明します) ちなみに、()の中に要素を空白で区切ってならべるリストの書きかたを「S式 (S-expression)」と呼ぶ。Lispのリストは原則としてこの方式で書かれるけど、べつに覚えてなくてもいいです。 リストによるプログラミング プログラムとして評価したい式を(+ 1
Emacs Lisp 入門の第 8 回です。 設定に絞った Emacs Lisp の入門なので、制御構造は必要ないかと思い、前回で終了していました。 しかし、 OS など環境の違う場合に同じ設定ファイルを使おうとすると、条件分岐は必要になってきます。 そこで、今回、 elisp での条件分岐について追加しました。 条件分岐の式 条件分岐の式の基本は if です。 (if 条件式 真の式 偽の式1 偽の式2 :) 条件式は真ならば式の 2 番目の引数として渡した式が評価され、 偽ならば 3 番目以降が順に評価されます。 ただし、 if は偽の時は複数書けるのですが、真で評価する式には 1 つしか書けません。 こういった場合、 progn で複数書けます。 (if 条件式 (progn 式1 式2 :)) ただ、ちょっと書くのが面倒なので、真の時だけ渡した式を順に評価する when も用意され
今回は派生モードを作るためのマクロ、define-derived-modeを使ってみます。使い方はリファレンスマニュアルを参照。 http://www.bookshelf.jp/texi/elisp-manual-20-2.5-jp/elisp_23.html#SEC345 ソース メジャーモードとdeffaceでハイライトの設定 - 零客痩地 この前作ったメジャーモードをdefine-derived-modeを使って書き直してみました。本当は派生モードを作るために使うのが正しいのだと思いますが、派生元をnilにして普通の(派生しない)メジャーモードを作るために使っています。use-local-mapやrun-hooksなどを省略できるけど、そんなにありがたくはないかも。ちなみに、text-modeも派生元nilで使ってます。 違いがあるのはメジャーモードの本体だけです。他は全部同じなので
現在開発中のguide-keyの機能がそれなりに増えてきたので、そろそろテストを書きた いなと思いました。そこでERTでユニットテストを書いて、Caskで依存関係を解決して、 Travis CIでCIするところまでできたので紹介します。 ERTでユニットテスト ERTはEmacs Lisp Regression Testingの略で、Emacs Lispのテスティングツールです。 JUnitなどと同様にユニットテストが書けます。 ディレクトリ構成 EmacsLispで最小構成(っぽい)テストをする方法 - プログラムとかののblog が丁度良くテストの最小構成を紹介していたので、真似して以下のようなディレクトリ 構成にしました。 guide-key/ ├── guide-key.el └── test/ └── guide-key-test.el 参考にしたリポジトリも、概ねリポジトリ直下
duplicate-thing.el というプラグインをMELPA経由でインストール出来るようにするまでのメモ MELPAに上げるとバージョンアップ時の更新がとても簡単になります。(githubのmasterにコミットするだけでバージョンアップ完了) Emacs24ではpackage.elが標準搭載されるようですし、手持ちの.elがあればアップロードしておくとたくさんの人に使ってもらえる確率が上がりそうです。 melpaをforkしてcloneする milkypostman/melpa を fork fork したものを git clone recipes/duplicate-thing を追加 dulicate-thing.elの場合、こんな感じ - 6878e9c 詳しくはこちらを参照 - melpa/README.md 動作確認 README.md にある が失敗したので、以下の方法
昨日の関西 Emacs勉強会でパッケージ管理の話がちらっと出たん ですけど、あんまり自分でパッケージを登録する人が少なそうだったん でその手順を簡単に示します。 recipeを書いて、pull requestを送る https://github.com/milkypostman/melpa 上記の MELPAのリポジトリを forkします。その中に recipesディレクトリに 目的のパッケージの レシピを追加して pull requestを送り、それが master ブランチにマージされたら、package.elからインストールできるように なります。 pull requestを送るに当たっては、とにかく他の recipeを参考にする ようにしてください。MELPAをリポジトリを管理している方はとても 寛容な方ですごく丁寧に受け答えしてくれるのですが、たくさんの pull request
So Emacs 24 has been released. It's a major step forward for Emacs because 24 includes a packaging system. The packaging system is variously known as elpa or package.el but here we will call it just package. This article is a few tips and tricks to make working with packages easier, particularly aimed at developers of Emacs packages. Some tips are still useful for people who just want to install p
Replace any character with a fixed char(make-string (length word) 0) replace-regexp-in-stringEmacs21 already has what you need: (replace-regexp-in-string "fo+" "baz" "da foo is foobared") => "da baz is bazbared" Direddired.el already has what you need: (require 'dired) (dired-replace-in-string "fo+" "baz" "da foo is foobared") => "da baz is bazbared" Splitting and Joining StringsYou can use the re
GNU Emacs Version 19, for Unix Users, Second Edition, June 1993, Further Revised, August 1993 The GNU Manual Group GNU GENERAL PUBLIC LICENSE Preamble TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION How to Apply These Terms to Your New Programs Introduction Caveats Lisp History Conventions Some Terms nil and t Evaluation Notation Printing Notation Error Messages Buffer Text Notatio
A string in Emacs Lisp is an array that contains an ordered sequence of characters. Strings are used as names of symbols, buffers, and files, to send messages to users, to hold text being copied between buffers, and for many other purposes. Because strings are so important, Emacs Lisp has many functions expressly for manipulating them. Emacs Lisp programs use strings more often than individual cha
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く