1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-04 02:51:31 -08:00
emacs/doc/lispref
Stefan Monnier 533c659b6c Bindat: new macro-expansion based data layout language
Thorough redesign of the Bindat system, which makes it possible
to define new Bindat type forms, define recursive types, control
the values returned when unpacking, freely mix arbitrary computations
with type definitions, as well as support for arbitrary sized
integers.

This also reverts the recent addition of the `bindat-spec` macro and
the support for 64bit integers in the old Bindat language since that
is now considered obsolete anyway.

* doc/lispref/processes.texi (Bindat Types): Rename from `Bindat Spec`
and rewrite for the new sublanguage.
(Bindat Functions): Adjust to the new terminology.
(Bindat Computed Types): New node.

* lisp/emacs-lisp/bindat.el (bindat--type): New type.
(bindat--unpack-u64, bindat--unpack-u64r): Delete functions.
(bindat--unpack-item, bindat--pack-item, bindat--fixed-length-alist):
Revert addition of support for 64bit integers.
(bindat--unpack-group, bindat--length-group, bindat--pack-group):
Handle the new `bindat--type` values.
(bindat-spec): Revert addition of this macro.
(bindat--unpack-uint, bindat--unpack-uintr, bindat--pack-uint)
(bindat--pack-uintr): New functions.
(bindat-type, bindat-defmacro, bindat--pcase): New macros.
(bindat-type): New Edebug elem.
(bindat--type): New generic function.
(bindat--primitives): New constant.
(bindat--macroenv, bindat--op): New vars.
(bindat--make-docstring, bindat--fun, bindat--makefun, bindat--toplevel):
New functions.

