unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* MoC for Non-GNU ELPA [was:Introducing Master of Ceremonies, a package for presentations]
@ 2024-12-10  8:04 Psionic K
  2024-12-24  2:48 ` Stefan Kangas
  0 siblings, 1 reply; 8+ messages in thread
From: Psionic K @ 2024-12-10  8:04 UTC (permalink / raw)
  To: Psionic K, Emacs developers; +Cc: bugs

Master of Ceremonies was developed as a companion to Dslide.  Both
packages aid presenting and authoring video and other content within
Emacs.

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

Master of Ceremonies (MoC) has two core commands:  `moc-focus' and
`moc-dispatch'

`moc-focus' is a valuable tool for authoring screenshots or conducting
live explanation of excerpts of Emacs buffers, usually code.  It fills
the frame with the selected region.  You can apply highlights and
occlusions to selectively reveal or emphasize parts of an expression.
It attempts to faithfully preserve the appearance of the source buffer
by propagating much display information, such as overlays and the
invisibility spec.

`moc-focus-kill-ring-save' does exactly like what it sounds like.  It
saves an expression that can be used to play back the current MoC
buffer state, including highlights and occlusions.  This is how I
create much of my content for videos using Dslide.  Because the
highlight and occlusion states are saved, the playback expressions can
cover cases that simply saving text in a babel block would not be able
to quickly re-generate on demand.

Combining `moc-focus' and `moc-kill-ring-save', one can quickly obtain
the necessary inputs for authoring content with TikTok levels of
engagement, using nothing but text and code displayed in Emacs and
some post-processing or Dslide to step through highlights.

The use cases of `moc-focus' are broad:
- make buffer excerpts full frame to show to someone farther away from
the screen
- emphasize and step through pieces of these excerpts, building them
up with contents remaining in place
- demonstrate visibility and overlay behaviors
- save SVGs with no surrounding noise to utilize Emacs display for
authoring other graphics materials
- Steps in dslide presentations (presently through babel blocks as steps)

The second command, `moc-dispatch' is a centralized collection of
utilities and controls for conducting presentations.  The utilities
include:

- `moc-fixed-frame-set' sets a resolution and will attempt to preserve
that frame through unintended changes possibly not covered by
`frame-inhibit-implied-resize t'.
- `moc-subtle-cursor-mode' is a poor man's laser pointer built in.  If
your cursor color is highly visible, then this mode makes it very
convenient to have the benefits of a cursor when doing motion but to
hide that cursor immediately after use.
- `moc-face-remap' can store presets of mass face remappings.
`moc-focus' supports default presets.
- `moc-quiet-mode' suppresses messages, though I feel like users
should be able to figure out the simple variable change without a
mode, it is what is done for now.

I will be doing a video presentation of the Transient implementation
choices, using MoC to discuss and incidentally demonstrate MoC, on my
YouTube.  My most recent Dslide update:
https://www.youtube.com/watch?v=00JEayL5Emk

Status of work:

The playback expressions have been extremely unstable.  I am holding
off on declaring them version 1.  They are all generating expressions
with ":version 0" to indicate this lack of guarantees in the short
term while I gain usage data by doing presentations and videos.  I
will update this to 1 only when I am comfortable that I can maintain
at least some backwards compatibility.

