help-gnu-emacs
[Top][All Lists]
Advanced

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

Re: Advice on troubleshooting function to "unscroll"


From: Will Monroe
Subject: Re: Advice on troubleshooting function to "unscroll"
Date: Sun, 25 Jan 2015 19:17:27 -0600
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:31.0) Gecko/20100101 Thunderbird/31.4.0

why did scroll-up-command work where the still useful but not
appropriate scroll-up did not?

That was already answered, and I thought that you understood
the answer.  The problem was that the code checked whether the
current command was `scroll-up', and it of course never would
be.  `scroll-up' is called by `scroll-up-command', but only the
latter, never the former, is invoked by you interactively, i.e.,
as a command.  Variables `this-command' and `last-command' are
only set to functions when they are invoked as commands.

I think the OP did understand this, but meant to ask (more or less) "why
weren't the Emacs Devs satisfied with scroll-up, which did work after
all".

Actually, you're both correct!

Drew, I'll have to go back and look at what "interactive" actually means. 'scroll-up' is advised (and invoked?) in the code below. Not sure if that means that I am also invoking it interactively. I thought being invoked, "as a command", meant that I was invoking it using `M-x scroll-up`.

(defadvice scroll-up (before remember-for-unscroll
                 activate compile)
  "Remember where we started from, for 'unscroll'."
  (if (not (eq last-command 'scroll-up))
      (setq unscroll-point (point)
          unscroll-window-start (window-start)
          unscroll-hscroll (window-hscroll))))

Marcin, I also wondering what prompted the addition of scroll-up-command. I think Drew addresses this but I probably need to look at the docstrings for both to grasp it more clearly.

And if I'm being honest about why I did not go to Edebug it's because I
was anticipating great difficulty reading the backtrace statements.  I
thought my problem might be compounded by a more general illiteracy in
that regard...

The Emacs manual sends you to the Elisp manual, node `Edebug',
for information about using that debugger.  That section of the
Elisp manual is like a mini-manual about Edebug.

Why it does not send you instead to the Elisp manual node
`Debugger' (which has title "The Lisp Debugger"), I don't know.
That node covers the regular debugger (i.e., `debug').

`debug' is older than `edebug'.  Perhaps the person who wrote
`edebug' decided to send readers of the Emacs manual to learn
about Edebug. ;-)

(In older versions of Emacs, e.g. Emacs 20, there was no link
from the Emacs manual to the Elisp manual for either the regular
Lisp debugger or Edebug, but there were multiple mentions of
using the former - and only no mention of Edebug, except to say
that edebug.el was contributed by Daniel LaLiberte.)

Drew, your answer is (as usual) very helpful and informative.  Thank you
for your insights and the bits about Emacs history.

I think we really need Sacha Chua to do an Emacs Chat with you.  I,
personally, would love to learn a bit about your workflow and Emacs
config.  (Not that I would necessarily like to copy it: I strongly
disagree with you on the window/frame issue, for instance!)

So much helpful detail that, as a solo student of Emacs and elisp, is helpful to me. And as a regular viewer of Sacha Chua's Emacs Chats, I have to agree!

Best regards,

Will



reply via email to

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