タグ付けされた質問 「elisp」

他の言語、特に他のLisp方言と比較した、言語としてのEmacs Lispに関する質問。つまり、*言語*自体についての質問です。* Emacs Lispの*使用*についての質問には*使用しないでください*。Emacs Lispは、Emacsエディターが組み込まれているスクリプトおよびプログラミング言語です。

4
custom.elの代わりにsetqを使用して変数を設定する利点は?
多くの人(拡張機能の作成者など)が以下の設定例を提供しているのを見ますsetq: (setq foo 'bar) これらのパラメータはしばしばで定義されdefcustom、を通じてカスタマイズできるようにしますcustom.el。 通常、custom.elそれらを設定するために使用します。setq代わりに使用する利点はありますか、または2つの方法はほぼ同等ですか?

6
org-modeを使用して、.emacsまたはその他の.el構成ファイルを構成できますか?
私の.emacs設定ファイルはどんどん大きくなって、私は見出し、小見出しを追加し、非表示にすることができるというか、私はEmacsので行うことができますようにそれらを表示することで、より良い概要と構造を取得したいのですがorg-mode。 バッファでorg-modeもアクティブに.emacsできること、見出しを追加して折りたたむことができることに気付きました。しかし、org-mode見出し(つまり、1つ以上のアスタリスクで始まる行)を追加しても、Emacs / AquamacsはドキュメントからElispコードをロードできますか? これらすべてを1つのファイルに.*org含めることはできますか、それとも1つのファイルを用意してからElispコードを別のファイルに定期的にエクスポートする必要がありますか?

3
キーボードマクロをLisp関数として保存する方法は?
非常に頻繁に、複数のキーストロークを必要とする一連の手順を実行する必要があります。同じセッションの場合、これらのステップはキーボードマクロに記録できます。 例として、頻繁に実行される検索/置換操作をキーボードマクロとして保存します。しかし、emacsを終了すると、そのマクロは失われます。 頻繁に使用するキーボードマクロをLisp関数として保存するにはどうすればよいですか? 簡単にするために、関数として「abc」を「def」に置き換えるアクションを保存して、emacsセッション全体で再利用できるようにします。

2
elispに名前空間がないのはなぜですか?
Q: elispに名前空間がないのはなぜですか?どのようにして取得できますか? Elispには、グローバル以外の名前空間はありません。これにより、すべてのグローバル関数、変数、および定数に一意のプレフィックスを付けるというコーディング規則が生まれました。 迷惑な要因は別として、1)増え続けるすばらしいライブラリとパッケージ、2)プレフィックスの規則を尊重しないレガシー関数と変数の継続的な存在、または使用できる適切なプレフィックスオプションが実際にはないほど十分に特異です。また、(からclへの移行のようにcl-lib)古いコードを合理化しようとする定期的な試行は、重要な作業です。(クリーンアップはうれしいですが、のように入力するたびに涙を流しcl-findます)。 数十年使用してもelispにまだ名前空間がないのかどうかを調べてみましたが、適度な収穫には少し驚いていました。名前空間上のwikiページはかなり短いです。 Nic Ferrierはこの問題を少し長めに処理しており、emacs-develにもかなり最近のスレッドがあります。マクロを使用して名前空間を実装する可能性を議論する2010年の古いStack Overflowスレッドがあります。マクロアプローチの別の例はここで見つけることができます。少なくともいくつかの実装があります(こことここ、後者の説明はこちら)そこにありますが、彼らはここ数年あまり活動していませんし、私はそれらを使用するライブラリに出くわしていません。 名前空間の追加が簡単であれば、既に行われていると思います。そう: elispに名前空間を追加するための技術的な障壁は何ですか? 名前空間を追加すると、既存のコードの多くが壊れますか? この機能は、elisp(インタープリター自体の変更)に対して有機的である必要がありますか、それとも実際にマクロを介して構築できますか?
40 elisp 

9
Emacs Lispの学習を開始するにはどうすればよいですか?
バックグラウンド: 私はほとんどがviユーザーで、Emacsに移行しています。 基本を過ぎて、今度はR変換も行う予定のCおよびPythonでコードを書くために使用します。 私は大学院にいた20年以上前に(共通)LISPを書きましたが、今はひどく失望しています(こんにちは世界を書くことができますが、それだけです)。 質問: Emacs LISP環境を学び、Emacsのハッキングを始めるために、私の立場の人に何をお勧めしますか。 本、ブログ、読むべきリソース、やるべきエクササイズはありますか?

5
リストの要素を置き換える方法は?
私はこれをデフォルトで持っていますauto-mode-alist: ("\\.js\\'" . javascript-mode) (でもemacs -Q)。の代わりにしたいjs2-modeですjavascript-mode。もちろん、使用assq-delete-allしてからadd-to-listもう一度使用することもできますが、より良い方法がないかどうか疑問に思っています。 編集:明示的にカスタマイズを使用したくありませんinit.el。自分で作成することを好みます。

3
レキシカルスコープで「let」が高速になるのはなぜですか?
dolistマクロのソースコードを読んでいると、次のコメントに出会いました。 ;; これは信頼できるテストではありませんが、両方のセマンティクスが許容されるため、重要ではありません。一方は動的スコープでわずかに速く、もう一方はレキシカルスコープでわずかに高速です(そしてより明確なセマンティクスを持ちます)。 これはこのスニペットを参照しています(わかりやすくするために簡略化しています)。 (if lexical-binding (let ((temp list)) (while temp (let ((it (car temp))) ;; Body goes here (setq temp (cdr temp))))) (let ((temp list) it) (while temp (setq it (car temp)) ;; Body goes here (setq temp (cdr temp))))) letループ内で使用されているフォームを見て驚いた。以前setqは、同じ外部変数で繰り返し使用するのに比べて遅いと考えていました(上記の2番目のケースで行われます)。 すぐ上のコメントについては、それが代替よりも高速であると明示的に言っている(レキシカルバインディングを使用している)場合を除いて、私はそれを何もないとして却下したでしょう。だから...それはなぜですか? 上記のコードは、字句バインディングと動的バインディングのパフォーマンスが異なるのはなぜですか? let字句を使用するとフォームが高速になるのはなぜですか?

