unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Add moc to Non-GNU ELPA
@ 2024-12-16 16:52 Psionic K
  2024-12-17  4:40 ` Richard Stallman
  0 siblings, 1 reply; 8+ messages in thread
From: Psionic K @ 2024-12-16 16:52 UTC (permalink / raw)
  To: Emacs developers

Hi, hadn't heard anything back, so starting over.

git@github.com:positron-solutions/moc.git
https://github.com/positron-solutions/moc

This package is an important companion to Dslide.  Its replay
functionality combined with Dslide's step scripting can be very
powerful for presenting about code and programming.  Its workflows for
producing sequences of highlighted code excerpts are efficient.  Along
with the upcoming release of Dslide, which has keyboard macro
transcription and playback, it will ensure total dominance of Emacs
over deranged social media landscapes such as TikTok and YouTube,
where fake information is pervasive but Emacs is true.

I've made extensive use of :info and :description slots in the
transient interfaces for `moc-focus' and `moc-dispatch'.  I will be
using the package to discuss this UI design point.

NEWS.org exists.  moc.texi is generated from manual.org.  moc.el is the package.



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Add moc to Non-GNU ELPA
  2024-12-16 16:52 Add moc to Non-GNU ELPA Psionic K
@ 2024-12-17  4:40 ` Richard Stallman
  2024-12-17  5:02   ` Psionic K
  0 siblings, 1 reply; 8+ messages in thread
From: Richard Stallman @ 2024-12-17  4:40 UTC (permalink / raw)
  To: Psionic K; +Cc: emacs-devel