* test/lisp/emacs-lisp/bindat-tests.el: Use `bindat-type`.
(ip): New Bindat type.
(header-bindat-spec, data-bindat-spec, packet-bindat-spec): Adjust to
new `bindat-type` macro.
(bindat-test-unpack): Simplify now that the order of fields is preserved.
(bindat-test--int-websocket-type, bindat-test--LEB128): New consts.
(bindat-test--pack-val, bindat-test--sint, bindat-test--recursive):
New tests.
2021-03-05 19:56:31 -05:00
..
abbrevs.texi Update copyright year to 2021 2021-01-01 01:13:56 -08:00
anti.texi Update copyright year to 2021 2021-01-01 01:13:56 -08:00
back.texi Update copyright year to 2021 2021-01-01 01:13:56 -08:00
backups.texi Update copyright year to 2021 2021-01-01 01:13:56 -08:00
book-spine.texi
buffers.texi Update copyright year to 2021 2021-01-01 01:13:56 -08:00
ChangeLog.1 Update copyright year to 2021 2021-01-01 01:13:56 -08:00
commands.texi Add a new command for mode-specific commands 2021-02-20 15:12:45 +01:00
compile.texi Update copyright year to 2021 2021-01-01 01:13:56 -08:00
control.texi * lisp/emacs-lisp/pcase.el: Bind all the vars in or patterns 2021-03-01 23:57:56 -05:00
customize.texi Decouple require-theme from load-theme 2021-03-04 15:40:35 +00:00
debugging.texi Pretty-print keys without <> around modifiers (bug#45536) 2021-01-05 11:28:58 +01:00
display.texi Fix typos 2021-02-18 16:50:55 +01:00
doclicense.texi
edebug.texi Fix two syntax errors in Specification List 2021-02-15 03:44:15 +01:00
elisp.texi Bindat: new macro-expansion based data layout language 2021-03-05 19:56:31 -05:00
errors.texi Add a new variable `inhibit-interaction' 2021-01-12 15:12:38 +01:00
eval.texi Update copyright year to 2021 2021-01-01 01:13:56 -08:00
files.texi Update copyright year to 2021 2021-01-01 01:13:56 -08:00
frames.texi Permit zero value for 'child-frame-border-width' parameter (Bug#46184) 2021-02-06 18:22:29 +01:00
functions.texi Improve the documentation of :extra in cl-defmethod 2021-03-05 14:27:08 +01:00
gpl.texi
hash.texi Clarify that #s(hash-table ...) doesn't always create a new hash table 2021-02-07 14:47:09 +01:00
help.texi Pretty-print keys without <> around modifiers (bug#45536) 2021-01-05 11:28:58 +01:00
hooks.texi Update copyright year to 2021 2021-01-01 01:13:56 -08:00
index.texi
internals.texi Update copyright year to 2021 2021-01-01 01:13:56 -08:00
intro.texi Update copyright year to 2021 2021-01-01 01:13:56 -08:00
keymaps.texi Remove the 'M-o' ('facemap-keymap') binding experimentally 2021-02-10 19:38:18 +01:00
lay-flat.texi Update copyright year to 2021 2021-01-01 01:13:56 -08:00
lists.texi Clarify that #s(hash-table ...) doesn't always create a new hash table 2021-02-07 14:47:09 +01:00
loading.texi Extend the syntax of `interactive' to list applicable modes 2021-02-14 13:21:24 +01:00
macros.texi Update copyright year to 2021 2021-01-01 01:13:56 -08:00
Makefile.in Update copyright year to 2021 2021-01-01 01:13:56 -08:00
maps.texi Remove the 'M-o' ('facemap-keymap') binding experimentally 2021-02-10 19:38:18 +01:00
markers.texi Merge from origin/emacs-27 2021-02-19 08:36:55 -08:00
minibuf.texi Combine and reconcile two conflicting entries in NEWS on goto-line-history 2021-02-28 21:15:34 +00:00
modes.texi Add a new variable `global-minor-modes' 2021-02-15 13:08:21 +01:00
nonascii.texi Update copyright year to 2021 2021-01-01 01:13:56 -08:00
numbers.texi * src/fns.c (Frandom): Handle bignum limits 2021-03-05 12:09:50 -05:00
objects.texi Update copyright year to 2021 2021-01-01 01:13:56 -08:00
os.texi Update copyright year to 2021 2021-01-01 01:13:56 -08:00
package.texi Update copyright year to 2021 2021-01-01 01:13:56 -08:00
positions.texi Move line-number-at-pos to C 2021-02-07 16:28:34 +01:00
processes.texi Bindat: new macro-expansion based data layout language 2021-03-05 19:56:31 -05:00
README Update copyright year to 2021 2021-01-01 01:13:56 -08:00
records.texi Update copyright year to 2021 2021-01-01 01:13:56 -08:00
searching.texi Update copyright year to 2021 2021-01-01 01:13:56 -08:00
sequences.texi Merge from origin/emacs-27 2021-02-19 08:36:55 -08:00
spellfile Update lispref spellfile 2019-06-04 08:34:16 -07:00
streams.texi Update copyright year to 2021 2021-01-01 01:13:56 -08:00
strings.texi Merge from origin/emacs-27 2021-01-04 07:50:25 -08:00
symbols.texi Update copyright year to 2021 2021-01-01 01:13:56 -08:00
syntax.texi Merge from origin/emacs-27 2021-02-06 08:10:38 -08:00
text.texi Allow any JSON value at the top level (Bug#42994). 2021-02-13 14:37:19 +01:00
threads.texi Update copyright year to 2021 2021-01-01 01:13:56 -08:00
tips.texi Merge from origin/emacs-27 2021-01-01 01:28:16 -08:00
two-volume-cross-refs.txt Update copyright year to 2021 2021-01-01 01:13:56 -08:00
two-volume.make Update copyright year to 2021 2021-01-01 01:13:56 -08:00
variables.texi Update copyright year to 2021 2021-01-01 01:13:56 -08:00
windows.texi Fix typos 2021-02-18 16:50:55 +01:00

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Copyright (C) 2001-2021 Free Software Foundation, Inc.  -*- outline -*-
See the end of the file for license conditions.


README for the Emacs Lisp Reference Manual.

* This directory contains the texinfo source files for the Emacs Lisp
Reference Manual.

* Report bugs in the Lisp Manual (or in Emacs) using M-x report-emacs-bug.
To ask questions, use the help-gnu-emacs mailing list.

* The Emacs Lisp Reference Manual is quite large.  It totals around
1100 pages in smallbook format; the info files total around 3.0 megabytes.

* You can format this manual for Info, for printing hardcopy using TeX,
or for HTML.

* You can buy nicely printed copies from the Free Software Foundation.
Buying a manual from the Free Software Foundation helps support our GNU
development work.  See <https://shop.fsf.org/>.
(At time of writing, this manual is out of print.)

* The master file for formatting this manual for Tex is called 'elisp.texi'.
It contains @include commands to include all the chapters that make up
the manual.

* This distribution contains a Makefile that you can use with GNU Make.

** To make an Info file, you need to install Texinfo, then run 'make info'.

** Use 'make elisp.pdf' or 'make elisp.html' to create PDF or HTML versions.


This file is part of GNU Emacs.

GNU Emacs is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.