emacs-tangents
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: 2016-04-18 Emacs News


From: Sacha Chua
Subject: Re: 2016-04-18 Emacs News
Date: Mon, 18 Apr 2016 12:48:58 -0400
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/25.0.92 (gnu/linux)

Drew Adams <address@hidden> writes:

>> A nice and clear summary of Emacs Lisp (Reddit)
>> http://www.fincher.org/tips/Languages/Emacs.shtml
> Hm.  It's generally good to see such summaries.  But
> this one is not as nice and clear as it might be, IMO.
> It is also somewhat out of date.

Thanks for the detailed feedback, Drew! I'm looping in the author here
so that the tutorial can be updated - see Drew's notes below.
https://www.reddit.com/r/emacs/comments/4f7q0f/a_nice_and_clear_summary_of_emacs_lisp/
also has more comments.

>  (set 'fname "Mitch")
>
> Not a great example of what `set' is used for.  If this
> were a common use case then we would need only `setq'.
>
>  (setq fname "Mitch")
>
> Doesn't bring much attention to the fact that the second
> arg is evaluated and its value is used.  IOW, something
> like a string, which is self-quoting, is not the best
> thing to show in such an example.
>
>  (list 'a 'x "asdf" 6) => (list a x "asdf" 6)
>
> Should be => (a x "asdf" 6) - no "list".  But even that
> would not bring much attention to the fact that each arg
> is evaluated.
>
>  (sort '(5 3 9 27) '<) => (3 5 9 27)
>
> Well yes, but, especially if introducing this to newbies,
> the destructive nature of `sort' is really important to
> point out.
>
>  (concat "I " "went to " "the woods ")=> "I went to the woods "
>
> Might be good to use some arguments that are characters
> and lists of chars - especially characters.
>
>  (length "I went to the woods ")=> 20
>
> Yes, but `string-width' is typically more appropriate for
> strings (and there is `string-bytes').  A more typical
> `length' use case would be with a list or a vector.
>
>  (aref s i)
>  returns the ith char (0 based)
>  (aref "abcd" 2)=> 99
>
> It's not about counting characters.  `aref' is for any
> array, not just a string.  Same for `aset' description.
>
> Section "Logical functions (and, or, not, eq)" does not
> say what constitutes a "true" or a "false" value.  In
> particular, it does not say that non-nil is treated as
> true by most predicates (including `and', `or', and `not').
>
>  "equal takes two args and tests if the values are equal"
>
> Doesn't say what it means for two values to be "equal".
>
> Section "Function Template" is really a command-definition
> template.
>
>  "Commands and functions can also have hooks. These are
>   created using 'defadvice'."
>
> Kind of.  But they are not called "hooks" in Emacs (e.g.
> in the doc).  And `defadvice' is now deprecated, in favor
> of the new advice system.
>
>   `let': "uninitialized variables may also be used...  This
>    creates temporary variables "c" and "d", but assigns no
>    value."
>
> That is wrong - vars `c' and `d' are bound to nil.
>
>   "let* ;; forces sequential execution"
>
> No, sequential (i.e., dependent) bindings.  Execution of
> the body of `let' is also sequential.
>
>  "if the documentation string begins with a "*", the variable
>   is user definable with the M-xset-variable command"
>
> No.  This behavior was (unfortunately, IMO) removed long ago.
>
> Introducing `reduce', regexps, and macros is too advanced,
> and too unexplained, for this high-level intro.  It can
> erroneously give the impression of authority or expertise.
>
> It might be different if (a) these things were actually
> described/explained here and (b) there was not so much
> that is wrong or misleading in the basic stuff presented.
>
>  "defunst - defunst works like defun but "inlines" the function.
>   Works like "Inline" in C++."
>
> No.  `defunst' does not exist in Emacs Lisp.  `defsubst'
> was presumably meant.
>
>  `interactive': "r - the hilighted region"
>
> No; it is the region, active (highlighted) or not.
>
> `C-h a' is not `command-apropos' but `apropos-command'.
>
> `C-h C-k' is not `Info-goto-emacs-key-command-node'.
>
> `E-!' should be `M-!' (or `ESC !').
>
> The link to the W3 web browser is broken.  And `eww' might
> be a better choice now (?).
>
> The commands bound to `C-x (', `C-x )', and `C-x e' have been
> different for years now (kmacro was introduced in Emacs 22!).
>
> In sum, again, it's good that people post such summaries, but
> they can also be harmful/misleading.  If they are posted to
> a community place such as Emacs Wiki then they at least have
> a better chance of getting corrected and updated.
>
> And I really recommend _asking Emacs_ itself, including the
> manuals.  There is a good intro manual to learning Emacs Lisp
> that comes with Emacs.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]