[[[ To any NSA and FBI agents reading my email: please consider    ]]]
[[[ whether defending the US Constitution against all enemies,     ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]

Can you please explain what Delide does?  I think some of us have
never heard of it.  Also, what added functionality does
positron-solutions implement?


-- 
Dr Richard Stallman (https://stallman.org)
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Add moc to Non-GNU ELPA
  2024-12-17  4:40 ` Richard Stallman
@ 2024-12-17  5:02   ` Psionic K
  2024-12-17 12:00     ` Eduardo Ochs
  0 siblings, 1 reply; 8+ messages in thread
From: Psionic K @ 2024-12-17  5:02 UTC (permalink / raw)
  To: rms; +Cc: Psionic K, emacs-devel

[-- Attachment #1: Type: text/plain, Size: 645 bytes --]

> Can you please explain what Delide does?

Present anything Emacs can do with programmable, extensible, configurable
slides & presentation steps made from org mode headings

Longer introductions are available in the documentation:
https://raw.githubusercontent.com/positron-solutions/dslide/refs/heads/unstable/doc/README.org
https://raw.githubusercontent.com/positron-solutions/dslide/refs/heads/unstable/doc/manual.org

The latest (upcoming) changes are available via the news file:
https://raw.githubusercontent.com/positron-solutions/dslide/refs/heads/unstable/NEWS.org

You can install it from Non-GNU ELPA.  The package symbol is dslide.

[-- Attachment #2: Type: text/html, Size: 1089 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Add moc to Non-GNU ELPA
  2024-12-17  5:02   ` Psionic K
@ 2024-12-17 12:00     ` Eduardo Ochs
  2024-12-17 14:09       ` Psionic K
  0 siblings, 1 reply; 8+ messages in thread
From: Eduardo Ochs @ 2024-12-17 12:00 UTC (permalink / raw)
  To: Psionic K; +Cc: rms, emacs-devel

On Tue, 17 Dec 2024 at 02:03, Psionic K <psionik@positron.solutions> wrote:
>
> > Can you please explain what Delide does?
>
> Present anything Emacs can do with programmable, extensible, configurable slides & presentation steps made from org mode headings
>
> Longer introductions are available in the documentation:
> https://raw.githubusercontent.com/positron-solutions/dslide/refs/heads/unstable/doc/README.org
> https://raw.githubusercontent.com/positron-solutions/dslide/refs/heads/unstable/doc/manual.org
>
> The latest (upcoming) changes are available via the news file:
> https://raw.githubusercontent.com/positron-solutions/dslide/refs/heads/unstable/NEWS.org
>
> You can install it from Non-GNU ELPA.  The package symbol is dslide.


Hi Psionic,

I was trying to find your code for playing back macros with pauses
between certain keys and I found this,

  https://github.com/positron-solutions/dslide/issues/18

that gave me the impression that this is a planned feature, not
implemented yet...

I am trying to do something similar, but I am looking for a minimal
solution that fits in a few lines of code. What I currently have is
this:

  http://anggtwu.net/eev-current/eev-blinks.el.html#eek2

Here is its code:

  (defun eek2 (str &optional norecord)
    "Execute STR as a keyboard macro. See `edmacro-mode' for the exact format.\n
  This is a variant of `eek' that pushes events into `unread-command-events'.
  An example: (eek2 \"C-x 4 C-h\")"
    (interactive "sKeys: ")
    (setq unread-command-events
          (nconc unread-command-events (ee-eek2 str))))

  (defun ee-eek2 (str &optional norecord)
    "An internal function used by `eek2'."
    (cl-loop for ev in (listify-key-sequence (read-kbd-macro str))
             collect (cons (or norecord t) ev)))

If we run

  (eek2 "RET Hello")

it plays back RET, `H', `e', `l', `l', `o', and if we run this

  (ee-eek2 "RET Hello")

is shows the events that eek2 would push into `unread-command-events',
that are:

  '((t . 13) (t . ?H) (t . ?e) (t . ?l) (t . ?l) (t . ?o))

How would you implement pauses? Any pointers would help me very much!
Thanks in advance,

  Eduardo Ochs
  http://anggtwu.net/emacsconf2024.html



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Add moc to Non-GNU ELPA
  2024-12-17 12:00     ` Eduardo Ochs
@ 2024-12-17 14:09       ` Psionic K
  2024-12-17 15:28         ` Dslide kmacro transcription & playback [was:Add moc to Non-GNU ELPA] Psionic K
  2024-12-17 17:47         ` Add moc to Non-GNU ELPA Eduardo Ochs
  0 siblings, 2 replies; 8+ messages in thread
From: Psionic K @ 2024-12-17 14:09 UTC (permalink / raw)
  To: Eduardo Ochs; +Cc: Psionic K, emacs-devel

[-- Attachment #1: Type: text/plain, Size: 3635 bytes --]

Hi Eduard,

You can preview the keyboard macro playback on the unstable branch.  There
is a simple example at the very end of the demo.org in the /test
directory.  `dslide-deck-start' and it will show you the rest of the way.
You can also start at point right on that example or skip to it with the
contents view.

I also used `unread-key-events', just with a Laplace distribution based
jittery timer for relatively human-appearing key entry speed.  It's for
"live" tech demos.  You may file an issue for instant playback.  In my rush
to do human speed I forgot some people will just want a normal keyboard
macro.

Do play around with `dslide-kmacro-transcribe-set-mark'.  Every macro you
record will encode a step.  It's extremely satisfying.
https://github.com/positron-solutions/dslide/commit/c2ea982a809c1114b63638ac4c47e1292e11189e

I just fixed some bugs and overhauled the start functions.  I'm reluctant
to push master even if I fix the tiny outstanding bug I found.  I need to
revert a small change somewhere that caused a regression in reverse image
reveal when entering the slide in reverse.

On Tue, Dec 17, 2024 at 9:00 PM Eduardo Ochs <eduardoochs@gmail.com> wrote:

> On Tue, 17 Dec 2024 at 02:03, Psionic K <psionik@positron.solutions>
> wrote:
> >
> > > Can you please explain what Delide does?
> >
> > Present anything Emacs can do with programmable, extensible,
> configurable slides & presentation steps made from org mode headings
> >
> > Longer introductions are available in the documentation:
> >
> https://raw.githubusercontent.com/positron-solutions/dslide/refs/heads/unstable/doc/README.org
> >
> https://raw.githubusercontent.com/positron-solutions/dslide/refs/heads/unstable/doc/manual.org
> >
> > The latest (upcoming) changes are available via the news file:
> >
> https://raw.githubusercontent.com/positron-solutions/dslide/refs/heads/unstable/NEWS.org
> >
> > You can install it from Non-GNU ELPA.  The package symbol is dslide.
>
>
> Hi Psionic,
>
> I was trying to find your code for playing back macros with pauses
> between certain keys and I found this,
>
>   https://github.com/positron-solutions/dslide/issues/18
>
> that gave me the impression that this is a planned feature, not
> implemented yet...
>
> I am trying to do something similar, but I am looking for a minimal
> solution that fits in a few lines of code. What I currently have is
> this:
>
>   http://anggtwu.net/eev-current/eev-blinks.el.html#eek2
>
> Here is its code:
>
>   (defun eek2 (str &optional norecord)
>     "Execute STR as a keyboard macro. See `edmacro-mode' for the exact
> format.\n
>   This is a variant of `eek' that pushes events into
> `unread-command-events'.
>   An example: (eek2 \"C-x 4 C-h\")"
>     (interactive "sKeys: ")
>     (setq unread-command-events
>           (nconc unread-command-events (ee-eek2 str))))
>
>   (defun ee-eek2 (str &optional norecord)
>     "An internal function used by `eek2'."
>     (cl-loop for ev in (listify-key-sequence (read-kbd-macro str))
>              collect (cons (or norecord t) ev)))
>
> If we run
>
>   (eek2 "RET Hello")
>
> it plays back RET, `H', `e', `l', `l', `o', and if we run this
>
>   (ee-eek2 "RET Hello")
>
> is shows the events that eek2 would push into `unread-command-events',
> that are:
>
>   '((t . 13) (t . ?H) (t . ?e) (t . ?l) (t . ?l) (t . ?o))
>
> How would you implement pauses? Any pointers would help me very much!
> Thanks in advance,
>
>   Eduardo Ochs
>   http://anggtwu.net/emacsconf2024.html
>


-- 
Only the Future is Certain

[-- Attachment #2: Type: text/html, Size: 5450 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Dslide kmacro transcription & playback [was:Add moc to Non-GNU ELPA]
  2024-12-17 14:09       ` Psionic K
@ 2024-12-17 15:28         ` Psionic K
  2024-12-17 17:47         ` Add moc to Non-GNU ELPA Eduardo Ochs
  1 sibling, 0 replies; 8+ messages in thread
From: Psionic K @ 2024-12-17 15:28 UTC (permalink / raw)
  To: Psionic K; +Cc: Eduardo Ochs, Emacs developers

[-- Attachment #1: Type: text/plain, Size: 1134 bytes --]

Hello Eduard,

I force pushed some fixes onto the unstable branch.  The kmacro
transcription is pleasantly working and an action duplication bug was
identified and fixed.  I am nearly comfortable pushing to master and
tagging 0.6.0.

Here's the kmacro action commit
https://github.com/positron-solutions/dslide/commit/1123a4ecbe93d75816faa3ba9539d6aef4ed7ca3

For anyone interested, I've been keeping the `dslide-action' class stable
to keep custom actions stable.   However, I need a capability to choose the
next action correctly or to allow them to peek ahead and tell me which one
should be next.  Peeking may add complexity to actions but tracking their
progress for them adds rigidity.  If I decide to change actions, I'll make
sure they are absurdly simple to write after the changes.  I can always
leave an optional method to support more complex ordering.  Progress
tracking and reading options off of elements is the bulk of all action
creation, so doing it for them will make them brain dead simple.  I think
that's what we want.

The feature roadmap for 1.0 is here:
https://github.com/positron-solutions/dslide/issues/20

[-- Attachment #2: Type: text/html, Size: 1435 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Add moc to Non-GNU ELPA
  2024-12-17 14:09       ` Psionic K
  2024-12-17 15:28         ` Dslide kmacro transcription & playback [was:Add moc to Non-GNU ELPA] Psionic K
@ 2024-12-17 17:47         ` Eduardo Ochs
  2024-12-18  1:01           ` Psionic K
  1 sibling, 1 reply; 8+ messages in thread
From: Eduardo Ochs @ 2024-12-17 17:47 UTC (permalink / raw)
  To: Psionic K; +Cc: emacs-devel

On Tue, 17 Dec 2024 at 11:09, Psionic K <psionik@positron.solutions> wrote:
>
> Hi Eduard,
>
> You can preview the keyboard macro playback on the unstable branch.
> There is a simple example at the very end of the demo.org in the
> /test directory. `dslide-deck-start' and it will show you the rest
> of the way. You can also start at point right on that example or
> skip to it with the contents view.
>
> I also used `unread-key-events', just with a Laplace distribution
> based jittery timer for relatively human-appearing key entry speed.
> It's for "live" tech demos. You may file an issue for instant
> playback. In my rush to do human speed I forgot some people will
> just want a normal keyboard macro.
>
> Do play around with `dslide-kmacro-transcribe-set-mark'. Every macro
> you record will encode a step. It's extremely satisfying.
> https://github.com/positron-solutions/dslide/commit/c2ea982a809c1114b63638ac4c47e1292e11189e
>
> I just fixed some bugs and overhauled the start functions. I'm
> reluctant to push master even if I fix the tiny outstanding bug I
> found. I need to revert a small change somewhere that caused a
> regression in reverse image reveal when entering the slide in
> reverse.

Hi Psionic,

I git-cloned the unstable branch of dslide with these commands,

  rm -Rfv /tmp/dslide/
  cd      /tmp/
  git clone https://github.com/positron-solutions/dslide
  cd      /tmp/dslide/
  git branch remotes/origin/unstable

and grepped for `unread'... your code only mentions
`unread-command-events' in one place - here:

https://github.com/positron-solutions/dslide/blob/b8e1399cc531c5d991e7f36fc48e420bc7e2621a/dslide.el#L2052

and if I understood correctly you don't encode delays as events - you
use a timer to push events with some delays between them... and your
demo is here,

https://github.com/positron-solutions/dslide/blob/b8e1399cc531c5d991e7f36fc48e420bc7e2621a/test/demo.org?plain=1#L448

in a line that looks like this, modulo line breaks:

  #+dslide_kmacro: :frequency 0.09 :jitter 0.4 :keys [134217848 97 110
    105 109 97 116 101 45 98 105 114 116 104 100 97 121 45 112 114 101
    115 101 110 116 return 100 115 108 105 100 101 return]

I was thinking of doing something completely different. If a person
runs my defuns for `eek2' and `ee-eek2' from my other e-mail,

  https://lists.gnu.org/archive/html/emacs-devel/2024-12/msg00689.html

then the second sexp below

     (eek2 "<down>")
  (ee-eek2 "<down>")

returns `((t . down))' - so the symbol `down' is the "name" of an
event (<- I haven't checked the correct terminology). It should be
possible to define a handful of events with "names" like `delay-1',
`delay-2', etc, and that run delays with different durations - and
then both sexps below will go down and insert a "Hello", but the
second one will have delays at two places...

  (eek2 "RET Hello")
  (eek2 "RET <delay-2> Hell <delay-1> o")

I have very little practice with Org and I'll be very busy in the next
two days, but after that I will have time to run your examples.

  Cheers! =)
  Eduardo Ochs
  http://anggtwu.net/emacsconf2024.html



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Add moc to Non-GNU ELPA
  2024-12-17 17:47         ` Add moc to Non-GNU ELPA Eduardo Ochs
@ 2024-12-18  1:01           ` Psionic K
  0 siblings, 0 replies; 8+ messages in thread
From: Psionic K @ 2024-12-18  1:01 UTC (permalink / raw)
  To: Eduardo Ochs; +Cc: Psionic K, emacs-devel

> you don't encode delays as events

I will be thrilled to learn if there's another way to put these into
the event loop at human speed to replay tech demos without typing.  By
not blocking the user, I have to detect fat-fingers and abort.  I'm
glad it works, but I'm not satisfied with it.

I see the 'norecord.  Looks useful.  Thanks.

I went ahead and released 0.6.0.  The master branch and archives are
caught up again.



^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2024-12-18  1:01 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-12-16 16:52 Add moc to Non-GNU ELPA Psionic K
2024-12-17  4:40 ` Richard Stallman
2024-12-17  5:02   ` Psionic K
2024-12-17 12:00     ` Eduardo Ochs
2024-12-17 14:09       ` Psionic K
2024-12-17 15:28         ` Dslide kmacro transcription & playback [was:Add moc to Non-GNU ELPA] Psionic K
2024-12-17 17:47         ` Add moc to Non-GNU ELPA Eduardo Ochs
2024-12-18  1:01           ` Psionic K

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).