Pertanyaan yang diberi tag «elisp-macros»

2
“And” vs “when” untuk conditional
Ini adalah tindak lanjut dari komentar pada jawaban ini . Bit kode berikut tampaknya setara: (and a b) (when a b) Tentu saja andmemungkinkan Anda menempatkan lebih banyak kondisi: (and a b c d)berarti(when (and a b c) d) Saya cenderung menggunakan whenhanya untuk mengekspresikan percabangan. Apakah ada perbedaan nyata? …


1
Makro dengan defcustom mengarah ke kesalahan "Nilai simbol sebagai variabel tidak sah" ketika byte-dikompilasi
Dalam dua paket saya, saya memiliki makro di mana tubuh tergantung pada variabel yang didefinisikan dalam defcustomformulir. Saat menginstal paket dari Melpa, byte-kompilasi berakhir dengan: Kesalahan: Nilai simbol sebagai variabel tidak valid: variabel-saya-defcustom Kemudian, kompilasi byte secara manual file dengan membukanya di buffer berfungsi. Saya mencoba dengan autoloadcookie tetapi masih …

3
Kapan menggunakan makro atau tidak menggunakan [ditutup]
Ditutup . Pertanyaan ini perlu lebih fokus . Saat ini tidak menerima jawaban. Ingin meningkatkan pertanyaan ini? Perbarui pertanyaan sehingga berfokus pada satu masalah hanya dengan mengedit posting ini . Ditutup 3 tahun yang lalu . Kapan saya harus menggunakan makro dalam program saya atau tidak? Pertanyaan ini terinspirasi oleh …

2
Bagaimana cara menggunakan selagi tidak ada input?
Dari docstring: Jalankan BODY hanya selama tidak ada input yang tertunda. Jika input tiba, itu mengakhiri eksekusi BODY, dan while-no-inputmengembalikan t. Berhenti membuatnya kembali nol. Jika BODY selesai, while-no-inputkembalikan nilai apa pun yang diproduksi BODY. Jika saya mengerti dengan benar, makro ini memungkinkan saya untuk (mencoba) melakukan perhitungan yang berat …

3
Bagaimana saya bisa membuat banyak pembelaan dengan mengulang daftar?
Saya sedang berupaya mengoptimalkan konfigurasi emacs saya di mana saya dapat secara dinamis membuat fungsi interaktif untuk semua tema yang saya miliki dalam daftar. Di bawah ini adalah versi sederhana dari konstruk yang saya coba buat. ;; List containing names of functions that I want to create (setq my/defun-list '(zz-abc …

1
Bagaimana penentuan variabel variabel untuk makro?
Ambil contoh makro berikut, didefinisikan dalam macro.el. (defmacro some-macro (&rest body) `(let ((some-variable 1)) ,@body)) Dan mengambil fungsi berikut, didefinisikan dalam file yang berbeda , function.el. (defun some-function () (some-macro (do-something))) Kapan function.elbyte-dikompilasi, apakah some-variableakan terikat di bawah lexical atau dynamic binding? Saya mengerti ini tergantung pada apakah file digunakan …

1
eval-when-compile: defsubst vs defmacro vs define-inline
Saya mendefinisikan beberapa fungsi sederhana di init.el, misalnya my-cache-file: (defconst my-cache-directory (expand-file-name ".cache" user-emacs-directory)) ; ~/.emacs/.cache (defun my-cache-file (x) (expand-file-name x my-cache-directory)) ; ~/.emacs/.cache/x (setq savehist-file (my-cache-file "savehist")) (setq backup-directory-alist `(("." . ,(my-cache-file "backups/")))) Ini sepertinya kasus penggunaan yang bagus untuk defsubst: (defsubst my-cache-file (x) ...) Kemudian saya mulai belajar …

1
Memahami simbol yang tidak diinginkan dan ekspansi makro?
Saya ingin menunjukkan kurangnya pengetahuan saya dengan contoh. Menggunakan dua definisi makro berikut, (defmacro for (var from init to final do &rest body) "Execute a simple for loop: (for i from 1 to 10 do (print i))." (let ((tempvar 'max)) `(let ((,var ,init) (,tempvar ,final)) (while (<= ,var ,tempvar) ,@body …

1
Muatan otomatis dan variabel
Saya mengerti apa fungsi autoload untuk fungsi (mendaftarkan file untuk memuat ketika fungsi tersebut dipanggil atau string dokumentasinya diambil). Namun, tidak jelas bagaimana menggunakan fasilitas autoload dalam hubungannya dengan variabel dan makro. Saya punya dua pertanyaan: Apa yang terjadi ketika paket memiliki parameter, diimplementasikan sebagai variabel yang dapat ditetapkan pengguna, …
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.