all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: "Dr. Arne Babenhauserheide" <arne_bab@web.de>
To: emacs-devel@gnu.org
Subject: Re: 10 problems with Elisp, part 10
Date: Tue, 06 Aug 2024 09:14:57 +0200	[thread overview]
Message-ID: <87mslqceby.fsf@web.de> (raw)
In-Reply-To: <874j7ypvr4.fsf@dataswamp.org> (Emanuel Berg's message of "Mon, 05 Aug 2024 22:20:15 +0200")

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

Emanuel Berg <incal@dataswamp.org> writes:

> Dr Arne Babenhauserheide wrote:
>
>> After having seen how I could write interactive indentation
>> highlighting in wisp-mode in a few hours of hacking and
>> a few dozen lines of code [...]
>
> Excellent, now have a look at ispell.el - 4 323 lines - or
> flyspell.el that is 2 393 lines - you can reduce it a lot,
> I take it.

That’s not my point.

My point is that the buffer as abstraction is already pretty good.

If you forgo that, you add a lot of complexity with finding the right
entry points, defining how elisp should interact with text — all while
increasing the separation from regular editing, so creating a package
requires a higher up-front investment to find the right APIs.

As a counter-point: An example of a higher level of abstraction is the
org-mode API. But thinking back how long it took me to get that to
actually do what I needed, I doubt that that’s the model I want for most
packages. But I agree that without this, what I wrote would have been
more brittle.
Another example for specialized APIs that are used by others, too, are
completion APIs — auto-complete or company.


Currently Emacs is the environment I know that has the lowest barrier of
entry for writing a package. To check my memory on that, I now looked at
an IntelliJ plugin that just does replace-regex, and that clocks in at
about 200 LOC, using specialized entry points. To get another sample, I
checked a VS-code extension that just flashes the region on copy. To
implement the equivalent of
    (if mark-active (list (point) (mark)) '())
it needs 20 lines of code.


That said: going by the example of the orgmode API and completion APIs,
building specialized APIs for certain tasks and releasing them as
packages could be a way to move forward to experiment with abstractions.
If similar APIs prove useful for very different tasks, and other people
start using them, that would build a case that generalizing them and
integrating them in Emacs and elisp as a default API could be a good way
forward.


Best wishes,
Arne
-- 
Unpolitisch sein
heißt politisch sein,
ohne es zu merken.
draketo.de

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 1125 bytes --]

  reply	other threads:[~2024-08-06  7:14 UTC|newest]

Thread overview: 109+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-08-04 22:27 Emacs website, Lisp, and other Jeremy Bryant
2024-08-04 22:55 ` Emanuel Berg
2024-08-05  4:29   ` Emanuel Berg
2024-08-05  9:23   ` Christopher Dimech
2024-08-05 10:43     ` Emanuel Berg
2024-08-05 11:37       ` divya
2024-08-05 11:56         ` Christopher Dimech
2024-08-05 12:33         ` Eli Zaretskii
2024-08-05 11:45       ` Christopher Dimech
2024-08-05 12:56       ` Dr. Arne Babenhauserheide
2024-08-05 13:16         ` Dr. Arne Babenhauserheide
2024-08-05 14:46           ` Christopher Dimech
2024-08-05 21:28             ` Dr. Arne Babenhauserheide
2024-08-05 14:55         ` Eli Zaretskii
2024-08-05 12:28     ` Eli Zaretskii
2024-08-05 16:27       ` 10 problems with Elisp, part 10 (was: Re: Emacs website, Lisp, and other) Emanuel Berg
2024-08-05 16:38         ` Eli Zaretskii
2024-08-05 17:03           ` Emanuel Berg
2024-08-05 18:32             ` 10 problems with Elisp, part 10 Dr. Arne Babenhauserheide
2024-08-05 20:20               ` Emanuel Berg
2024-08-06  7:14                 ` Dr. Arne Babenhauserheide [this message]
2024-08-06  7:21                   ` Org mode API (was: 10 problems with Elisp, part 10) Ihor Radchenko
2024-08-06  8:23                     ` Org mode API Dr. Arne Babenhauserheide
2024-08-10 16:55                       ` Ihor Radchenko
2024-08-06 11:54                   ` 10 problems with Elisp, part 10 Eli Zaretskii
2024-08-08  2:01                     ` Richard Stallman
2024-08-09 22:39                       ` Emanuel Berg
2024-08-13  1:28                         ` Richard Stallman
2024-08-09 22:46                     ` Emanuel Berg
2024-08-10  5:41                       ` Emanuel Berg
2024-08-10  6:09                         ` Eli Zaretskii
2024-08-13  1:28                       ` Richard Stallman
2024-08-05 18:58             ` 10 problems with Elisp, part 10 (was: Re: Emacs website, Lisp, and other) Christopher Dimech
2024-08-05 19:30               ` 10 problems with Elisp, part 10 Dr. Arne Babenhauserheide
2024-08-05 20:02                 ` Christopher Dimech
2024-08-08  2:01                   ` Richard Stallman
2024-08-06  2:28                 ` Eli Zaretskii
2024-08-05 17:13         ` 10 problems with Elisp, part 10 (was: Re: Emacs website, Lisp, and other) Yuri Khan
2024-08-06  6:39         ` Emanuel Berg
2024-08-06 11:16         ` Richard Stallman
2024-08-06 22:08           ` Emanuel Berg
2024-10-23 19:25         ` Jean Louis
2024-10-23 21:13           ` Emanuel Berg
2024-10-23 21:36             ` Jean Louis
2024-10-25  6:44               ` Emanuel Berg
2024-10-28  3:27                 ` 10 problems with Elisp, part 10 Joel Reicher
2024-10-24  6:48             ` Dr. Arne Babenhauserheide via Emacs news and miscellaneous discussions outside the scope of other Emacs mailing lists
2024-08-05 20:03   ` Emacs website, Lisp, and other Alan Mackenzie
2024-08-05 21:07     ` Christopher Dimech via Emacs news and miscellaneous discussions outside the scope of other Emacs mailing lists
2024-08-06  7:42     ` Jean Louis
2024-08-06 11:14     ` Immanuel Litzroth
2024-08-05 11:56 ` Eli Zaretskii
2024-08-06 19:09   ` Jeremy Bryant
2024-08-06 19:50     ` Christopher Dimech
2024-08-06 20:35       ` [External] : " Drew Adams
2024-08-06 22:10         ` Dr. Arne Babenhauserheide
2024-08-06 22:48           ` Christopher Dimech
2024-08-06 23:09           ` Drew Adams
2024-08-06 23:21             ` Christopher Dimech
2024-08-07  1:09               ` Dr. Arne Babenhauserheide
2024-10-23 19:45             ` Jean Louis
2024-10-23 20:25               ` Drew Adams via Emacs news and miscellaneous discussions outside the scope of other Emacs mailing lists
2024-10-23 20:50                 ` Jean Louis
2024-10-23 21:21                   ` Drew Adams via Emacs news and miscellaneous discussions outside the scope of other Emacs mailing lists
2024-10-23 21:37                     ` Jean Louis
2024-08-06 22:26         ` Christopher Dimech
2024-08-07  5:45         ` Emanuel Berg
2024-08-15  3:53           ` Madhu
2024-08-15  5:50             ` Emanuel Berg
2024-08-15  9:17               ` Madhu
2024-08-15  9:57                 ` Emanuel Berg
2024-10-23 19:48                   ` Jean Louis
2024-08-15  6:17             ` Emanuel Berg
2024-08-15  7:10               ` Eli Zaretskii
2024-08-15  8:06               ` Emanuel Berg
2024-08-15  9:27                 ` Emanuel Berg
2024-08-15 16:03                   ` Emanuel Berg
2024-10-23 19:52               ` Jean Louis
2024-10-23 19:41       ` Jean Louis
2024-10-24  6:39         ` Dr. Arne Babenhauserheide via Emacs news and miscellaneous discussions outside the scope of other Emacs mailing lists
2024-08-07 11:13     ` Eli Zaretskii
2024-08-07 12:03       ` Andrea Corallo
2024-08-07 12:16       ` Christopher Dimech
2024-08-08  2:01         ` Richard Stallman
2024-08-08  6:51           ` Joel Reicher
2024-08-07 12:31     ` Christopher Dimech
  -- strict thread matches above, loose matches on Subject: below --
2024-08-06 17:38 10 problems with Elisp, part 10 Abraham S.A.H. via Emacs development discussions.
2024-08-07  7:44 ` Emanuel Berg
2024-08-07 11:30   ` Christopher Dimech
2024-08-07 18:57 Abraham S.A.H. via Emacs development discussions.
2024-08-07 20:46 ` Sebastián Monía
2024-08-08  4:58 ` Eli Zaretskii
2024-08-08  5:40   ` Christopher Dimech
2024-08-08  6:00 ` Dr. Arne Babenhauserheide via Emacs news and miscellaneous discussions outside the scope of other Emacs mailing lists
2024-08-09  7:08 ` Emanuel Berg
2024-08-09  8:21   ` Dr. Arne Babenhauserheide
2024-08-09  8:36     ` Emanuel Berg
2024-08-09 10:46       ` Eli Zaretskii
2024-08-09 22:27         ` Emanuel Berg
2024-08-09 13:47       ` Eduardo Ochs
2024-08-09 14:03         ` Emanuel Berg
2024-08-09 22:47       ` Bob Rogers
2024-08-09 23:21         ` Emanuel Berg
2024-08-10  5:56           ` Eli Zaretskii
2024-08-11  2:12       ` Richard Stallman
2024-10-23 20:11   ` Jean Louis
2024-10-23 20:06 ` Jean Louis
2024-10-29 13:42   ` Abraham S.A.H. via Emacs news and miscellaneous discussions outside the scope of other Emacs mailing lists
2024-08-09  7:21 Johan Myréen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87mslqceby.fsf@web.de \
    --to=arne_bab@web.de \
    --cc=emacs-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.