Visual line mode content works acceptably.  The default is truncation.
This decision is inferred by looking at the state of visual modes in
the source buffer.  Controls to update this in a focus buffer will
only require modest re-architecture.  Since `moc-focus' can serialize
its own replay state, it is very easy to imagine how to accomplish
updates.

The implementations of visual line and truncation support leverage
Emacs text flow behavior.  This implementation was much, much shorter
and much more reliable in terms of results.  I will not go into detail
of other paths of implementation that I tried but discarded in utter
disgust.  Re-flow and column width are coupled and riddled with
details that shall not be guessed at from Elisp.  We can do more, but
I would prefer if Emacs does more and I just update MoC to hand this
highly non-specific work over to Emacs display.  The implementations I
have delivered are about 2% of the code of implementations I
discarded.

Hooks and various bits of normal things are missing.  I will, as is
the open source way, get to them in order of need, in order of
thinking of them, and in order of clean PR.  All have the option of
hitting my Github Sponsors to encourage expedited handling.

There is no support for graphical frames and I don't even know why I
would try or why a non-graphical user would ask.

Images could be supported better.  I merely need to scale the overlays
that occur in excerpts with images.  Some doodads created with fringes
etc do not survive the scaling well and are omitted from overlay
propagation.



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

* Re: MoC for Non-GNU ELPA [was:Introducing Master of Ceremonies, a package for presentations]
  2024-12-10  8:04 MoC for Non-GNU ELPA [was:Introducing Master of Ceremonies, a package for presentations] Psionic K
@ 2024-12-24  2:48 ` Stefan Kangas
  2024-12-25  4:46   ` Richard Stallman
  0 siblings, 1 reply; 8+ messages in thread
From: Stefan Kangas @ 2024-12-24  2:48 UTC (permalink / raw)
  To: Psionic K, Emacs developers; +Cc: bugs, Philip Kaludercic, Stefan Monnier

Psionic K <psionik@positron.solutions> writes:

> Master of Ceremonies was developed as a companion to Dslide.  Both
> packages aid presenting and authoring video and other content within
> Emacs.
>
> https://github.com/positron-solutions/moc
> https://github.com/positron-solutions/moc.git
>
> Master of Ceremonies (MoC) has two core commands:  `moc-focus' and
> `moc-dispatch'
>
> `moc-focus' is a valuable tool for authoring screenshots or conducting
> live explanation of excerpts of Emacs buffers, usually code.  It fills
> the frame with the selected region.  You can apply highlights and
> occlusions to selectively reveal or emphasize parts of an expression.
> It attempts to faithfully preserve the appearance of the source buffer
> by propagating much display information, such as overlays and the
> invisibility spec.
>
> `moc-focus-kill-ring-save' does exactly like what it sounds like.  It
> saves an expression that can be used to play back the current MoC
> buffer state, including highlights and occlusions.  This is how I
> create much of my content for videos using Dslide.  Because the
> highlight and occlusion states are saved, the playback expressions can
> cover cases that simply saving text in a babel block would not be able
> to quickly re-generate on demand.
>
> Combining `moc-focus' and `moc-kill-ring-save', one can quickly obtain
> the necessary inputs for authoring content with TikTok levels of
> engagement, using nothing but text and code displayed in Emacs and
> some post-processing or Dslide to step through highlights.
>
> The use cases of `moc-focus' are broad:
> - make buffer excerpts full frame to show to someone farther away from
> the screen
> - emphasize and step through pieces of these excerpts, building them
> up with contents remaining in place
> - demonstrate visibility and overlay behaviors
> - save SVGs with no surrounding noise to utilize Emacs display for
> authoring other graphics materials
> - Steps in dslide presentations (presently through babel blocks as steps)
>
> The second command, `moc-dispatch' is a centralized collection of
> utilities and controls for conducting presentations.  The utilities
> include:
>
> - `moc-fixed-frame-set' sets a resolution and will attempt to preserve
> that frame through unintended changes possibly not covered by
> `frame-inhibit-implied-resize t'.
> - `moc-subtle-cursor-mode' is a poor man's laser pointer built in.  If
> your cursor color is highly visible, then this mode makes it very
> convenient to have the benefits of a cursor when doing motion but to
> hide that cursor immediately after use.
> - `moc-face-remap' can store presets of mass face remappings.
> `moc-focus' supports default presets.
> - `moc-quiet-mode' suppresses messages, though I feel like users
> should be able to figure out the simple variable change without a
> mode, it is what is done for now.
>
> I will be doing a video presentation of the Transient implementation
> choices, using MoC to discuss and incidentally demonstrate MoC, on my
> YouTube.  My most recent Dslide update:
> https://www.youtube.com/watch?v=00JEayL5Emk
>
> Status of work:
>
> The playback expressions have been extremely unstable.  I am holding
> off on declaring them version 1.  They are all generating expressions
> with ":version 0" to indicate this lack of guarantees in the short
> term while I gain usage data by doing presentations and videos.  I
> will update this to 1 only when I am comfortable that I can maintain
> at least some backwards compatibility.
>
> Visual line mode content works acceptably.  The default is truncation.
> This decision is inferred by looking at the state of visual modes in
> the source buffer.  Controls to update this in a focus buffer will
> only require modest re-architecture.  Since `moc-focus' can serialize
> its own replay state, it is very easy to imagine how to accomplish
> updates.
>
> The implementations of visual line and truncation support leverage
> Emacs text flow behavior.  This implementation was much, much shorter
> and much more reliable in terms of results.  I will not go into detail
> of other paths of implementation that I tried but discarded in utter
> disgust.  Re-flow and column width are coupled and riddled with
> details that shall not be guessed at from Elisp.  We can do more, but
> I would prefer if Emacs does more and I just update MoC to hand this
> highly non-specific work over to Emacs display.  The implementations I
> have delivered are about 2% of the code of implementations I
> discarded.
>
> Hooks and various bits of normal things are missing.  I will, as is
> the open source way, get to them in order of need, in order of
> thinking of them, and in order of clean PR.  All have the option of
> hitting my Github Sponsors to encourage expedited handling.
>
> There is no support for graphical frames and I don't even know why I
> would try or why a non-graphical user would ask.
>
> Images could be supported better.  I merely need to scale the overlays
> that occur in excerpts with images.  Some doodads created with fringes
> etc do not survive the scaling well and are omitted from overlay
> propagation.

Philip, Stefan, could you please take a look at the above request?



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

* Re: MoC for Non-GNU ELPA [was:Introducing Master of Ceremonies, a package for presentations]
  2024-12-24  2:48 ` Stefan Kangas
@ 2024-12-25  4:46   ` Richard Stallman
  2024-12-25  5:03     ` Psionic K
  0 siblings, 1 reply; 8+ messages in thread
From: Richard Stallman @ 2024-12-25  4:46 UTC (permalink / raw)
  To: Stefan Kangas; +Cc: psionik, emacs-devel, bugs

