target.
All specific projects in @ede{} derive subclasses of the @ede{}
-superclasses. In this way, specific behaviors such as how a project
-is saved, or how a target is compiled can be customized by a project
-author in detail. @ede{} communicates to these project objects via an
-API using methods. The commands you use in @ede{} mode are high-level
+superclasses. In this way, specific behaviors such as how a project is
+saved, or how a target is compiled can be customized by a project author
+in detail. @ede{} communicates to these project objects via an API
+using methods. The commands you use in @ede{} mode are high-level
functional wrappers over these methods. @xref{Top,,, eieio, EIEIO
-manual} for details on using @eieio{} to extending classes, and
-writing methods.
+manual}, for details on using @eieio{} to extending classes, and writing
+methods.
If you intend to extend @ede{}, it is most likely that a new target type is
needed in one of the existing project types. The rest of this chapter
To learn about using Flymake, @pxref{Using Flymake}.
-When the Emacs LSP support mode Eglot is enabled, Flymake will use
-that as an additional back-end. @xref{Eglot Features,,, eglot, Eglot:
-The Emacs LSP Client} Flymake is also designed to be easily extended
-to support new backends via an Elisp interface. @xref{Extending
-Flymake}.
+When the Emacs LSP support mode Eglot is enabled, Flymake will use that
+as an additional back-end. @xref{Eglot Features,,, eglot, Eglot: The
+Emacs LSP Client}. Flymake is also designed to be easily extended to
+support new backends via an Elisp interface. @xref{Extending Flymake}.
@ifnottex
@insertcopying
When the Emacs LSP support mode Eglot is enabled, Flymake will use
that as an additional back-end automatically. @xref{Eglot Features,,,
-eglot, Eglot: The Emacs LSP Client}
+eglot, Eglot: The Emacs LSP Client}.
@menu
* Starting Flymake::
(if (consp dir) dir (list dir)))))
(updating (and (file-exists-p output-file) (not generate-full)))
(defs nil))
-
;; Allow the excluded files to be relative.
(setq excluded-files
(mapcar (lambda (file) (expand-file-name file dir))
;; Collect all the autoload data.
(let ((progress (make-progress-reporter
(byte-compile-info
- (concat "Scraping files for loaddefs"))
+ (format "Scraping %s files for loaddefs"
+ (length files)))
0 (length files) nil 10))
(output-time
(file-attribute-modification-time (file-attributes output-file)))
specpdl_ptr = specpdl_ref_to_ptr (count);
if (NILP (nosort))
- list = CALLN (Fsort, Fnreverse (list),
- attrs ? Qfile_attributes_lessp : Qstring_lessp);
+ {
+ Lisp_Object ordered = Fnreverse (list);
+ list = CALLN (Fsort, ordered,
+ attrs ? Qfile_attributes_lessp : Qstring_lessp);
+ }
(void) directory_volatile;
return list;
(Lisp_Object args, Lisp_Object body, Lisp_Object env,
Lisp_Object docstring, Lisp_Object iform)
{
+ Lisp_Object ifcdr, value, slots[6];
+
CHECK_CONS (body); /* Make sure it's not confused with byte-code! */
CHECK_LIST (args);
CHECK_LIST (iform);
- Lisp_Object ifcdr = Fcdr (iform);
- Lisp_Object slots[] = { args, body, env, Qnil, docstring,
- NILP (Fcdr (ifcdr))
- ? Fcar (ifcdr)
- : CALLN (Fvector, XCAR (ifcdr), XCDR (ifcdr)) };
+ ifcdr = CDR (iform);
+ if (NILP (CDR (ifcdr)))
+ value = CAR (ifcdr);
+ else
+ value = CALLN (Fvector, XCAR (ifcdr), XCDR (ifcdr));
+ slots[0] = args;
+ slots[1] = body;
+ slots[2] = env;
+ slots[3] = Qnil;
+ slots[4] = docstring;
+ slots[5] = value;
/* Adjusting the size is indispensable since, as for byte-code objects,
we distinguish interactive functions by the presence or absence of the
iform slot. */
else if (!NILP (Fboundp (new_alias))
&& !EQ (find_symbol_value (new_alias),
find_symbol_value (base_variable)))
- call2 (Qdisplay_warning,
- list3 (Qdefvaralias, Qlosing_value, new_alias),
- CALLN (Fformat_message,
- build_string
- ("Overwriting value of `%s' by aliasing to `%s'"),
- new_alias, base_variable));
+ {
+ Lisp_Object message, formatted;
+
+ message = build_string ("Overwriting value of `%s' by aliasing"
+ " to `%s'");
+ formatted = CALLN (Fformat_message, message,
+ new_alias, base_variable);
+ call2 (Qdisplay_warning,
+ list3 (Qdefvaralias, Qlosing_value, new_alias),
+ formatted);
+ }
{
union specbinding *p;
FOR_EACH_TAIL (tail)
{
Lisp_Object car = XCAR (tail);
- if (CONSP (car)
- && (NILP (testfn)
- ? (EQ (XCAR (car), key) || !NILP (Fequal
- (XCAR (car), key)))
- : !NILP (call2 (testfn, XCAR (car), key))))
+ if (!CONSP (car))
+ continue;
+ if ((NILP (testfn)
+ ? (EQ (XCAR (car), key) || !NILP (Fequal
+ (XCAR (car), key)))
+ : !NILP (call2 (testfn, XCAR (car), key))))
return car;
}
CHECK_LIST_END (tail, alist);