3
変数名の前に単一引用符を使用するタイミングまたは使用しないタイミングを知る方法は?
私は以下を持っています: (setq some-variable "less") でboundpなく単一引用符を使用する必要がある理由がわかりませんbound-and-true-p。 例1: (when (boundp 'some-variable) (message "some-variable is %s" some-variable)) 結果: 「変数が少ない」 例2a: (when (bound-and-true-p some-variable) ;; Note that using single-quote causes error (message "some-variable is %s" some-variable)) 結果: 「変数が少ない」 例2b: (when (bound-and-true-p 'some-variable) ;; Note that using single-quote causes error (message "some-variable is %s" some-variable)) ...
31 elisp  quote 

4
ラムダ式をシャープクォートするのはいつですか?
Q:今までならば、それはに便利ですときに、シャープ引用lambdaし、これまでならばとき、私たちがしなければならないではないシャープ引用lambda? 人々lambdaは3つの方法でsを使用します。 平野: (lambda (x) x) 引用: '(lambda (x) x) シャープ引用符: #'(lambda (x) x) このSOスレッドが三種類を説明し、このSOスレッドはなぜ引用符(NB:しないように説明してシャープ引用符)lambdaだ、とこのSOスレッドはまた、引用符とシャープクォート間の区別を説明します。 ここで、匿名関数の手動ノードlambdaとlambdasが自己引用符であることに注意するためのdocstring : フォームの呼び出し(lambda ARGS DOCSTRING INTERACTIVE BODY)は自己引用です。ラムダ式を評価した結果は式そのものです。ラムダ式は関数として扱われます... そのため、(lambda (x) x)と#'(lambda (x) x)は同等であるように見えますが、そうで'(lambda (x) x)はありません(最も重要なことは、バイトコンパイル時)。 a を引用することはめったにないように見えますlambdaが、シャープ引用符を使用する必要があるかどうかは不明です。 シャープクォートはlambda単なるスタイル上の選択ですか、それともシャープクォートが実際に役立つ状況はありますか? aをクォートクォートしてはいけないlambda、つまりそうするとコードの意味が変わるような状況はありますか?
30 elisp  functions 


3
requireではなくautoloadをいつ使用する必要がありますか?
私が理解していることから、require個々の機能をロードすることもできますが、コードの大きなチャンク(モジュールのようなもの)をロードするために使用されます。 反対側の自動ロードでは、関数のみを登録し、ロードを実行時間まで延期します。 私は最近、排他的使用を提唱する記事を読みましたautoload。 するautoloadよりも良いrequireですか?これらのそれぞれの典型的な使用例は何ですか?

1
nadviceを使用するにはどうすればよいですか?
私の設定にはアドバイスがたくさんあり、新しい光沢のあるミニマリストのnadvice.elパッケージについて聞いています。 私はマニュアルを検索し、ソースを読みましたが、私は率直に認めます。 ここの誰かがガイドを教えてくれたり、古いスタイルのアドバイスを移植する方法を教えてもらえますか?

2
exec-pathおよび$ PATH
オンラインでEmacsのデフォルトパスにパスを追加する例を見ました: (add-to-list 'exec-path "/usr/local/bin/") 私はElispが初めてで、上記の声明が何をするのか理解していますが、いくつか質問があります。 ではどのような順序 Emacsは実行パスを検索しますか?例えば、$PATH(env。variable)の値をまったく考慮しますか(もしそうなら、その前後にexec-path?) このようなパスを複数追加するにはどうすればよいですか?それらを連結し続けることはできますか?例えば (add-to-list 'exec-path "PATH1", "PATH2") または私はすべきか: (add-to-list 'exec-path "PATH1:PATH2:PATH3") また、GitHubでこの興味深いパッケージexec-path-from-shellを見つけました。なぜこれのためのパッケージが必要なのですか? 動機 コマンドがシェルで機能するが、Emacsでは機能しないことを発見したことはありませんか? これは、GUIから起動されたEmacsインスタンスが環境変数のデフォルトセットを継承するOS Xで頻繁に発生します。 このライブラリは、重要な環境変数をユーザーのシェルからコピーすることでこの問題を解決します。目的の変数を出力するようシェルに要求し、Emacs環境にコピーすることで機能します。
28 elisp  path 

2
オプションのパラメーターのデフォルト
Emacs Lispには、オプションパラメータの非nilデフォルトの構文サポートがありません。これらのパラメーターを提供するための推奨イディオムは何ですか? 私の主張を明確にするために、これを行う過度に明示的な方法を以下に示します。 (defun command (a &optional supplied-b) (let ((b (or supplied-b default-b))) (command-body a b))) どちらかといえば、推奨されるスタイルは何ですか?
26 elisp 

3
プッシュとリストへの追加の違いは何ですか?
インストール手順のさまざまなパッケージがプッシュまたはリストへの追加のいずれかを使用していることがわかりました(たとえば、ディレクトリをload-pathに追加するなど)。違いは何で、それぞれのユースケースはどうなるのでしょうか。
26 elisp 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.