[[[ 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. ]]]

I ask that we consider choosig a more transparent and informative name
for this package.  I can see how, for people who already know about the
package, the name could fit.  But people who see only the name
will not get even a clue towards its purpose.

We can surely do better than that.

-- 
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: MoC for Non-GNU ELPA [was:Introducing Master of Ceremonies, a package for presentations]
  2024-12-25  4:46   ` Richard Stallman
@ 2024-12-25  5:03     ` Psionic K
  2024-12-25 12:20       ` Eli Zaretskii
  0 siblings, 1 reply; 8+ messages in thread
From: Psionic K @ 2024-12-25  5:03 UTC (permalink / raw)
  To: rms; +Cc: psionik, emacs-devel

eat.  sly.  ox.  gnus.  These are prefixes and their job is to not
collide when completing symbols in a language with no namespaces.

More nimble archives got there first.  Take it or leave it.



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

* Re: MoC for Non-GNU ELPA [was:Introducing Master of Ceremonies, a package for presentations]
  2024-12-25  5:03     ` Psionic K
@ 2024-12-25 12:20       ` Eli Zaretskii
  2024-12-25 13:33         ` Psionic K
  0 siblings, 1 reply; 8+ messages in thread
From: Eli Zaretskii @ 2024-12-25 12:20 UTC (permalink / raw)
  To: Psionic K; +Cc: rms, psionik, emacs-devel

> From: Psionic K <psionik@positron.solutions>
> Date: Wed, 25 Dec 2024 14:03:01 +0900
> Cc: psionik@positron.solutions, emacs-devel@gnu.org
> 
> eat.  sly.  ox.  gnus.  These are prefixes and their job is to not
> collide when completing symbols in a language with no namespaces.
> 
> More nimble archives got there first.  Take it or leave it.

Please try to answer questions asked here more to the point and
without being rude.  TIA.



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

* Re: MoC for Non-GNU ELPA [was:Introducing Master of Ceremonies, a package for presentations]
  2024-12-25 12:20       ` Eli Zaretskii
@ 2024-12-25 13:33         ` Psionic K
  2024-12-25 13:42           ` Eli Zaretskii
  0 siblings, 1 reply; 8+ messages in thread
From: Psionic K @ 2024-12-25 13:33 UTC (permalink / raw)
  To: rms; +Cc: Psionic K, emacs-devel, Eli Zaretskii

> without being rude.

Let nobody be confused.  I had requested in personal conversation that
I wished not to continue a particular manner of conversation (related
to another topic), and I considered the "question" an evasion of that
request and will confront it as such.

In any case, the discussion is over.  `mc' was vacated for a
collision.  No collisions were indicated regarding `moc'.  The package
is on MELPA, has been advertised as such, and will be maintained as
such.



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

* Re: MoC for Non-GNU ELPA [was:Introducing Master of Ceremonies, a package for presentations]
  2024-12-25 13:33         ` Psionic K
@ 2024-12-25 13:42           ` Eli Zaretskii
  2024-12-25 14:09             ` Psionic K
  0 siblings, 1 reply; 8+ messages in thread
From: Eli Zaretskii @ 2024-12-25 13:42 UTC (permalink / raw)
  To: Psionic K; +Cc: rms, emacs-devel

> From: Psionic K <psionik@positron.solutions>
> Date: Wed, 25 Dec 2024 22:33:42 +0900
> Cc: Psionic K <psionik@positron.solutions>, emacs-devel@gnu.org, 
>  Eli Zaretskii <eliz@gnu.org>
> 
> > without being rude.
> 
> Let nobody be confused.  I had requested in personal conversation that
> I wished not to continue a particular manner of conversation (related
> to another topic), and I considered the "question" an evasion of that
> request and will confront it as such.
> 
> In any case, the discussion is over.  `mc' was vacated for a
> collision.  No collisions were indicated regarding `moc'.  The package
> is on MELPA, has been advertised as such, and will be maintained as
> such.

All I can say is good luck with that attitude here.



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

* Re: MoC for Non-GNU ELPA [was:Introducing Master of Ceremonies, a package for presentations]
  2024-12-25 13:42           ` Eli Zaretskii
@ 2024-12-25 14:09             ` Psionic K
  0 siblings, 0 replies; 8+ messages in thread
From: Psionic K @ 2024-12-25 14:09 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Psionic K, rms, emacs-devel

> All I can say is good luck with that attitude here.

You know, good luck to you too.  Merry Christmas.



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

end of thread, other threads:[~2024-12-25 14:09 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-12-10  8:04 MoC for Non-GNU ELPA [was:Introducing Master of Ceremonies, a package for presentations] Psionic K
2024-12-24  2:48 ` Stefan Kangas
2024-12-25  4:46   ` Richard Stallman
2024-12-25  5:03     ` Psionic K
2024-12-25 12:20       ` Eli Zaretskii
2024-12-25 13:33         ` Psionic K
2024-12-25 13:42           ` Eli Zaretskii
2024-12-25 14:09             ` 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).