Als «byte-compilation» getaggte Fragen

ist für den Emacs Lisp-Compiler in Emacs, der Lisp-Code zu Byte-Code kompiliert, um die Ausführung im Vergleich zu nicht kompiliertem Lisp-Code zu beschleunigen. Bytekompilierter Code wird vom Bytecode-Interpreter gelesen.

4
Kann ich veraltete bytekompilierte Elisp-Dateien vermeiden?
Wenn ich Emacs starte, erhalte ich gelegentlich eine Nachricht wie. Quelldatei `/home/USER/.emacs.d/elpa/....el 'neuer als bytegekompilierte Datei Außerdem bearbeite ich manchmal ein Paket, das ich entwickle, und vergesse, es erneut zu kompilieren. Wenn ich versuche, die neue Datei zu laden, brauche ich eine Weile, um festzustellen, dass Emacs die alte kompilierte …

2
Kann eine Funktion oder ein Makro Byte-Compiler-Warnungen angeben?
Ich schreibe eine Funktion, die im Prinzip eine beliebige Anzahl von Argumenten akzeptiert. In der Praxis sollte jedoch immer nur eine gerade Anzahl von Argumenten übergeben werden, und ansonsten werden unerwünschte Ergebnisse erzielt. Hier ist ein Dummy-Beispiel für den Kontext: (defun my-caller (&rest args) (while args (call-other-function (pop args) (pop …

1
Warnung unterdrücken: Zuweisung an freie Variable (und andere)
Wie kann ich die Warnung "Zuweisung an freie Variable" beim Byte-Kompilieren einer Emacs-LISP-Datei unterdrücken? Eigentlich bin ich hauptsächlich daran interessiert, es für einen bestimmten Puffer zu unterdrücken, wenn ich Flycheck verwende, aber ich verstehe, dass dies nur an den Byte-Compiler weitergegeben wird. Es wäre auch gut, eine Liste aller Warnungen …

3
Defun inside let mit lexikalischer Bindung gibt die Warnung beim Kompilieren von Bytes aus, dass die Funktion nicht als definiert bekannt ist.
Ich möchte den Effekt einer statischen Variablen erhalten, indem ich defuninside of letmit lexikalischer Bindung verwende, um einen Abschluss zu erstellen. Beim Byte-Kompilieren der Datei erhalte ich jedoch eine Warnung. Mache ich etwas falsch oder gibt es eine Möglichkeit, diese Warnung zu unterdrücken? Ich habe ein MCVE erstellt: ;; -*- …


1
Makro mit defcustom führt beim Kompilieren von Bytes zum Fehler "Symbolwert als Variable ist ungültig"
In zwei meiner Pakete habe ich ein Makro, bei dem der Körper von einer in einem defcustomFormular definierten Variablen abhängt . Bei der Installation der Pakete von Melpa endet die Byte-Kompilierung mit: Fehler: Der Wert des Symbols als Variable ist ungültig: meine-definierte-Variable Dann funktioniert die manuelle Byte-Kompilierung der Datei durch …


1
Umgang mit „Warnung: Zuordnung zu freien Variablen“, wenn bestimmte Bibliotheken aufgrund ihres Designs fehlen können
Byte-Kompilierung meines Modus: (defun dict-setup-expansions () "Add `dict-mode' specific expansions." (set (make-local-variable 'er/try-expand-list) (list #'dict-mark-article))) warnt: Warning: assignment to free variable `er/try-expand-list' Dies ist eine normale Situation, da er/try-expand-listsie in externa definiert ist. Bibliothek expand-regionunter http://elpa.gnu.org Meine Modusregistererweiterung zur expand-regionBibliothek, aber es ist in Ordnung, meinen Modus ohne expand-regionModus auszuführen …


1
eval-when-compile: defsubst vs defmacro vs define-inline
Ich habe in init.el einige einfache Funktionen definiert, zum Beispiel 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/")))) Dies schien ein guter Anwendungsfall für defsubst: (defsubst my-cache-file (x) ...) Dann fing ich …




3
Byte-Kompilierung eines Pakets mit mehreren Dateien: „Es ist nicht bekannt, dass die Funktion definiert ist.“
Stellen Sie sich vor, ich habe die folgenden Dateien in meinem (lächerlichen) Paket: Datei test1.el: ;;; test1.el --- ;;; Code: (defvar test-var1) (defun test-fun1 (test) nil) (require 'test2 "./test2.el) (provide 'test1) ;;; test1.el ends here Datei test2.el: ;;; test2.el --- ;;; Code: (defun test-fun2 () (let ((test test-var1)) (test-fun1 test))) …
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.