初心者のためのEmacs:elisp

はじめに


私は教科書を書くつもりはない、または
Lisp入門コースであり、完全な説明のふりをしないでください。 A
私は自分の意見でいくつかの有用な情報を提供するつもりです
初心者がemacsを使用してカスタマイズするのに役立ちます
裁量と簡単な関数を書くこともできます
emacsの使用中に使用します。

Emacsは、どこでも繰り返し言及されているように、
テキストエディタとLispインタプリタの組み合わせ。 必要なだけ
それを使用することができます。

職場の準備


始めるために、emacsを調整して、快適に使えるようにします
働く。

次の行を.emacsに挿入します。

setq auto-mode-alist
追加
'
"\\。el $"lisp-mode
global-font-lock-mode 1

括弧の最初のセットは、ファイルを開いたときに
拡張子.el、バッファ内の作業モード
Lispプログラムのテキスト。 最後の行はバックライトをオンにします
構文。 言語演算子をさまざまな素敵な色に色付けします。 それは
プログラムのテキストを読むのに本当に役立ちます。 編集したら
emacsの.emacsを再起動して、設定ファイルを再読み込みします。

ここで、経験豊富な同志は、上記の操作は必要ないことを示唆しました。なぜなら、必要なモードはemacsの最新バージョンではデフォルトで有効になっているからです。


emaxからすべてを実行しようとします。 作成する必要があります
実験ファイルのディレクトリ。 そしてファイル。

ホームディレクトリにいるとします(つまり、
私たちは何らかのUNIX上にいます)。 プッシュ:

 | キー| 実行されたアクション|
 | ----------------------- + ------------------------- ---------------------- |
 |  Cx Cf RET | ホームディレクトリでdiredモードに移動します|
 |  +ディレクトリ名RET | 新しいディレクトリを作成|
 |  RET | 作成されたディレクトリに移動します|
 |  Cx Cf myfile.el RET | ファイルmyfile.elを開きます|


最も一般的な概念と作業方法


Lispでは、変数と関数という2つの概念を知る必要があります。 実は
変数は、返される関数と見なすこともできます
この変数に割り当てられた値。 変数と関数には
名前は一連の文字です。 プログラムで名前を囲む場合
かっこ、関数として実行されます。 その名前が
変数の場合、lispインタープリターはエラーをスローします。 Lispでは、名前は受け入れられます
名前の論理部分をハイフンで区切って記述します。 例えば
マイクール機能

次に、関数の呼び出し方法について説明します。 たとえば、Cとは異なり、
関数は次のように呼び出されます。

 (関数名arg1 arg2 arg3 ......)


つまり 関数呼び出しは括弧で囲まれています。 括弧内の最初の名前は名前です
関数、他の名前は引数です。 Cのように、
引数は、値を返す式の場合があります。たとえば
他の関数の呼び出し、たとえば:

 (関数名arg1(関数名)arg3 ......)


これはすべて良いですが、それをどのように扱うのですか? Emacsはこれで動作します
非常に簡単でシンプルです。 2を追加することから始めましょう
2. myfile.elファイルに次の式を記述します。

 (+ 2 2)


それを解読してみましょう。 「+」記号は機能です。
彼女の2つの議論を合計します。 次の2つのデュースは引数です
機能。 実行してみましょう。 これを行うには、emacsカーソルを右に置きます
式の右角かっこ(閉じる)を押し、Cx eを押します。 すべての場合
正しく行われると、ミニバッファーに「4」という数字が表示されます。 やったー
表現を満たしました。


完全なプログラミングの場合、使用するのが習慣です
変数。 やってみよう。 最初に割り当てる必要があります
変数値。


 ( 'myvar-variable 4を設定)


ここには何がありますか?


 | 名前| コメント|
 | ---------------- + -------------------------------- ----------------------------------- |
 | セット| 最初の引数を2番目の値に設定する関数|
 |  myvar-variable | 値を割り当てる変数の名前|
 |  4 | 割り当てられた値|
 |  '| 名前が値を返すべきでないことを示すアイコン|


隠し場所(単一引用符)に注意してください。名前は付けられません。
値を返す変数。 それがなければ、インタプリタのLispは
間違いを訴えます。 割り当て関数には別のオプションがあります。
引用符で変数名をエスケープする必要はありません、setq。 このために
レコード機能は次のようになります。


 (setq myvar-variable 4)


さて、もう一つの便利なトリック。 値を表示する方法
変数に割り当てられましたか? これを行うには、(直接
プログラムテキスト)変数名の右側にカーソルを置き、Cx eを押します。 で
ミニバッファは変数の値を表示します。 ご注意ください
あなたが持っている変数でこれをしようとすると
引用符をエスケープ、値は表示されません、名前をエスケープします
値は返されません。

文字列値を変数に割り当てます。 とても簡単です。 ひも
引用符で囲みます。

setq myvar-str-variable "My string"

ミニバッファへのメッセージ出力。

 (メッセージ「私のメッセージ」)


バッファーの現在のカーソル位置に行を挿入します。

 (「My string」を挿入)


一連の機能の実行:

予言
setq my-var "Hello"
メッセージ my-var

独自の関数を定義する


独自の関数を定義することほど簡単なことはありません。 構文
定義は次のとおりです。

defun myf-test a b ...
「ドキュメント行」

...


この定義では:

 | 何| コメント|
 | ----------------------- + ------------------------- ----------------------- |
 |  defun | 関数定義のキーワード|
 |  myf-test | 関数名|
 |  (ab)| パラメータリスト|
 |  「ドキュメントライン」| ドキュメント行。  Ch myf-testで発行されます|
 |  (式)| 身体機能で実行される式|


ご注意 この関数は、最後の式によって返された値を返します。

例として独自の関数を定義してみましょう。

予言
setq my-var "Hello"
メッセージ my-var

検証:

   (myf-test 1 2)


仕事の受け取り:面倒が少なくなったこと、機能をデバッグするときは、次の方法を使用すると便利です。


予言
defun myf-test a b
「最初の引数を2番目に追加します。結果を返します」
+ a b ))
myf-test 1 2


覚えているなら、「progn」ステートメントはリストを実行します
彼の体の表情。 この場合、最初に定義が実行されます
関数、テストケースが実行のために呼び出されます。 何かを変える
定義では、すぐに確認できます。

しかし、この方法で定義された関数が1つあります。
Mxコマンド「関数名」を呼び出して実行できます。 のために
これを行うには、関数定義が必要です
「インタラクティブ」ステートメントを挿入します。

defun myf- test- 1
「最初の引数を2番目に追加します。結果を返します」
インタラクティブ
メッセージ "こんにちは" ))

この定義を完了し、Mx myf-test-1 RETコマンドを発行することにより、
ミニバッファーでHelloという単語を取得します

注:関数と変数の名前については、選択することをお勧めします
そして、emacs globalのように、一意のプレフィックスを使用します
名前空間。 私はeik-、名、ミドルネーム、ラストネームを使用します。 あなたに
あなた自身の何かを発明する必要があります。

おわりに


私の意見では、Lispからの説明された情報で十分です。
emacsカスタマイズの実験。 主にカスタマイズと
要約すると、emacs変数への値の割り当てと書き込み
独自の機能。

文学


  1. Ubuntuでは、emacs22パッケージに付属しています
    Elispリファレンスガイド。 Mx info、Cs elisp
  2. グーグル
  3. Emacs Lispプログラミング

Source: https://habr.com/ru/post/J61992/


All Articles