Hi All,

Thanks so much for your comments!  It's wonderful to have such good,
detailed feedback.
I appreciate this more than you know.
I wrote this page a long time ago when learning Emacs lisp, so it's no
surprise it may be a little out of date.
I will carefully evaluate your comments and update the page soon - I'm in
the middle of a job search now, so it may be a little bit.

Thanks again!
Sincerely,
Mitch Fincher

On Mon, Apr 18, 2016 at 11:48 AM, Sacha Chua <[email protected]> wrote:

> Drew Adams <[email protected]> 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.
>



-- 
Gravity never sleeps..

Reply via email to