binding b-key to pageback behavior

classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

binding b-key to pageback behavior

VanL

Hello.

Is there a general configuration to bind b-key to pageback?

What I do is the following where the b-key does not do what I would
like.

#+NAME: b-key-pageback-behavior
#+BEGIN_SRC emacs-lisp
  (add-hook 'eww-mode-hook
            (lambda ()
              (define-key eww-mode-map (kbd "b")
                'scroll-down-command)))

  (add-hook 'view-mode-hook
            (lambda ()
              (define-key view-mode-map (kbd "b")
                'View-scroll-page-backward)))

  (add-hook 'help-mode-hook
            (lambda ()
              (define-key help-mode-map (kbd "b")
                'scroll-down-command)))

  (add-hook 'log-view-mode-hook
            (lambda ()
              (define-key log-view-mode-map (kbd "b")
                'scroll-down-command)))

#+END_SRC

--
© 2019 VanL
gpg using EEF2 37E9 3840 0D5D 9183  251E 9830 384E 9683 B835
          'If the bug bites,don't fight it.' -Nancy S. Steinhardt


Reply | Threaded
Open this post in threaded view
|

Re: binding b-key to pageback behavior

Emacs - Help mailing list
VanL wrote:

> Is there a general configuration to bind
> b-key to pageback?

Well, how would that work? In your code, it
isn't even the same function, it is
`scroll-down-command', then its
`View-scroll-page-backward'... And even if it
did, after evaluating it one wouldn't be able
to write this very message!

What you can do, is something like:

(defun set-vertical-keys (map)
  "Set MAP keys for moving point vertically."
  (define-key map "i" #'previous-line)
  (define-key map "k" #'next-line) ) ; [1]

and then, for example for the
gnus-summary-mode, do

(require 'gnus-sum)
(set-vertical-keys gnus-summary-mode-map)

Also, I'd recommend not doing this in hooks,
unless you have to.


[1] https://dataswamp.org/~incal/emacs-init/scroll.el

--
underground experts united
http://user.it.uu.se/~embe8573
https://dataswamp.org/~incal


Reply | Threaded
Open this post in threaded view
|

Re: binding b-key to pageback behavior

VanL
Emanuel Berg writes:

> VanL wrote:
>
>> Is there a general configuration to bind
>> b-key to pageback?
>
> Well, how would that work? In your code, it
> isn't even the same function, it is
> `scroll-down-command', then its
> `View-scroll-page-backward'... And even if it
> did, after evaluating it one wouldn't be able
> to write this very message!

Those modes the customization is done to are for reading only in the
main.

SPC behaves as expected there and I look for the reverse binding to
apply to b.

> What you can do, is something like:
>
> (defun set-vertical-keys (map)
>   "Set MAP keys for moving point vertically."
>   (define-key map "i" #'previous-line)
>   (define-key map "k" #'next-line) ) ; [1]
>
> and then, for example for the
> gnus-summary-mode, do
>
> (require 'gnus-sum)
> (set-vertical-keys gnus-summary-mode-map)
>
> Also, I'd recommend not doing this in hooks,
> unless you have to.

Thanks for the suggestions.  Are you able to put a LICENSE on your code?

For example, I keep a CC0 empty file and..

#+NAME: example
#+BEGIN_SRC c
  /*
   ,* Copyright (c) yyyy xxx <[hidden email]>
   ,*
   ,* Permission to use, copy, modify, and distribute this software for any
   ,* purpose with or without fee is hereby granted, provided that the above
   ,* copyright notice and this permission notice appear in all copies.
   ,*
   ,* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   ,* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   ,* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   ,* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   ,* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   ,* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   ,* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   ,*/

#+END_SRC

> [1] https://dataswamp.org/~incal/emacs-init/scroll.el

--
əə0@ 一 二 三 言 語 𝔖



Reply | Threaded
Open this post in threaded view
|

Re: binding b-key to pageback behavior

Emacs - Help mailing list
VanL wrote:

>>> Is there a general configuration to bind
>>> b-key to pageback?
>>
>> Well, how would that work? In your code, it
>> isn't even the same function, it is
>> `scroll-down-command', then its
>> `View-scroll-page-backward'... And even if
>> it did, after evaluating it one wouldn't be
>> able to write this very message!
>
> Those modes the customization is done to are
> for reading only in the main.

I thought by "general" you meant you looked for
a way to do it without stating the specific
modes and/or functions?

If that's not what you meant, what is a general
configuration to bind a specific key to
a concept, which is implemented differently in
different modes?

> SPC behaves as expected there and I look for
> the reverse binding to apply to b.

Do `C-h k SPC' to find out what SPC does.
Use this to figure out the name of the reverse
function. Bind this to b:

(require 'mode)
(define-key mode-map "b" #'function-name)

> Thanks for the suggestions. Are you able to
> put a LICENSE on your code?
>
> For example, I keep a CC0 empty file and..

CC0 = Creative Commons 1.0?

Well, I haven't read the small print...

Is it enough if I put one file in the base
directory of all my Elisp?

--
underground experts united
http://user.it.uu.se/~embe8573
https://dataswamp.org/~incal


Reply | Threaded
Open this post in threaded view
|

Re: binding b-key to pageback behavior

VanL
Emanuel Berg via Users list for the GNU Emacs text editor
<[hidden email]> writes:

> VanL wrote:
>
>>>> Is there a general configuration to bind
>>>> b-key to pageback?
>>>
>>> Well, how would that work? In your code, it
>>> isn't even the same function, it is
>>> `scroll-down-command', then its
>>> `View-scroll-page-backward'... And even if
>>> it did, after evaluating it one wouldn't be
>>> able to write this very message!
>>
>> Those modes the customization is done to are
>> for reading only in the main.
>
> I thought by "general" you meant you looked for
> a way to do it without stating the specific
> modes and/or functions?

I was meaning 'general' in the sense where SPC
functions to scroll, there, I'd like for b-key
to scroll the other way.

> If that's not what you meant, what is a general
> configuration to bind a specific key to
> a concept, which is implemented differently in
> different modes?

I figure the modes all fall in ultimately in
two boxes, either for reading or editing.

>> SPC behaves as expected there and I look for
>> the reverse binding to apply to b.
>
> Do `C-h k SPC' to find out what SPC does.
> Use this to figure out the name of the reverse
> function. Bind this to b:
>
> (require 'mode)
> (define-key mode-map "b" #'function-name)
>

Ah, that is neat and short.  Thanks.

>> Thanks for the suggestions. Are you able to
>> put a LICENSE on your code?
>>
>> For example, I keep a CC0 empty file and..
>
> CC0 = Creative Commons 1.0?

I believe that one is desireable for
documentation.

> Well, I haven't read the small print...
>
> Is it enough if I put one file in the base
> directory of all my Elisp?

Having the license in the actual file like in
'rot13.el' is best, I believe.

--
əə0@ 一 二 三 言 語 𝔖
'VLIW architecture?'


Reply | Threaded
Open this post in threaded view
|

Re: binding b-key to pageback behavior

Emacs - Help mailing list
VanL wrote:

> I figure the modes all fall in ultimately in
> two boxes, either for reading or editing.

Absolutely, but you still need to mention the
individual modes (or maps) and whenever the
scrolling stuff differs, that has to be
explicit as well. So ultimately the result of
doing that wouldn't be all that different from
setting it up mode by mode.

But yes it would look something like what I've
already posted:

(defun set-vertical-keys (map)
  "Set MAP keys for moving point vertically."
  (define-key map "i" #'previous-line)
  (define-key map "k" #'next-line) )

> Having the license in the actual file like in
> 'rot13.el' is best, I believe.

Interesting, Gnus also does that, in
`gnus-summary-caesar-message'. Sounds like the
kind of pleasant thing one would like to write
in Elisp...

--
underground experts united
http://user.it.uu.se/~embe8573
https://dataswamp.org/~incal


Reply | Threaded
Open this post in threaded view
|

Re: binding b-key to pageback behavior

VanL
Emanuel Berg via Users list for the GNU Emacs text editor
<[hidden email]> writes:

> VanL wrote:
>
>> I figure the modes all fall in ultimately in
>> two boxes, either for reading or editing.
>
> Absolutely, but you still need to mention the
> individual modes (or maps) and whenever the
> scrolling stuff differs, that has to be
> explicit as well. So ultimately the result of
> doing that wouldn't be all that different from
> setting it up mode by mode.

In a more perfect world DWIM Mode just works.

> But yes it would look something like what I've
> already posted:
>
> (defun set-vertical-keys (map)
>   "Set MAP keys for moving point vertically."
>   (define-key map "i" #'previous-line)
>   (define-key map "k" #'next-line) )

I cargo culted the two liner and it
broke Emacs's startup.  Will see how
this goes.  Thanks.

>> Having the LICENSE in the actual file like in
>> 'rot13.el' is best, I believe.
>
> Interesting, Gnus also does that, in
> `gnus-summary-caesar-message'. Sounds like the
> kind of pleasant thing one would like to write
> in Elisp...

C17's draft N2176 page 13 point 14 is an unpleasant shocker.

--
LoL,
  əə0@ 一 二 三 言 語 𝔖
  'VLIW architecture?'
  G4 White 78 Black 79


Reply | Threaded
Open this post in threaded view
|

Re: binding b-key to pageback behavior

Emacs - Help mailing list
VanL wrote:

>> Absolutely, but you still need to mention
>> the individual modes (or maps) and whenever
>> the scrolling stuff differs, that has to be
>> explicit as well. So ultimately the result
>> of doing that wouldn't be all that different
>> from setting it up mode by mode.
>
> In a more perfect world DWIM Mode just works.

But it works sort of like that if only modes
were to stick to the standard every-Emacs
stuff. When they don't most likely it means
they have reasons not to. And when that happens
it must be mentioned somewhere if you want to
configure it. If they didn't do it, do it
yourself VanL :)

> C17's draft N2176 page 13 point 14 is an
> unpleasant shocker.

    14 EXAMPLE 5 Rearrangement for
    floating-point expressions is often
    restricted because of limitations in
    precision as well as range.
    The implementation cannot generally apply
    the mathematical associative rules for
    addition or multiplication, nor the
    distributive rule, because of roundoff
    error, even in the absence of overflow and
    underflow. Likewise, implementations cannot
    generally replace decimal constants in
    order to rearrange expressions. In the
    following fragment, rearrangements
    suggested by mathematical rules for real
    numbers are often not valid (see F.9).

    double x, y, z;
    /* ... */
    x = (x * y) * z; // not equivalent to x *= y * z;
    z = (x - y) + y; // not equivalent to z = x;
    z = x + x * y;   // not equivalent to z = x * (1.0 + y);
    y = x / 5.0;     // not equivalent to y = x * 0.2;


Don't download this:
  http://www2.open-std.org/JTC1/SC22/WG14/www/abq/c17_updated_proposed_fdis.pdf

--
underground experts united
http://user.it.uu.se/~embe8573
https://dataswamp.org/~incal