branch: externals/eev commit 31209226ea26fbf568ccb43c34ed64b3248a3265 Author: Eduardo Ochs <eduardoo...@gmail.com> Commit: Eduardo Ochs <eduardoo...@gmail.com>
Changed the declaration of `ee-anchor-format'. --- eev-anchors.el | 4 +- eev-blinks.el | 1 - eev-code.el | 1 - eev-edit.el | 1 - eev-elinks.el | 1 - eev-env.el | 1 - eev-eval.el | 1 - eev-intro.el | 121 +++++++++++++++++++++++++++++++++++-------------------- eev-mode.el | 1 - eev-plinks.el | 1 - eev-prepared.el | 1 - eev-template0.el | 1 - eev-tlinks.el | 1 - 13 files changed, 80 insertions(+), 56 deletions(-) diff --git a/eev-anchors.el b/eev-anchors.el index cd5d1ae..81710af 100644 --- a/eev-anchors.el +++ b/eev-anchors.el @@ -76,7 +76,8 @@ ;;; (defvar ee-anchor-format "«%s»" "See `ee-goto-anchor'.") -(put 'ee-anchor-format 'safe-local-variable 'stringp) +;;;###autoload +(put 'ee-anchor-format 'safe-local-variable #'stringp) ;; A paranoid setting would be: ;; (defvar ee-anchor-format nil "See `ee-goto-anchor'.") @@ -165,6 +166,5 @@ See `ee-goto-anchor'." ;; Local Variables: ;; coding: utf-8-unix -;; ee-anchor-format: "«%s»" ;; no-byte-compile: t ;; End: diff --git a/eev-blinks.el b/eev-blinks.el index f3bad84..752fdc0 100644 --- a/eev-blinks.el +++ b/eev-blinks.el @@ -950,6 +950,5 @@ Hint: install the Debian package \"unicode-data\".") ;; Local Variables: ;; coding: utf-8-unix -;; ee-anchor-format: "«%s»" ;; no-byte-compile: t ;; End: diff --git a/eev-code.el b/eev-code.el index be2f727..e7bd337 100644 --- a/eev-code.el +++ b/eev-code.el @@ -350,6 +350,5 @@ Note: the POS-SPEC-LIST arguments are currently not used." ;; Local Variables: ;; coding: utf-8-unix -;; ee-anchor-format: "«%s»" ;; no-byte-compile: t ;; End: diff --git a/eev-edit.el b/eev-edit.el index 4f0dc62..6a37593 100644 --- a/eev-edit.el +++ b/eev-edit.el @@ -226,6 +226,5 @@ then just delete the current line." ;; Local Variables: ;; coding: utf-8-unix -;; ee-anchor-format: "«%s»" ;; no-byte-compile: t ;; End: diff --git a/eev-elinks.el b/eev-elinks.el index 9ba2af3..5423656 100644 --- a/eev-elinks.el +++ b/eev-elinks.el @@ -1436,6 +1436,5 @@ Use this when point is over a manpage name and you want links to that page." ;; Local Variables: ;; coding: utf-8-unix -;; ee-anchor-format: "«%s»" ;; no-byte-compile: t ;; End: diff --git a/eev-env.el b/eev-env.el index 7da01ff..2e5af38 100644 --- a/eev-env.el +++ b/eev-env.el @@ -139,6 +139,5 @@ See the source for details, examples, and tests." ;; Local Variables: ;; coding: utf-8-unix -;; ee-anchor-format: "«%s»" ;; no-byte-compile: t ;; End: diff --git a/eev-eval.el b/eev-eval.el index 80d0ab2..945cd93 100644 --- a/eev-eval.el +++ b/eev-eval.el @@ -217,6 +217,5 @@ See: (find-eval-intro)" ;; Local Variables: ;; coding: utf-8-unix -;; ee-anchor-format: "«%s»" ;; no-byte-compile: t ;; End: diff --git a/eev-intro.el b/eev-intro.el index f5a92ca..06600b4 100644 --- a/eev-intro.el +++ b/eev-intro.el @@ -1961,28 +1961,49 @@ incompatible with our convention of creating a script called 5. Eev as an ELPA/MELPA package =============================== -In march 2019 I prepared a first version of an \"emacs package\" -for eev to make it installable by `M-x list-packages' - see: +In march 2019 I prepared a first version of an emacs package for +eev to make it installable by `M-x list-packages' - see: (find-enode \"Packages\") (find-efaqnode \"Packages that do not come with Emacs\") -and sent it to the emacs-devel mailing list. Apparently it could -go into GNU ELPA, but the developers requested several changes in -the code, and some of them go against some important design -decisions. I will discuss them here. +and submitted it to the emacs-devel mailing list: + + http://lists.gnu.org/archive/html/emacs-devel/2019-03/msg00433.html + +Stefan Monnier answered, and the rest of the discussion happened +off-list. Apparently eev could go into GNU ELPA, but some changes +and clean-ups were needed. I implemented most of what he +proposed/requested, but three of the things that he asked for +would demand changes that would make eev far less elegant and far +less useful for beginners... in rough terms, the code should 1) +be byte-compilable, 2) be compatible with lexical binding, and 3) +have all the autoloads. My reasons for not complying - or for not +complying NOW - are explained in the subsections below. + +I will try to submit eev to MELPA in the next few days - in +mid-april 2019. I have the feeling that the issues blocking it +from going into ELPA will take a few years to be solved. + +Btw: except for Stefan's e-mails ***100%*** the feedback that I +received about eev in the last three years came from beginners. +I am not willing to make changes that will make eev +beginner-UNfriendly. + 5.1. Byte-compilation --------------------- -All eev source files have a \"no-byte-compile: t\" in their local -variables section. See: +In standard packages all elisp files should be byte-compilable +unless there is a very strong reason - but all eev source files +have a \"no-byte-compile: t\" in their local variables section. +See: (find-eevgrep \"grep --color -nH -e no-byte-compile: *.el\") (find-elnode \"Byte Compilation\" \"no-byte-compile: t\") -Here is the reason. Each call to a `code-*' function defines some +Here is why. Each call to a `code-*' function defines some functions dynamically - for example, `(code-c-d \"e\" ...)' defines `find-efile' - and the best way to inspect a function defined in this way is by using `find-functionpp'. Try: @@ -2018,46 +2039,59 @@ have a reasonable corpus of functions for which `find-efunctionpp' shows something readable, which is good to help them understand the innards of Emacs. -My view is that we have a \"new\" Emacs, that enforces -byte-compilation and uses several data structures that are -relatively opaque, built on top on an \"old\" Emacs that uses lots -of simpler data structures, but in which many things are messier -and more error-prone. I would love to add to eev functions to -inspect these new data structures, but the \"old\" Emacs is the one -that made me fell in love with Free Software and that made me -spend years trying to convert people... and one of the underlying -messages of eev is \"look, you can still use these simpler -things\". Maybe I'm using \"simpler\" in a sense that is not very -usual, so let me quote a paragraph from an article that I wrote -about implementing a Forth in Lua: - - \"I've met many people over the years who have been Forth - enthusiasts in the past, and we often end up discussing what - made Forth so thrilling to use at that time - and what we can - do to adapt its ideas to the computers of today. My personal - impression is that Forth's main points were not the ones that I - listed at the beginning of this section, and that I said that - were easy to quantify; rather, what was most important was that - nothing was hidden, there were no complex data structures - around with \"don't-look-at-this\" parts (think on garbage - collection in Lua, for example, and Lua's tables - beginners - need to be convinced to see these things abstractly, as the - concrete details of the implementation are hard), and - everything - code, data, dictionaries, stacks - were just - linear sequences of bytes, that could be read and modified - directly if we wished to. We had total freedom, defining new - words was quick, and experiments were quick to make; that gave - us a sense of power that was totally different from, say, the - one that a Python user feels today because he has huge - libraries at his fingertips.\" +Here is an excerpt of one of my e-mails to Stefan: + + I have the impression - please correct me if I'm wrong - that + you're proposing to replace the `find-efunctionpp' by something + more modern. My view is that we have a \"new\" Emacs, that + enforces byte-compilation and uses several data structures that + are relatively opaque, built on top on an \"old\" Emacs that + uses lots of simpler data structures, but in which many things + are messier and more error-prone. I would love to add to eev + functions to inspect these new data structures, but the \"old\" + Emacs is the one that made me fell in love with Free Software + and that made me spend years trying to convert people... and + one of the underlying messages of eev is \"look, you can still + use these simpler things\". Maybe I'm using \"simpler\" in a + sense that is not very usual, so let me quote a paragraph from + an article that I wrote about implementing a Forth in Lua: + + \"I've met many people over the years who have been Forth + enthusiasts in the past, and we often end up discussing what + made Forth so thrilling to use at that time - and what we can + do to adapt its ideas to the computers of today. My personal + impression is that Forth's main points were not the ones that + I listed at the beginning of this section, and that I said + that were easy to quantify; rather, what was most important + was that nothing was hidden, there were no complex data + structures around with \"don't-look-at-this\" parts (think on + garbage collection in Lua, for example, and Lua's tables - + beginners need to be convinced to see these things + abstractly, as the concrete details of the implementation are + hard), and everything - code, data, dictionaries, stacks - + were just linear sequences of bytes, that could be read and + modified directly if we wished to. We had total freedom, + defining new words was quick, and experiments were quick to + make; that gave us a sense of power that was totally + different from, say, the one that a Python user feels today + because he has huge libraries at his fingertips.\" (From: http://angg.twu.net/miniforth-article.html) + 5.2. Dynamic binding -------------------- -See the comments in: +Dependency on dynamic binding should be avoided - see: + + (find-elnode \"Dynamic Binding\") + (find-elnode \"Dynamic Binding Tips\") + (find-elnode \"Lexical Binding\") + +but the main function that eev uses for template strings is +intrinsically incompatible with lexical binding. See the comments +in its source file: (find-eev \"eev-template0.el\") @@ -2066,7 +2100,8 @@ See the comments in: 5.3. Autoloads -------------- I decided to mark only one function in eev as autoloadable - -instead of hundreds. See the comments in: +instead of hundreds - and this is very non-standard. See the +comments in: (find-eev \"eev-load.el\") diff --git a/eev-mode.el b/eev-mode.el index a3f7ad4..c448857 100644 --- a/eev-mode.el +++ b/eev-mode.el @@ -315,6 +315,5 @@ Other commands: ;; Local Variables: ;; coding: utf-8-unix -;; ee-anchor-format: "«%s»" ;; no-byte-compile: t ;; End: diff --git a/eev-plinks.el b/eev-plinks.el index cb92f4c..2a5e31a 100644 --- a/eev-plinks.el +++ b/eev-plinks.el @@ -287,6 +287,5 @@ ;; Local Variables: ;; coding: utf-8-unix -;; ee-anchor-format: "«%s»" ;; no-byte-compile: t ;; End: diff --git a/eev-prepared.el b/eev-prepared.el index bdf77f4..1dd80e9 100644 --- a/eev-prepared.el +++ b/eev-prepared.el @@ -250,6 +250,5 @@ See `eev' for more about $EE and the temporary script file." ;; Local Variables: ;; coding: utf-8-unix -;; ee-anchor-format: "«%s»" ;; no-byte-compile: t ;; End: diff --git a/eev-template0.el b/eev-template0.el index 52339e2..d8a2d48 100644 --- a/eev-template0.el +++ b/eev-template0.el @@ -126,6 +126,5 @@ Example: (ee-template0 \"{<} a{(+ 2 3)} {>}\") ;; Local Variables: ;; coding: utf-8-unix -;; ee-anchor-format: "«%s»" ;; no-byte-compile: t ;; End: diff --git a/eev-tlinks.el b/eev-tlinks.el index 178b512..fc56a44 100644 --- a/eev-tlinks.el +++ b/eev-tlinks.el @@ -1874,6 +1874,5 @@ dofile \"{fname0}\" ;; Local Variables: ;; coding: utf-8-unix -;; ee-anchor-format: "«%s»" ;; no-byte-compile: t ;; End: