| 1 | <a name='x-28EDITOR-HINTS-2ENAMED-READTABLES-3A-40NAMED-READTABLES-MANUAL-20MGL-PAX-3ASECTION-29'></a> | 
|---|
| 2 |  | 
|---|
| 3 | # Named Readtables Manual | 
|---|
| 4 |  | 
|---|
| 5 | ## Table of Contents | 
|---|
| 6 |  | 
|---|
| 7 | - [1 named-readtables ASDF System Details][9b5b] | 
|---|
| 8 | - [2 Introduction][6faf] | 
|---|
| 9 |     - [2.1 Links][8688] | 
|---|
| 10 |     - [2.2 Acknowledgements][059d] | 
|---|
| 11 | - [3 Overview][0bc2] | 
|---|
| 12 |     - [3.1 Notes on the API][e4cd] | 
|---|
| 13 |     - [3.2 Important API idiosyncrasies][62b8] | 
|---|
| 14 |     - [3.3 Preregistered Readtables][58c6] | 
|---|
| 15 |     - [3.4 Examples][cf94] | 
|---|
| 16 | - [4 Reference][373d] | 
|---|
| 17 |  | 
|---|
| 18 | ###### \[in package EDITOR-HINTS.NAMED-READTABLES\] | 
|---|
| 19 | <a name='x-28-22named-readtables-22-20ASDF-2FSYSTEM-3ASYSTEM-29'></a> | 
|---|
| 20 |  | 
|---|
| 21 | ## 1 named-readtables ASDF System Details | 
|---|
| 22 |  | 
|---|
| 23 | - Version: 0.9 | 
|---|
| 24 | - Description: Library that creates a namespace for named readtable | 
|---|
| 25 |   akin to the namespace of packages. | 
|---|
| 26 | - Licence: BSD, see LICENSE | 
|---|
| 27 | - Author: Tobias C. Rittweiler <trittweiler@common-lisp.net> | 
|---|
| 28 | - Maintainer: Gábor Melis | 
|---|
| 29 | - Mailto: [mega@retes.hu](mailto:mega@retes.hu) | 
|---|
| 30 |  | 
|---|
| 31 | <a name='x-28EDITOR-HINTS-2ENAMED-READTABLES-3A-40NAMED-READTABLES-INTRODUCTION-20MGL-PAX-3ASECTION-29'></a> | 
|---|
| 32 |  | 
|---|
| 33 | ## 2 Introduction | 
|---|
| 34 |  | 
|---|
| 35 | Named-Readtables is a library that provides a namespace for | 
|---|
| 36 | readtables akin to the already-existing namespace of packages. In | 
|---|
| 37 | particular: | 
|---|
| 38 |  | 
|---|
| 39 | - you can associate readtables with names, and retrieve | 
|---|
| 40 |   readtables by names; | 
|---|
| 41 |  | 
|---|
| 42 | - you can associate source files with readtable names, and be | 
|---|
| 43 |   sure that the right readtable is active when compiling/loading | 
|---|
| 44 |   the file; | 
|---|
| 45 |  | 
|---|
| 46 | - similiarly, your development environment now has a chance to | 
|---|
| 47 |   automatically determine what readtable should be active while | 
|---|
| 48 |   processing source forms on interactive commands. (E.g. think of | 
|---|
| 49 |   `C-c C-c` in Slime (yet to be done)) | 
|---|
| 50 |  | 
|---|
| 51 | It follows that Named-Readtables is a facility for using readtables in | 
|---|
| 52 | a localized way. | 
|---|
| 53 |  | 
|---|
| 54 | Additionally, it also attempts to become a facility for using | 
|---|
| 55 | readtables in a *modular* way. In particular: | 
|---|
| 56 |  | 
|---|
| 57 | - it provides a macro to specify the content of a readtable at a | 
|---|
| 58 |  glance; | 
|---|
| 59 |  | 
|---|
| 60 | - it makes it possible to use multiple inheritance between readtables. | 
|---|
| 61 |  | 
|---|
| 62 |  | 
|---|
| 63 | <a name='x-28EDITOR-HINTS-2ENAMED-READTABLES-3A-40NAMED-READTABLES-LINKS-20MGL-PAX-3ASECTION-29'></a> | 
|---|
| 64 |  | 
|---|
| 65 | ### 2.1 Links | 
|---|
| 66 |  | 
|---|
| 67 | Here is the [official repository][named-readtables-repo] and the | 
|---|
| 68 | [HTML documentation][named-readtables-doc] for the latest version. | 
|---|
| 69 |  | 
|---|
| 70 | [named-readtables-repo]: https://github.com/melisgl/named-readtables  | 
|---|
| 71 |  | 
|---|
| 72 | [named-readtables-doc]: http://melisgl.github.io/mgl-pax-world/named-readtables-manual.html  | 
|---|
| 73 |  | 
|---|
| 74 |  | 
|---|
| 75 | <a name='x-28EDITOR-HINTS-2ENAMED-READTABLES-3A-40NAMED-READTABLES-ACKNOWLEDGEMENTS-20MGL-PAX-3ASECTION-29'></a> | 
|---|
| 76 |  | 
|---|
| 77 | ### 2.2 Acknowledgements | 
|---|
| 78 |  | 
|---|
| 79 | Thanks to Robert Goldman for making me want to write this library. | 
|---|
| 80 |  | 
|---|
| 81 | Thanks to Stephen Compall, Ariel Badichi, David Lichteblau, Bart | 
|---|
| 82 | Botta, David Crawford, and Pascal Costanza for being early adopters, | 
|---|
| 83 | providing comments and bugfixes. | 
|---|
| 84 |  | 
|---|
| 85 | <a name='x-28EDITOR-HINTS-2ENAMED-READTABLES-3A-40NAMED-READTABLES-OVERVIEW-20MGL-PAX-3ASECTION-29'></a> | 
|---|
| 86 |  | 
|---|
| 87 | ## 3 Overview | 
|---|
| 88 |  | 
|---|
| 89 | <a name='x-28EDITOR-HINTS-2ENAMED-READTABLES-3A-40NAMED-READTABLES-API-NOTES-20MGL-PAX-3ASECTION-29'></a> | 
|---|
| 90 |  | 
|---|
| 91 | ### 3.1 Notes on the API | 
|---|
| 92 |  | 
|---|
| 93 | The API heavily imitates the API of packages. This has the nice | 
|---|
| 94 | property that any experienced Common Lisper will take it up without | 
|---|
| 95 | effort. | 
|---|
| 96 |  | 
|---|
| 97 |     DEFREADTABLE              -   DEFPACKAGE | 
|---|
| 98 |      | 
|---|
| 99 |     IN-READTABLE              -   IN-PACKAGE | 
|---|
| 100 |      | 
|---|
| 101 |     MERGE-READTABLES-INTO     -   USE-PACKAGE | 
|---|
| 102 |      | 
|---|
| 103 |     MAKE-READTABLE            -   MAKE-PACKAGE | 
|---|
| 104 |      | 
|---|
| 105 |     UNREGISTER-READTABLE      -   DELETE-PACKAGE | 
|---|
| 106 |      | 
|---|
| 107 |     RENAME-READTABLE          -   RENAME-PACKAGE | 
|---|
| 108 |      | 
|---|
| 109 |     FIND-READTABLE            -   FIND-PACKAGE | 
|---|
| 110 |      | 
|---|
| 111 |     READTABLE-NAME            -   PACKAGE-NAME | 
|---|
| 112 |      | 
|---|
| 113 |     LIST-ALL-NAMED-READTABLES -   LIST-ALL-PACKAGES | 
|---|
| 114 |  | 
|---|
| 115 |  | 
|---|
| 116 | <a name='x-28EDITOR-HINTS-2ENAMED-READTABLES-3A-40NAMED-READTABLES-API-IDIOSYNCRASIES-20MGL-PAX-3ASECTION-29'></a> | 
|---|
| 117 |  | 
|---|
| 118 | ### 3.2 Important API idiosyncrasies | 
|---|
| 119 |  | 
|---|
| 120 | There are three major differences between the API of Named-Readtables, | 
|---|
| 121 | and the API of packages. | 
|---|
| 122 |  | 
|---|
| 123 | 1. Readtable names are symbols not strings. | 
|---|
| 124 |  | 
|---|
| 125 |     Time has shown that the fact that packages are named by strings | 
|---|
| 126 |     causes severe headache because of the potential of package names | 
|---|
| 127 |     colliding with each other. | 
|---|
| 128 |  | 
|---|
| 129 |     Hence, readtables are named by symbols lest to make the | 
|---|
| 130 |     situation worse than it already is. Consequently, readtables | 
|---|
| 131 |     named `CL-ORACLE:SQL-SYNTAX` and `CL-MYSQL:SQL-SYNTAX` can | 
|---|
| 132 |     happily coexist next to each other. Or, taken to an extreme, | 
|---|
| 133 |     `SCHEME:SYNTAX` and `ELISP:SYNTAX`. | 
|---|
| 134 |  | 
|---|
| 135 |     If, for example to duly signify the importance of your cool | 
|---|
| 136 |     readtable hack, you really think it deserves a global name, you | 
|---|
| 137 |     can always resort to keywords. | 
|---|
| 138 |  | 
|---|
| 139 | 2. The inheritance is resolved statically, not dynamically. | 
|---|
| 140 |  | 
|---|
| 141 |     A package that uses another package will have access to all the | 
|---|
| 142 |     other package's exported symbols, even to those that will be | 
|---|
| 143 |     added after its definition. I.e. the inheritance is resolved at | 
|---|
| 144 |     run-time, that is dynamically. | 
|---|
| 145 |  | 
|---|
| 146 |     Unfortunately, we cannot do the same for readtables in a | 
|---|
| 147 |     portable manner. | 
|---|
| 148 |  | 
|---|
| 149 |     Therefore, we do not talk about "using" another readtable but | 
|---|
| 150 |     about "merging" the other readtable's definition into the | 
|---|
| 151 |     readtable we are going to define. I.e. the inheritance is | 
|---|
| 152 |     resolved once at definition time, that is statically. | 
|---|
| 153 |  | 
|---|
| 154 |     (Such merging can more or less be implemented portably albeit at | 
|---|
| 155 |     a certain cost. Most of the time, this cost manifests itself at | 
|---|
| 156 |     the time a readtable is defined, i.e. once at compile-time, so | 
|---|
| 157 |     it may not bother you. Nonetheless, we provide extra support for | 
|---|
| 158 |     Sbcl, ClozureCL, and AllegroCL at the moment. Patches for your | 
|---|
| 159 |     implementation of choice are welcome, of course.) | 
|---|
| 160 |  | 
|---|
| 161 | 3. [`DEFREADTABLE`][8b94] does not have compile-time effects. | 
|---|
| 162 |  | 
|---|
| 163 |     If you define a package via `DEFPACKAGE`, you can make that | 
|---|
| 164 |     package the currently active package for the subsequent | 
|---|
| 165 |     compilation of the same file via `IN-PACKAGE`. The same is, | 
|---|
| 166 |     however, not true for [`DEFREADTABLE`][8b94] and [`IN-READTABLE`][de3b] for the | 
|---|
| 167 |     following reason: | 
|---|
| 168 |  | 
|---|
| 169 |     It's unlikely that the need for special reader-macros arises for | 
|---|
| 170 |     a problem which can be solved in just one file. Most often, | 
|---|
| 171 |     you're going to define the reader macro functions, and set up | 
|---|
| 172 |     the corresponding readtable in an extra file. | 
|---|
| 173 |  | 
|---|
| 174 |     If [`DEFREADTABLE`][8b94] had compile-time effects, you'd have to wrap | 
|---|
| 175 |     each definition of a reader-macro function in an `EVAL-WHEN` to | 
|---|
| 176 |     make its definition available at compile-time. Because that's | 
|---|
| 177 |     simply not the common case, [`DEFREADTABLE`][8b94] does not have a | 
|---|
| 178 |     compile-time effect. | 
|---|
| 179 |  | 
|---|
| 180 |     If you want to use a readtable within the same file as its | 
|---|
| 181 |     definition, wrap the [`DEFREADTABLE`][8b94] and the reader-macro function | 
|---|
| 182 |     definitions in an explicit `EVAL-WHEN`. | 
|---|
| 183 |  | 
|---|
| 184 |  | 
|---|
| 185 | <a name='x-28EDITOR-HINTS-2ENAMED-READTABLES-3A-40NAMED-READTABLES-PREREGISTERED-20MGL-PAX-3ASECTION-29'></a> | 
|---|
| 186 |  | 
|---|
| 187 | ### 3.3 Preregistered Readtables | 
|---|
| 188 |  | 
|---|
| 189 | - `NIL`, `:STANDARD`, and `:COMMON-LISP` designate the | 
|---|
| 190 | *standard readtable*. | 
|---|
| 191 |  | 
|---|
| 192 | - `:MODERN` designates a *case-preserving* *standard-readtable*. | 
|---|
| 193 |  | 
|---|
| 194 | - `:CURRENT` designates the *current readtable*. | 
|---|
| 195 |  | 
|---|
| 196 |  | 
|---|
| 197 | <a name='x-28EDITOR-HINTS-2ENAMED-READTABLES-3A-40NAMED-READTABLES-EXAMPLES-20MGL-PAX-3ASECTION-29'></a> | 
|---|
| 198 |  | 
|---|
| 199 | ### 3.4 Examples | 
|---|
| 200 |  | 
|---|
| 201 | ```commonlisp | 
|---|
| 202 | (defreadtable elisp:syntax | 
|---|
| 203 |    (:merge :standard) | 
|---|
| 204 |    (:macro-char #\? #'elisp::read-character-literal t) | 
|---|
| 205 |    (:macro-char #\[ #'elisp::read-vector-literal t) | 
|---|
| 206 |    ... | 
|---|
| 207 |    (:case :preserve)) | 
|---|
| 208 |  | 
|---|
| 209 | (defreadtable scheme:syntax | 
|---|
| 210 |    (:merge :standard) | 
|---|
| 211 |    (:macro-char #\[ #'(lambda (stream char) | 
|---|
| 212 |                          (read-delimited-list #\] stream))) | 
|---|
| 213 |    (:macro-char #\# :dispatch) | 
|---|
| 214 |    (:dispatch-macro-char #\# #\t #'scheme::read-#t) | 
|---|
| 215 |    (:dispatch-macro-char #\# #\f #'scheme::read-#f) | 
|---|
| 216 |    ... | 
|---|
| 217 |    (:case :preserve)) | 
|---|
| 218 |  | 
|---|
| 219 | (in-readtable elisp:syntax) | 
|---|
| 220 |  | 
|---|
| 221 | ... | 
|---|
| 222 |  | 
|---|
| 223 | (in-readtable scheme:syntax) | 
|---|
| 224 |  | 
|---|
| 225 | ... | 
|---|
| 226 | ``` | 
|---|
| 227 |  | 
|---|
| 228 |  | 
|---|
| 229 | <a name='x-28EDITOR-HINTS-2ENAMED-READTABLES-3A-40NAMED-READTABLES-REFERENCE-20MGL-PAX-3ASECTION-29'></a> | 
|---|
| 230 |  | 
|---|
| 231 | ## 4 Reference | 
|---|
| 232 |  | 
|---|
| 233 | <a name='x-28EDITOR-HINTS-2ENAMED-READTABLES-3ADEFREADTABLE-20-28MGL-PAX-3AMACRO-29-29'></a> | 
|---|
| 234 |  | 
|---|
| 235 | - [macro] **DEFREADTABLE** *NAME &BODY OPTIONS* | 
|---|
| 236 |  | 
|---|
| 237 |     Define a new named readtable, whose name is given by the symbol `NAME`. | 
|---|
| 238 |     Or, if a readtable is already registered under that name, redefine | 
|---|
| 239 |     that one. | 
|---|
| 240 |      | 
|---|
| 241 |     The readtable can be populated using the following `OPTIONS`: | 
|---|
| 242 |      | 
|---|
| 243 |     - `(:MERGE READTABLE-DESIGNATORS+)` | 
|---|
| 244 |      | 
|---|
| 245 |         Merge the readtables designated into the new readtable being | 
|---|
| 246 |         defined as per [`MERGE-READTABLES-INTO`][77fa]. | 
|---|
| 247 |      | 
|---|
| 248 |         If no `:MERGE` clause is given, an empty readtable is used. See | 
|---|
| 249 |         [`MAKE-READTABLE`][958e]. | 
|---|
| 250 |      | 
|---|
| 251 |     - `(:FUSE READTABLE-DESIGNATORS+)` | 
|---|
| 252 |      | 
|---|
| 253 |         Like `:MERGE` except: | 
|---|
| 254 |      | 
|---|
| 255 |         Error conditions of type [`READER-MACRO-CONFLICT`][acb7] that are signaled | 
|---|
| 256 |         during the merge operation will be silently *continued*. It | 
|---|
| 257 |         follows that reader macros in earlier entries will be | 
|---|
| 258 |         overwritten by later ones. For backward compatibility, `:FUZE` is | 
|---|
| 259 |         accepted as an alias of `:FUSE`. | 
|---|
| 260 |      | 
|---|
| 261 |     - `(:DISPATCH-MACRO-CHAR MACRO-CHAR SUB-CHAR FUNCTION)` | 
|---|
| 262 |      | 
|---|
| 263 |         Define a new sub character `SUB-CHAR` for the dispatching macro | 
|---|
| 264 |         character `MACRO-CHAR`, per `SET-DISPATCH-MACRO-CHARACTER`. You | 
|---|
| 265 |         probably have to define `MACRO-CHAR` as a dispatching macro | 
|---|
| 266 |         character by the following option first. | 
|---|
| 267 |      | 
|---|
| 268 |     - `(:MACRO-CHAR MACRO-CHAR FUNCTION [NON-TERMINATING-P])` | 
|---|
| 269 |      | 
|---|
| 270 |         Define a new macro character in the readtable, per | 
|---|
| 271 |         `SET-MACRO-CHARACTER`. If `FUNCTION` is the keyword `:DISPATCH`, | 
|---|
| 272 |         `MACRO-CHAR` is made a dispatching macro character, per | 
|---|
| 273 |         `MAKE-DISPATCH-MACRO-CHARACTER`. | 
|---|
| 274 |      | 
|---|
| 275 |     - `(:SYNTAX-FROM FROM-READTABLE-DESIGNATOR FROM-CHAR TO-CHAR)` | 
|---|
| 276 |      | 
|---|
| 277 |         Set the character syntax of `TO-CHAR` in the readtable being | 
|---|
| 278 |         defined to the same syntax as `FROM-CHAR` as per | 
|---|
| 279 |         `SET-SYNTAX-FROM-CHAR`. | 
|---|
| 280 |      | 
|---|
| 281 |     - `(:CASE CASE-MODE)` | 
|---|
| 282 |      | 
|---|
| 283 |         Defines the *case sensitivity mode* of the resulting readtable. | 
|---|
| 284 |      | 
|---|
| 285 |     Any number of option clauses may appear. The options are grouped by | 
|---|
| 286 |     their type, but in each group the order the options appeared | 
|---|
| 287 |     textually is preserved. The following groups exist and are executed | 
|---|
| 288 |     in the following order: `:MERGE` and `:FUSE` (one | 
|---|
| 289 |     group), `:CASE`, `:MACRO-CHAR` and `:DISPATCH-MACRO-CHAR` (one group), | 
|---|
| 290 |     finally `:SYNTAX-FROM`. | 
|---|
| 291 |      | 
|---|
| 292 |     Notes: | 
|---|
| 293 |      | 
|---|
| 294 |     The readtable is defined at load-time. If you want to have it | 
|---|
| 295 |     available at compilation time -- say to use its reader-macros in the | 
|---|
| 296 |     same file as its definition -- you have to wrap the [`DEFREADTABLE`][8b94] | 
|---|
| 297 |     form in an explicit `EVAL-WHEN`. | 
|---|
| 298 |      | 
|---|
| 299 |     On redefinition, the target readtable is made empty first before | 
|---|
| 300 |     it's refilled according to the clauses. | 
|---|
| 301 |      | 
|---|
| 302 |     `NIL`, `:STANDARD`, `:COMMON-LISP`, `:MODERN`, and `:CURRENT` are | 
|---|
| 303 |     preregistered readtable names. | 
|---|
| 304 |  | 
|---|
| 305 | <a name='x-28EDITOR-HINTS-2ENAMED-READTABLES-3AIN-READTABLE-20-28MGL-PAX-3AMACRO-29-29'></a> | 
|---|
| 306 |  | 
|---|
| 307 | - [macro] **IN-READTABLE** *NAME* | 
|---|
| 308 |  | 
|---|
| 309 |     Set `*READTABLE*` to the readtable referred to by the symbol `NAME`. | 
|---|
| 310 |  | 
|---|
| 311 | <a name='x-28EDITOR-HINTS-2ENAMED-READTABLES-3AMAKE-READTABLE-20FUNCTION-29'></a> | 
|---|
| 312 |  | 
|---|
| 313 | - [function] **MAKE-READTABLE** *&OPTIONAL (NAME NIL NAME-SUPPLIED-P) &KEY MERGE* | 
|---|
| 314 |  | 
|---|
| 315 |     Creates and returns a new readtable under the specified | 
|---|
| 316 |     `NAME`. | 
|---|
| 317 |      | 
|---|
| 318 |     `MERGE` takes a list of NAMED-READTABLE-DESIGNATORS and specifies the | 
|---|
| 319 |     readtables the new readtable is created from. (See the `:MERGE` clause | 
|---|
| 320 |     of [`DEFREADTABLE`][8b94] for details.) | 
|---|
| 321 |      | 
|---|
| 322 |     If `MERGE` is `NIL`, an empty readtable is used instead. | 
|---|
| 323 |      | 
|---|
| 324 |     If `NAME` is not given, an anonymous empty readtable is returned. | 
|---|
| 325 |      | 
|---|
| 326 |     Notes: | 
|---|
| 327 |      | 
|---|
| 328 |     An empty readtable is a readtable where each character's syntax is | 
|---|
| 329 |     the same as in the *standard readtable* except that each macro | 
|---|
| 330 |     character has been made a constituent. Basically: whitespace stays | 
|---|
| 331 |     whitespace, everything else is constituent. | 
|---|
| 332 |  | 
|---|
| 333 | <a name='x-28EDITOR-HINTS-2ENAMED-READTABLES-3AMERGE-READTABLES-INTO-20FUNCTION-29'></a> | 
|---|
| 334 |  | 
|---|
| 335 | - [function] **MERGE-READTABLES-INTO** *RESULT-READTABLE &REST NAMED-READTABLES* | 
|---|
| 336 |  | 
|---|
| 337 |     Copy the contents of each readtable in `NAMED-READTABLES`([`0`][] [`1`][9b5b]) into | 
|---|
| 338 |     `RESULT-READTABLE`. | 
|---|
| 339 |      | 
|---|
| 340 |     If a macro character appears in more than one of the readtables, | 
|---|
| 341 |     i.e. if a conflict is discovered during the merge, an error of type | 
|---|
| 342 |     [`READER-MACRO-CONFLICT`][acb7] is signaled. | 
|---|
| 343 |  | 
|---|
| 344 | <a name='x-28EDITOR-HINTS-2ENAMED-READTABLES-3AFIND-READTABLE-20FUNCTION-29'></a> | 
|---|
| 345 |  | 
|---|
| 346 | - [function] **FIND-READTABLE** *NAME* | 
|---|
| 347 |  | 
|---|
| 348 |     Looks for the readtable specified by `NAME` and returns it if it is | 
|---|
| 349 |     found. Returns `NIL` otherwise. | 
|---|
| 350 |  | 
|---|
| 351 | <a name='x-28EDITOR-HINTS-2ENAMED-READTABLES-3AENSURE-READTABLE-20FUNCTION-29'></a> | 
|---|
| 352 |  | 
|---|
| 353 | - [function] **ENSURE-READTABLE** *NAME &OPTIONAL (DEFAULT NIL DEFAULT-P)* | 
|---|
| 354 |  | 
|---|
| 355 |     Looks up the readtable specified by `NAME` and returns it if it's found. | 
|---|
| 356 |     If it is not found, it registers the readtable designated by `DEFAULT` | 
|---|
| 357 |     under the name represented by NAME; or if no default argument is | 
|---|
| 358 |     given, it signals an error of type [`READTABLE-DOES-NOT-EXIST`][437a] | 
|---|
| 359 |     instead. | 
|---|
| 360 |  | 
|---|
| 361 | <a name='x-28EDITOR-HINTS-2ENAMED-READTABLES-3ARENAME-READTABLE-20FUNCTION-29'></a> | 
|---|
| 362 |  | 
|---|
| 363 | - [function] **RENAME-READTABLE** *OLD-NAME NEW-NAME* | 
|---|
| 364 |  | 
|---|
| 365 |     Replaces the associated name of the readtable designated by | 
|---|
| 366 |     `OLD-NAME` with `NEW-NAME`. If a readtable is already registered under | 
|---|
| 367 |     `NEW-NAME`, an error of type [`READTABLE-DOES-ALREADY-EXIST`][4b51] is | 
|---|
| 368 |     signaled. | 
|---|
| 369 |  | 
|---|
| 370 | <a name='x-28EDITOR-HINTS-2ENAMED-READTABLES-3AREADTABLE-NAME-20FUNCTION-29'></a> | 
|---|
| 371 |  | 
|---|
| 372 | - [function] **READTABLE-NAME** *NAMED-READTABLE* | 
|---|
| 373 |  | 
|---|
| 374 |     Returns the name of the readtable designated by `NAMED-READTABLE`, | 
|---|
| 375 |     or `NIL`. | 
|---|
| 376 |  | 
|---|
| 377 | <a name='x-28EDITOR-HINTS-2ENAMED-READTABLES-3AREGISTER-READTABLE-20FUNCTION-29'></a> | 
|---|
| 378 |  | 
|---|
| 379 | - [function] **REGISTER-READTABLE** *NAME READTABLE* | 
|---|
| 380 |  | 
|---|
| 381 |     Associate `READTABLE` with `NAME`. Returns the readtable. | 
|---|
| 382 |  | 
|---|
| 383 | <a name='x-28EDITOR-HINTS-2ENAMED-READTABLES-3AUNREGISTER-READTABLE-20FUNCTION-29'></a> | 
|---|
| 384 |  | 
|---|
| 385 | - [function] **UNREGISTER-READTABLE** *NAMED-READTABLE* | 
|---|
| 386 |  | 
|---|
| 387 |     Remove the association of `NAMED-READTABLE`. Returns `T` if successfull, | 
|---|
| 388 |     `NIL` otherwise. | 
|---|
| 389 |  | 
|---|
| 390 | <a name='x-28EDITOR-HINTS-2ENAMED-READTABLES-3ACOPY-NAMED-READTABLE-20FUNCTION-29'></a> | 
|---|
| 391 |  | 
|---|
| 392 | - [function] **COPY-NAMED-READTABLE** *NAMED-READTABLE* | 
|---|
| 393 |  | 
|---|
| 394 |     Like `COPY-READTABLE` but takes a [`NAMED-READTABLE-DESIGNATOR`][fa0c] as argument. | 
|---|
| 395 |  | 
|---|
| 396 | <a name='x-28EDITOR-HINTS-2ENAMED-READTABLES-3ALIST-ALL-NAMED-READTABLES-20FUNCTION-29'></a> | 
|---|
| 397 |  | 
|---|
| 398 | - [function] **LIST-ALL-NAMED-READTABLES**  | 
|---|
| 399 |  | 
|---|
| 400 |     Returns a list of all registered readtables. The returned list is | 
|---|
| 401 |     guaranteed to be fresh, but may contain duplicates. | 
|---|
| 402 |  | 
|---|
| 403 | <a name='x-28EDITOR-HINTS-2ENAMED-READTABLES-3ANAMED-READTABLE-DESIGNATOR-20-28TYPE-29-29'></a> | 
|---|
| 404 |  | 
|---|
| 405 | - [type] **NAMED-READTABLE-DESIGNATOR** | 
|---|
| 406 |  | 
|---|
| 407 |     Either a symbol or a readtable itself. | 
|---|
| 408 |  | 
|---|
| 409 | <a name='x-28EDITOR-HINTS-2ENAMED-READTABLES-3AREADER-MACRO-CONFLICT-20CONDITION-29'></a> | 
|---|
| 410 |  | 
|---|
| 411 | - [condition] **READER-MACRO-CONFLICT** *READTABLE-ERROR* | 
|---|
| 412 |  | 
|---|
| 413 |     Continuable. | 
|---|
| 414 |      | 
|---|
| 415 |     This condition is signaled during the merge process if a reader | 
|---|
| 416 |     macro (be it a macro character or the sub character of a dispatch | 
|---|
| 417 |     macro character) is present in the both source and the target | 
|---|
| 418 |     readtable and the two respective reader macro functions differ. | 
|---|
| 419 |  | 
|---|
| 420 | <a name='x-28EDITOR-HINTS-2ENAMED-READTABLES-3AREADTABLE-DOES-ALREADY-EXIST-20CONDITION-29'></a> | 
|---|
| 421 |  | 
|---|
| 422 | - [condition] **READTABLE-DOES-ALREADY-EXIST** *READTABLE-ERROR* | 
|---|
| 423 |  | 
|---|
| 424 |     Continuable. | 
|---|
| 425 |  | 
|---|
| 426 | <a name='x-28EDITOR-HINTS-2ENAMED-READTABLES-3AREADTABLE-DOES-NOT-EXIST-20CONDITION-29'></a> | 
|---|
| 427 |  | 
|---|
| 428 | - [condition] **READTABLE-DOES-NOT-EXIST** *READTABLE-ERROR* | 
|---|
| 429 |  | 
|---|
| 430 |   [059d]: #x-28EDITOR-HINTS-2ENAMED-READTABLES-3A-40NAMED-READTABLES-ACKNOWLEDGEMENTS-20MGL-PAX-3ASECTION-29 "(EDITOR-HINTS.NAMED-READTABLES:@NAMED-READTABLES-ACKNOWLEDGEMENTS MGL-PAX:SECTION)" | 
|---|
| 431 |   [0bc2]: #x-28EDITOR-HINTS-2ENAMED-READTABLES-3A-40NAMED-READTABLES-OVERVIEW-20MGL-PAX-3ASECTION-29 "(EDITOR-HINTS.NAMED-READTABLES:@NAMED-READTABLES-OVERVIEW MGL-PAX:SECTION)" | 
|---|
| 432 |   [373d]: #x-28EDITOR-HINTS-2ENAMED-READTABLES-3A-40NAMED-READTABLES-REFERENCE-20MGL-PAX-3ASECTION-29 "(EDITOR-HINTS.NAMED-READTABLES:@NAMED-READTABLES-REFERENCE MGL-PAX:SECTION)" | 
|---|
| 433 |   [437a]: #x-28EDITOR-HINTS-2ENAMED-READTABLES-3AREADTABLE-DOES-NOT-EXIST-20CONDITION-29 "(EDITOR-HINTS.NAMED-READTABLES:READTABLE-DOES-NOT-EXIST CONDITION)" | 
|---|
| 434 |   [4b51]: #x-28EDITOR-HINTS-2ENAMED-READTABLES-3AREADTABLE-DOES-ALREADY-EXIST-20CONDITION-29 "(EDITOR-HINTS.NAMED-READTABLES:READTABLE-DOES-ALREADY-EXIST CONDITION)" | 
|---|
| 435 |   [58c6]: #x-28EDITOR-HINTS-2ENAMED-READTABLES-3A-40NAMED-READTABLES-PREREGISTERED-20MGL-PAX-3ASECTION-29 "(EDITOR-HINTS.NAMED-READTABLES:@NAMED-READTABLES-PREREGISTERED MGL-PAX:SECTION)" | 
|---|
| 436 |   [62b8]: #x-28EDITOR-HINTS-2ENAMED-READTABLES-3A-40NAMED-READTABLES-API-IDIOSYNCRASIES-20MGL-PAX-3ASECTION-29 "(EDITOR-HINTS.NAMED-READTABLES:@NAMED-READTABLES-API-IDIOSYNCRASIES MGL-PAX:SECTION)" | 
|---|
| 437 |   [6faf]: #x-28EDITOR-HINTS-2ENAMED-READTABLES-3A-40NAMED-READTABLES-INTRODUCTION-20MGL-PAX-3ASECTION-29 "(EDITOR-HINTS.NAMED-READTABLES:@NAMED-READTABLES-INTRODUCTION MGL-PAX:SECTION)" | 
|---|
| 438 |   [77fa]: #x-28EDITOR-HINTS-2ENAMED-READTABLES-3AMERGE-READTABLES-INTO-20FUNCTION-29 "(EDITOR-HINTS.NAMED-READTABLES:MERGE-READTABLES-INTO FUNCTION)" | 
|---|
| 439 |   [8688]: #x-28EDITOR-HINTS-2ENAMED-READTABLES-3A-40NAMED-READTABLES-LINKS-20MGL-PAX-3ASECTION-29 "(EDITOR-HINTS.NAMED-READTABLES:@NAMED-READTABLES-LINKS MGL-PAX:SECTION)" | 
|---|
| 440 |   [8b94]: #x-28EDITOR-HINTS-2ENAMED-READTABLES-3ADEFREADTABLE-20-28MGL-PAX-3AMACRO-29-29 "(EDITOR-HINTS.NAMED-READTABLES:DEFREADTABLE (MGL-PAX:MACRO))" | 
|---|
| 441 |   [958e]: #x-28EDITOR-HINTS-2ENAMED-READTABLES-3AMAKE-READTABLE-20FUNCTION-29 "(EDITOR-HINTS.NAMED-READTABLES:MAKE-READTABLE FUNCTION)" | 
|---|
| 442 |   [9b5b]: #x-28-22named-readtables-22-20ASDF-2FSYSTEM-3ASYSTEM-29 "(\"named-readtables\" ASDF/SYSTEM:SYSTEM)" | 
|---|
| 443 |   [acb7]: #x-28EDITOR-HINTS-2ENAMED-READTABLES-3AREADER-MACRO-CONFLICT-20CONDITION-29 "(EDITOR-HINTS.NAMED-READTABLES:READER-MACRO-CONFLICT CONDITION)" | 
|---|
| 444 |   [cf94]: #x-28EDITOR-HINTS-2ENAMED-READTABLES-3A-40NAMED-READTABLES-EXAMPLES-20MGL-PAX-3ASECTION-29 "(EDITOR-HINTS.NAMED-READTABLES:@NAMED-READTABLES-EXAMPLES MGL-PAX:SECTION)" | 
|---|
| 445 |   [de3b]: #x-28EDITOR-HINTS-2ENAMED-READTABLES-3AIN-READTABLE-20-28MGL-PAX-3AMACRO-29-29 "(EDITOR-HINTS.NAMED-READTABLES:IN-READTABLE (MGL-PAX:MACRO))" | 
|---|
| 446 |   [e4cd]: #x-28EDITOR-HINTS-2ENAMED-READTABLES-3A-40NAMED-READTABLES-API-NOTES-20MGL-PAX-3ASECTION-29 "(EDITOR-HINTS.NAMED-READTABLES:@NAMED-READTABLES-API-NOTES MGL-PAX:SECTION)" | 
|---|
| 447 |   [fa0c]: #x-28EDITOR-HINTS-2ENAMED-READTABLES-3ANAMED-READTABLE-DESIGNATOR-20-28TYPE-29-29 "(EDITOR-HINTS.NAMED-READTABLES:NAMED-READTABLE-DESIGNATOR (TYPE))" | 
|---|
| 448 |  | 
|---|
| 449 | * * * | 
|---|
| 450 | ###### \[generated by [MGL-PAX](https://github.com/melisgl/mgl-pax)\] | 
|---|