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

[Emacspeak] Re: Emacspeak error in evil-mode



Just FYI, my dirty ugly hack to get things to work is 

(defadvice evil-backward-char (after emacspeak pre act comp)
  "Speak char."
  (when (and (ems-interactive-p)
             (ad-get-arg 0)
             (ad-get-arg 1)
             (ad-get-arg 2))
    (emacspeak-speak-this-char (char-after (1+ (point))))))

(defadvice evil-forward-char (after emacspeak pre act comp)
  "Speak char."
  (when (and (ems-interactive-p)
             (ad-get-arg 0)
             (ad-get-arg 1)
             (ad-get-arg 2))
    (emacspeak-speak-this-char (char-after (1- (point))))))

Tim Cross <theophilusx(a)gmail.com> writes:

> It is possible this might not be due to changes in emacspeak, but
> perhaps something odd with evil mode. I added a basic debug statement to
> the advice for evil-backward-char which displays the values for point,
> the arguments of evil-backward-char and the char returned for
> char-after. What is interesting is that it appears the function is being
> called with different parameters multiple times when moving by just one
> character. Note that I have changed the advice from before to after advice
> (reason outlined below). So the output I get after moving backwards by
> one character is
>
> e-b-c point = 4265 count = 2 crosslines = t noerror = nil char = 97
> e-b-c point = 4265 count = 2 crosslines = t noerror = t char = 97
> e-b-c point = 4266 count = nil crosslines = t noerror = nil char = 114
> e-b-c point = 4266 count = nil crosslines = nil noerror = nil char = 114
>
> It looks like evil-backward-char is called 4 times, twice with count set
> to 2 and twice with count set to nil. When count is set to 2, one call
> has noerror set to nil and one has it set to t. When count is nil, one
> call has crosslines set to t and one has it set to nil. 
>
> With this information, I think I can make it work. However, it is a real
> kludge and I really don't understand what is going on. I did try a
> macroexpand on the evil-define-motion macro which is used to define
> evil-backward-char and evil-forward-char, but that didn't help a lot -
> it is a little complex as that macro then calls the macro
> evil-define-command. I do wonder if it might be worth asking on the evil
> project as this could simply be an issue with the macros which hasn't
> been picked up under standard use. 
>
> The reason I changed the advice to after advice rather than before
> advice is that it struck me that you really want to speak the character
> after the move. In the original advice, 1 is added or remove from the
> current value of point to (I guess) simulate the movement. However, with
> evil mode, you can do things like 3h to move backwards 3 characters.
> With the original advice, this didn't work correctly as it would only
> speak the character before point. 
>
> Understand your busy trying to get the next release out. I will play
> wiht things a bit more and see what I can discover. I don't tend to move
> around by character that much, so the multiple echo is only mildly
> annoying and I suspect I can fudge it temporarily anyway. 
>
> "T.V Raman" <raman(a)google.com> writes:
>
>> Tim Cross via Emacspeak <emacspeak(a)emacspeak.org> writes:
>>
>> The good: I can repro the problem 
>>
>> The not so good: I suspect it might have gotten introduced during some
>> major rewrites in the last few weeks; note that I reimplemented how
>> ems-interactive-p is defined   with help from Stefan Monnier. This is
>> the first breakage I am seeing and it may or may not be due to that
>> change; it's hard to say.
>>
>> Curiously,, moveing back by char says the char  4 times, moving forward
>> says it only 3 times -- that could well be a hint to where the problem
>> is.
>>
>> I suspect I may not be able to fix this before I release the next
>> version of Emacspeak -- 
>>
>>> Hi Raman,
>>>
>>> This is an odd one which I only just noticed. Not sure exactly when this
>>> started. 
>>>
>>> When moving around by character in evil-mode, the character under point
>>> is spoken multiple times - usually 4 or 3 times. Other movement does not seem to be affected.
>>> Character echo when typing is not affected. Only occurs when in either
>>> normal mode or visual mode and only when moving by character i.e. h or l
>>> or using the arrow keys. Moving by words, sentences, etc does not seem
>>> to be affected. 
>>>
>>> Ive confirmed this in a vanilla emacs with only emacspeak and evil-mode
>>> loaded. 
>>>
>>> This is with current Emacs 28.0.50 built today and emacspeak also built
>>> from today. Evil mode loaded from nongnu elpa using package.el.
>>>
>>> I suspect this is from a recent change. Anything you can think of which
>>> might have changed recently in this area to help me narrow down the
>>> search?
>>> _______________________________________________
>>> Emacspeak mailing list -- emacspeak(a)emacspeak.org
>>> To unsubscribe send an email to emacspeak-leave(a)emacspeak.org


|May 1995 - Last Year|Current Year|


If you have questions about this archive or had problems using it, please contact us.

Contact Info Page