Let's talk about Emacsen: GNU Emacs, Guile Emacs, edwim, mg, etc. Do you use them? Do you like them? Do you extend them? Any tips to share? Any questions to ask?
Guile Emacs
Stalled. Immense sadness.
I don't like how Emacs recenter the screen by default. I can hit C-l myself. It's especially annoying when I use ERC or Telega, I'm used to having the line where I input text at the bottom of the screen. My old ERC settings don't work anymore on newer version of Emacs so I have these rather haxed lines in my init:
(setq scroll-margin 3
scroll-conservatively 101
scroll-up-aggressively 0.01
scroll-down-aggressively 0.01
scroll-preserve-screen-position t
auto-window-vscroll nil)
One of these days, I should set them up only for the modes where I can't do without them.
I don't fire up Gnus as much as I used to, because dead newsgroups are depressing and I don't read my mail with Gnus.
I have barely used mg, I prefer zile in the rare situations where I need a more lightweight editor.
https://www.youtube.com/watch?v=D1sXuHnf_lo
Deldo - Vibration Control and Teledildonics Mode for Emacs
https://guix.gnu.org/blog/2019/joint-statement-on-the-gnu-project/
>>4
He's the chief GNUisance and at this moment I feel so good I want to go outside and hug people.
I don't have my name on the wall of shame. My life has been good to me.
State of Emacs Lisp on Guile
https://emacsninja.com/posts/state-of-emacs-lisp-on-guile.html
>>6
The benchmark should only run the tests that have the same result in both implementations, otherwise you are measuring very different executions.
sbbs.el is pretty nifty but has anyone attempted to write a SchemeBBS mode for Edwin? I figure it could be modelled after imail mode.
Anyone have any idea how to make Emacs highlight unbound and shadowing Scheme variables? Locating errors involving these variables seems to take up a reasonable percentage of my debugging cycle, and it would be very helpful to discover them up front.
>>9
I don't know of anything like that, you'd probably have to integrate it into something like Geiser or have a collection of bound symbols (depending on the imports) of whatever Scheme implementation you use, so that these built-in variables aren't marked as unknown.
>>10
This is sort of what I feared. I'll put it off for now and consider looking into it again when I have more time.
>>9-11
I thought this was an interesting challenge and gave it a go. It was surprisingly easy to achieve using Guile's compiler infrastructure and flymake. If you actually end up using it, you might want to add every other already existing analysis to the list. It should be easy to figure out how to do it.
https://paste.textboard.org/e6c6dca0 -- guile-shadow.scm
https://paste.textboard.org/97a74add -- guile-shadow.el
For the Scheme code you will need a recent Guile, I think 3.0.3 should work but I used 3.0.4 from Guix. For the Emacs part you might want to modify at least the variables. I am not very confident in my elisp, it probably needs some improvement.
Happy hacking!
>>12
This is wild, I had no idea that you could just poke around at guile's internal representation of a program. Thanks so much for this helpful tool!
Why are info manuals not more widespread? They are by far the most convenient documentation to browse.
>>14
The main reason is probably the issue of embedding images/tables. Consider
https://www.gnu.org/software/emacs/manual/html_node/emacs/Text-Based-Tables.html#Text-Based-Tables
or
https://www.gnu.org/software/emacs/manual/html_node/elisp/Window-Sizes.html#Window-Sizes
But the again, the 'i' command super-useful.
>~6
The format supports both tables and images, although I have to admit that I've never seen either in use:
https://www.gnu.org/software/texinfo/manual/texinfo/html_node/Multi_002dcolumn-Tables.html
https://www.gnu.org/software/texinfo/manual/texinfo/html_node/Images.html
port of emacs to rust
https://github.com/remacs/remacs
This year will have a virtual emacs conference again: https://emacsconf.org/2020/
Anyone planning to present? I wouldn't mind watching a talk about sbbs.el
;-)
Does Zile have Unicode support yet?
Is Guile Emacs suitable for daily use?
>>14
Maybe Texinfo syntax alienates many potential users. Also making an HTML or PDF documentation will be easier to most using what they already know. Man pages are just necessary though now there're tools [1] to generate them fairly simple.
[1]: e.g. https://git.sr.ht/~sircmpwn/scdoc
>>17
It appears to have lost momentum. To say the truth I ain't a fan of RiiR projects for no particular reason.
sdfgadfgsdf
>>19
No ersatz Emacs supports Unicode.
>>23
This editor: https://github.com/nsf/godit is pretty close to Emacs, and looks like it supports unicode.
crdt.el is a real-time collaborative editing environment for Emacs using Conflict-free Replicated Data Types.
https://code.librehq.com/qhong/crdt.el/
Sounds amazing, I wish I had any friends to try it with.
>>25
Start two local Emacs sessions.
Is anyone aware of attempts to implement CL's reader macros (or a subset thereof) in elisp?
There's this: https://emacssurvey.org/
It's open until 30.11.2020, consider participating, so that the VSCode and Vim users don't overshadow everything.
Does anyone here use GCC-Emacs? I heard it was actually quite usable with no real issues, and it seems that it will be added to my distribution within the month.
>>29
I tried it a week ago, and it's basically as stable as master, but probably not more stable.
>>30
That's honestly not too bad, but it does temper my enthusiasm slightly. At least baring any obvious bugs in the beginning I'll try to keep it in the back of my head that any errors I'm debugging (inevitable bugs in personal functions and configuration) could be due to working on top of an unstable branch. Thanks for sharing.
I have been using it with Doom Emacs for Go development and have had no issues so far.
>>32
What have you been using for debugging?
>>32
That's good to hear as well, I think I'm just slightly overly cautious and excited because I use Emacs as my OS with EXWM and what not, and don't restart for weeks on end. Bugs which don't appear significant in some contexts are very significant to me, and performance is likewise something I'm very interested in. Although a completely asynchronous Emacs would be of even more interest to me, I am quite interested in this project.
>>34
The eccentricities of my setup meant that this Emacs GCC didn't work out.
>>35
I think I'm also going to enter a bit of an online hermitage, I'll see you guys at some later date.
>>28
Can I put this thread as an answer to "What Emacs community forums have you visited in the past year?"
>>37
No.
Man pages are the standard. What more would you ever want than what man pages offer?
>>39
More than one page, real images and working cross references.
>>41
And let's not forget an index.
>>18
This is starting tomorrow.
>>18,42
This is starting today.
Ok
No.
>>18,42,43
It's over now.
what the fuck is an emacsen
Emacs Survey 2020 results: https://emacssurvey.org/2020/
It's pretty interesting that so many emacs users used to be vim users. I wonder if the reverse is also true.
>>49
It's nice to see how many people use either vanilla emacs, or a completely custom configuration, this was one of the main things I was most worried about. Apparently icomplete isn't popular at all; maybe that will change if we can get better performance in elisp.
>>49
https://github.com/dickmao/emacs-survey/blob/main/2020/commentary.ipynb
The median evil-modalist is seven emacs-years younger than the median traditionalist.
Hopefully they will grow out of it!
For all of this war, it's depressing noone brings up the blaring problems with modern qed and ecce and that emacsen spawn don't know what ecce is, nor do vi users know what qed is.
Two tips for those of you considering running GNU Emacs on OpenBSD, other than the usual stuff like adding your user to staff.
The first is that generally speaking you want to start large applications in separate processes using for example call-process
with nil
passed as the argument to the destination
parameter, or alternatively to just start applications outside of Emacs, using dmenu or similar. This resolved many of the crashes I was having which seemed to do either with having subprocesses consuming too much memory (running PDF readers, video player, and www browser as subprocesses) for OpenBSD's relatively aggressive process limits, or simply because these subprocesses had some other issue such as a memory leak or they were violating an unveil
or pledge
rule.
The second is courtesy of the following blog since I couldn't manage to find this out myself: https://omecha.info/blog/org-capture-freezes-emacs.html Apparently there is some sort of issue with OpenBSD freezing when trying to read the SECONDARY clipboard with Latin1 encoding. This clipboard is read by org-capture, and might be used in some other modes as well, along with anything derived from org-capture. No idea why this would fix things but it does:
(setq x-selection-timeout 10)
Is there any Windows user here? Do you have any tips to make it better on Windows? Jesus, it's slow!
It ran perfectly fine on my shitty Windows tablet last time I checked
>>55
It does run perfectly, but it's noticeable slower than running it on Debian. I guess we can't have both.
>>54
I don't run Windows, but what specifically is slow for you? There are some things which are slow on all platforms like icomplete, doc-view, and very long lines; these are typically replaced by something like Selectrum, pdf-tools, and RIP respectively by users. Startup can also be slow if you have a large config, the way to fix this is to use with-eval-after-load
around packages, or the use-package
package and to temporary set the following during startup:
(setq file-name-handler-alist nil
gc-cons-threshold most-positive-fixnum)
Of course using emacs -q
to find actual errors in your configuration could also be useful.
what does emacs have that Featherpad doesn't?
Specific unique functionality, not a "hotkey to search&replace x by y".
Something that Featherpad can't do.
the "hotkey to search&replace x by y", as you so eloquently put it, is what makes emacs better to the people who use it. featherpad is pretty much just a regular editor not much different (if at all) from mousepad, gedit, etc
also emacs has tetris, a web browser and can view slideshows and non-plaintext documents, which i guess is what you meant.
>>58
Emacs is programmable. The other day I needed to proofread some text that was badly OCR-ed from a PDF file. In a few minutes I threw together some convenience functions that narrowed the text to a single page and showed the original PDF page next to it. Then with a single hotkey I could "turn a page" both in the text and the PDF. That made my job a lot less frustrating.
>>58
I guess what is interesting is that "search/replace" isn't built in to Emacs, but instead is programmed in Elisp. The same with undo, all the variations of search (regex search, word search, case-insenstive-search), and so on. It serves as an example for what potential the core has, and how it can be adapted.
https://protesilaos.com/codelog/2020-12-27-modus-themes-review-rainbow-delimiters/
I always thought people just threw their themes together by choosing random colours but apparently it's closer to engineering than I thought.
I read this an eternity ago but for some reason did not modify my config, I ended up reinventing it today and will never go back: https://with-emacs.com/posts/tips/quit-current-context/ It's insane that this isn't the default behavior honestly.
>>63
Even after doing this I have an issue where if I C-g in the minibuffer while icomplete is searching for something I simply get the [Quit] literal showing up in the prompt. If I bind my function to a different key such as C-] or M-n this does not occur. Any ideas how to make icomplete treat C-g the same way it does these other keys?
Is anyone aware of a way to display arbitrary fractions in Emacs. Something like how the raise
display property allows you to display arbitrary subscripts and superscripts? Unicode fractions don't cover many cases at all, just literal numerals, and I'm not interested in rendering images.
>>62
They certainly put a lot of thought into things that make absolutely no difference.
>>65
Nothing as well integrated as display properties, but texfrag-mode can render latex equations inline.
>>66
textfrag seems to do the image preview thing, it's kinda lame that the render seems to lack the expressiveness to display fractions, and non-linear text generally.
Why is Planet Emacslife syndicating vim tips?
>>68
god is evil
>>68
Infantile users like evil-mode, so they continue reading up on that mistake.
>>70
What about god-mode?
>>71
Better, but you might just as well use sticky-keys.
Is anyone using foot switches?
foot switches sound like they're simultaneously a really stupid and a really good idea
>>73,74
sounds fun
Just buy a $1000 keymacs bro.
>>73
I've seriously considered it a few times, not just to make using Emacs easier, but to help me keep a better posture. I'm currently squatting on my chair.
>>77
Like L in Death Note?
>>78
Basically, but unrelated. It's just bad habit that makes my knees hurt and it doesn't increase my cognitive power.
In the 90s part of Germany's air traffic control software ran on Emacs
https://old.reddit.com/r/emacs/comments/lly7po/do_you_use_emacs_lisp_as_a_general_purpose/gnvzisy/
Does modern Emacs have built-in ctags jump to definition support like vim does? I tried using it on some C++ code and couldn't get it to work.
>>81
It has tags support, but you have to distinguish between the 'tags' file (used by vi) and the 'TAGS' file (used by Emacs).
IMO the easiest way to generate the "TAGS" file is using Exuberant Ctags, and then running "ctags -Re ." in the directory of your choice.
This recursively traverses all relevant files and generates that TAGS file.
On your first M-. (xref-find-definitions) Emacs queries you where the tags are stored, you enter it and then it just works.
The only think that could interfere is if you have additional Xref backends installed (dumb-jump, Eglot, mode-local stuff, etc.) or if a major mode shadows `M-..
https://lists.gnu.org/archive/html/emacs-devel/2021-04/msg00484.html
Getting ready to land native-compilation on master
Anyone else hyped?
I avoid GNU licensed software. GPL is a cancer, and Stallman is a commie. Should be riding the old sparky, like the Rosenberg kikes.
>>84
Cool opinion.
>>83
I have built native-compilation on my system, and for my purposes I don't notice any significant difference.
I have built native-compilation on my system, and for my purposes I don't notice any significant difference.
Nevermind this, I didn't have libgccjit installed.
Stallman cultists re-invented LLVM?
>>87
Explain.
Who need s gccjit, when there is LLVM already and it has much more Aryan license without the Jewish communism crap?
>>89
OMG So true
Jewish communism BTFO
Jewish capitalism FTW
Posted from my iPhone
Capitalism brings freedom and progress. Communism brings https://en.wikipedia.org/wiki/Xinjiang_internment_camps
The only effective means of deterring trolls are server-side word-filters.
>>89
GCCJIT is ORC for LLVM, update your shitposting vocabulary.
>>92
You keep forgetting who the site admin is, almost as if he gets pleasure out of your suffering but that's assuming you're legitimate.
https://protesilaos.com/codelog/2021-04-16-emacs-moral-lessons/
Prot published a "vlog" about how he came to use emacs and what he have learned in the process of mastering emacs. Seems like emacs is not only an editor, but a wise teacher that plentifully rewards the diligent student.
What did /prog/ learn from emacs?
Does GNU/Emacs have a builtin RussiaToday viewer?
Does anyone have a good minimalist config with these features that doesn’t require downloading any extra packages?
Automatically loading tags
Highlighting white space (indents and extra stuff at the end of lines)
Line numbers in the left margin
Show-paren mode (rainbow mode would be preferable)
Testing from sbbs mode in emacs.
I'm trying to get in scheme, what are some good modes to take with that?
>>98
A lot of people recommend geiser, but in my experience it tends to be broken from time to time. Someone here recommended xscheme a while ago, so that could also be considered.
Anyone else here being bullied by coworkers for using emacs?
>>100
I don't have this issue since I'm unemployed, but I would suggest you consult ```M-x doctor```, generally some sort of professional counseling is best in these cases.
>>100
I bully others for not using it.
Does anyone here have an experience running older versions of GNU Emacs, I'm considering downgrading to 21. (20 or 19 might be even better, but would involve more porting, and archive hunting.) Especially if you still one of these old releases I'd be very interested in hearing from you.
I recently tried various EMACS derivatives other than GNU Emacs. It seems that unfortunately all of the Common Lisp Emacsen are in an unusable state, with perhaps the exception of lem which I admittedly did not try due to the addition of an electron interface which lead me to assume the project was rotten.
Although I use mg on occasion microEmacs derivatives are insufficiently powerful, with potentially the exception of EmACT which I can't easily read the documentation since it is in .doc format, and didn't feel like running.
I've heard/seen people actually running Edwin unlike most of these other applications. I could see it being a viable replacement, although haven't looked into it much.
Why would you want to run an old version?
>>104
Ideally, in pursuit of understandability, but barring that I just want less to "think" about, and certainly nothing additional on a recurring basis like changelogs. I recently deleted around half my init file, and installed packages; I feel much better off for it.
>>103,105
I decided that for the moment this isn't worth it. There are far more important things that need to be developed before understanding of Emacs would become a limiting factor on my productivity.
>>103,106
I downgraded to 25.1.1 (late-2016) in case anyone was curious. I had to replace icomplete-vertical with selectrum, and do some minor back-porting, but other than this most of my elisp just worked. I'm going to try 24.5 next since this is in my repository all ready.
>>107
What an idiotic way to waste a day or two. I did downgrade to 24.5.1 (early-2015) and with the exception of Selectrum everything I had simply worked out of the box. My understanding is that I unfortunately can't realistically go further back than 24.1 (mid-2012), and certainly no further than 23.1 (mid-2009) because there were certain modifications there which allowed for civilized ``completing-read'' based completion frameworks. Vertico seems a little nicer to me than Selectrum, so if I feel like wasting time I might give back-porting this a go.
>>108
I did attempt to downgrade to the last 23 release, as expected it didn't go very well, I got much further with vertico than with selectrum however, and I suspect it could be done if I was willing to understand vertico, along with the necessary parts of GNU Emacs. It might even be that simply backporting minibuffer.el would solve most of the issues I've been having; although, not all of them by any means.
>>109
Here is my modified version of vertico.el for GNU Emacs 24.5: https://paste.textboard.org/134c9063 it depends on seq which can be had from GNU ELPA, and subr-x.el which I copied from GNU Emacs 26.1.92. Overall the changes required were minor, and the only hack mandated was replacing minibuffer--require-match
with minibuffer-completion-confirm
which is rather unfortunate.
There is an issue I'm aware of and not sure how to resolve, namely when using multiple frames all of which are on screen the initial completion with no input does not show, and if any of the frames are not visible no completions are shown. This same bug appears in Selectrum, I'm fairly certain this is something to do with window properties or the like rather than minibuffer.el etc. I'll need to dive in further at a later date.
This same bug appears in Selectrum, I'm fairly certain this is something to do with window properties or the like rather than minibuffer.el etc.
This is apparently actually a long standing bug in truncate-lines
, combined with window-resize
; it was later fixed ... in GNU Emacs 28. Commenting out the truncate-linets
from the initialization for this minor-mode makes it usable, as does setting resize-mini-windows
to nil. I've done the latter, but this isn't a permanent fix and I'll still need to revisit in the future.
bug in
truncate-lines
, combined withwindow-resize
I think the right way to solve this would be to rewrite vertico's UI to work without truncate-lines
, and implement emulation of truncate-lines
in vertico.el such that it toggled when (eq truncate-lines t)
(setting the variable to nil as necessary to actually run).
>>110
I was able to trivially remove the minibuffer--require-match
hack, the only reason I didn't see it earlier is because I've still yet to commit my self to fully understand the program, or even have a loose understanding for that matter. All that was necessary was declaring a local variable vertico--require-match
and having this set based off the advice around completing-read-default
and completing-read-multiple
. I was hoping this would solve an issue I've noticed with tramp, but unfortunately it does not seem to.
+ (defvar-local vertico--require-match nil
+ "REQUIRE-MATCH parameter of `completing-read'.")
(defun vertico--setup (require-match)
"Setup completion UI."
(setq vertico--input t
vertico--candidates-ov (make-overlay (point-max) (point-max) nil t t)
vertico--count-ov (and vertico-count-format
(make-overlay (point-min) (point-min) nil t t)))
(setq-local resize-mini-windows 'grow-only)
(setq-local max-mini-window-height 1.0)
(setq-local truncate-lines t)
(setq-local completion-auto-help nil)
(setq-local completion-show-inline-help nil)
+ (setq-local vertico--require-match require-match)
(use-local-map vertico-map)
;; Use -90 to ensure that the exhibit hook runs early such that the
;; candidates are available for Consult preview. It works, but besides
;; that I'dont have a specific reason for this particular value.
(add-hook 'post-command-hook #'vertico--exhibit -90 'local))
(defun vertico--advice (orig &rest args)
"Advice for ORIG completion function, receiving ARGS."
- (minibuffer-with-setup-hook #'vertico-setup (apply orig args))
+ (minibuffer-with-setup-hook
+ #'(lambda () (vertico--setup (nth 3 args)))
+ (apply orig args)))
>>113
TRAMP is actually kind of terrible, has it ever worked well? There are some alternatives on EmacsWiki like Sudo Save, or using SSHFS, or Hobo Mode, etc. I may give these another look at a later date. Anyway on that particular bug (which can be worked around by the user) my best guess is that this actually has something to do with my GNU Emacs install. I might try nuking it and see if things improve at all.
I was hoping this would solve an issue I've noticed with TRAMP, but unfortunately it does not seem to.
I might try nuking it and see if things improve at all.
Completion with TRAMP works with icomplete-mode in my version of GNU Emacs, so I assume that it is not the case that my GNU Emacs install is erroneous. I'll attempt to locate the difference in implementation between these two implementations.
>>111
I solved this issue as well now, the user simply needs to set vertico-resize
to configure resizing.
(defun vertico--advice (orig &rest args)
"Advice for ORIG completion function, receiving ARGS."
(minibuffer-with-setup-hook
#'(lambda () (vertico--setup (nth 3 args)))
;; XXX When using automatic minibuffer resizing in a graphical
;; session with truncate-lines enabled there are often bugs which
;; cause the buffer to be resized to a single line bug#46718.
;; However in non-graphical sessions disabling automatic
;; minibuffer resizing can have the same effect. Further, it is
;; insufficient to `setq-local' resize-mini-windows in
;; `vertico--setup' on GNU Emacs 24.5.1 for unknown reasons.
(let ((resize-mini-windows (unless (display-graphical-p) 'grow-only)))
(apply orig args))))
>>113-115
The problem with TRAMP is that it thinks its self special, and it will eagerly clobber everything you're doing if it feels like it should. I resolved the issue I was having by removing any special treatment for it. If users want TRAMP to be convenient to use they should write a function using completing-read to establish connections before using find-file. After the connection is established completion in find-file works as expected. Anyway I've been talking to myself for long enough I think. I rebased to master, and here is my port, likely as it will be for the foreseeable future: https://paste.textboard.org/38fd7edf
>>113-115,117
I was only using TRAMP for sudo support so I've added to my config (ignore-errors (unload-feature 'tramp 'force))
and cut down sudo-ext.el to suit my needs. This is not a perfect solution as sudo-ext.el relies on sudoedit which is not available on all platforms, and is rather unworkable for remote files. https://paste.textboard.org/1caabf9a
Does any rnrs portable edwinsen have something like elpa or melpa? Hopefully without the bureaucratic issues elpa and melpa have.
>>119
I wasn't aware there were portable Edwin clones, only the MIT, and Scheme48 versions. Akku.scm tries to be portable: https://weinholt.se/articles/so-many-scheme-package-managers/ and I'm sure they wouldn't mind having Edwin extensions there (or even a portable Edwin for that matter).
>>120
I've never seen akku or snow have edwin extensions and I'm assuming something must exist even if it's a dead project from decades ago. Usual code hosts come up with about 4 edwin extensions when using the equivalent ?lang=scheme&q=edwin and they don't have a sexpr entry.
I also don't like the way akku handles srfis but other then that it's a better source once you understand (chibi) ~= r7rs. Which is worded horribly and I'm sure a (chibi package) will eventually use a chibism.
>>121
Ah, I just found one of the portable Edwinsen you mentioned. I'd expect there to be some random FTP or open-directory somewhere if anything. I don't have much time to search currently but maybe someone else knows what's up. Here's what I got just now, not quite what you want:
https://birchwood-abbey.net/~matt/Scheme/
http://mumble.net/~campbell/darcs/
>>122 not at all what you wanted actually.
>>121,122
This directory: https://mumble.net/~campbell/scheme/ contains: buflocal.scm but other than the extensions in his edwin-init.scm file I believe this is the only one in the directory. Is it possibly idiomatic to collect patches in extensions in the initialization file like this? Here are a couple more: https://logicgrimoire.wordpress.com/category/edwin/
>>116
vertico.el doesn't currently support recursive minibuffers. It would probably be best to undo the value changes in vertico--setup
both upon repeated invocation of the minibuffer and upon exiting. This should be easily done with a combination of unwind-protect
and minibuffer-setup-hook
. Also I believe the reason using set-local on resize-mini-windows
didn't take effect is that the minibuffer-setup-hook
is called after the minibuffer is initialized and resizing has to be enabled before this in my version of GNU Emacs.
>>103
But why? I mean you can do it, but Emacs has a social component where using overly outdated versions leads to you detaching yourself from others.
>>103
I'm using 24.5.1 (mid-2015) for now, and I'm unlikely to move one way or another for a while. A rational was given in >>105, although version 24.5.1 fails to achieve this for the most part. I'm not a member of any GNU Emacs communities, and so the only social component I utilize is the aspect where people I don't know write free software which I can choose to adopt or not at my discretion.
As far as why I'm so eager to not adopt this is because the community does not have the same goals as I do. If each release and new package resulted in a reduction of complexity and better abstractions then I would be eager to update and look for new packages. Selectrum, and Vertico represent such an improvement over Icicles, Helm, and Ivy, but packages like these are relatively rare (and many old timers would even consider these unnecessary using only icomplete and ido).
>>126
I meant to link >>125 rather than >>103 if that wasn't obvious to anyone. Another nice thing about running older versions is that any elisp you write automatically also supports these older versions. I'm currently writing a simple intelligence augmentation (IA) program and because I'm running 24.5.1 it will at minimum support this version, although I imagine this particular program would even run on version 20 without issue. (now it may be that writing programs which are meant to do something other than edit text or browse files in elisp is a mistake, but this is another issue entirely.)
Is it possible to make rainbow-delimiters ignore < and > in org-mode buffers? I use them for inequalities and a single > causes everything after it to be highlighted as erroneous.
I've never understood the appeal of emacs. To each their own of course but as far as i am concerned i'll probably never use it. Admittedly it not being vi is a major win but beyond that...
>>129
I've never understood it either. I have really tried to like Emacs (at least 3 times), but it still doesn't make sense to me, even after I wrote and published an Emacs plugin. Even after I started to program in Common Lisp, I still don't understand the need for Emacs and SLIME. I use Vim for text editing, and I feel that it is much simpler than Emacs.
So I have heard a lot of people who use CL talk about teaching the repl to be the program you need, and being able to change the program while it's running. What do you think about those aspects using Emacs + SLIME (I'm not an Emacs or a CL user).
So I have heard a lot of people who use CL talk about teaching the repl to be the program you need ...
That is incremental, interactive development using the REPL. I don't see the point of doing that because one has to keep track of the state of the REPL. I like immutability, so I don't like to mutate the REPL over and over. There is some obsession in the Emacs + SLIME + Common Lisp community over the ability to "send a region of text to a running REPL" in Emacs. I don't understand that obsession because that is essentially mutating the REPL's state. I easily get confused when I mutate state, especially in a long-running REPL.
... and being able to change the program while it's running.
That is hot code reloading. The Erlang and Elixir languages similarly support hot code reloading, but their programming language communities do not program by "teaching the REPL to be the program you need". Instead, during the development process, they start a new BEAM VM every time they test out their code. That just goes to show that the Common Lisp REPL development style is just a peculiar product of Lisp culture rather than something that is essential.
What do you think about those aspects using Emacs + SLIME
As explained above, I have no need for Emacs + SLIME when programming in Common Lisp. Emacs + SLIME is and should be an optional part of Common Lisp programming. Unfortunately, members of the old guard seem to believe that Emacs + SLIME are essential. In the long-term, this perceived Emacs + SLIME requirement is disadvantageous for Common Lisp, because the would-be beginners are faced with learning three things (Emacs + SLIME + Common Lisp) instead of just Common Lisp.
Note that these are my personal opinions. These are unpopular opinions that the old guard have difficulty in understanding.
I do wonder how unpopular they are. I had noticed that all the online Scheme tutorials that used Racket were resetting the repl everytime, and resending everything to it, instead of the way I did it using vim-slime, so I looked up if it was possible to send an expr to DrRacket and found this:
<https://blog.racket-lang.org/2009/03/the-drscheme-repl-isnt-the-one-in-emacs.html>
(I was also under the impression that the Lisp Machine way of developing was also the Smalltalk way of developing, but maybe I am misunderstanding)
https://blog.racket-lang.org/2009/03/the-drscheme-repl-isnt-the-one-in-emacs.html
Notice the dissent in the comments section.
I was also under the impression that the Lisp Machine way of developing was also the Smalltalk way of developing, but maybe I am misunderstanding
I believe your understanding is correct, at least when it comes to the "traditional" Smalltalk way of developing. Squeak and Pharo are "traditional", while GNU Smalltalk is not (note that GNU Smalltalk is unmaintained).
>>129
The appeal is to have a programmable, text oriented work environment. GNU Emacs specifically is the embodiment of Free Software, making it trivial for a user to access, modify and share utility and functionalities.
A common mistake is to compare Emacs to vi, whereas the better comparison is to compare the Emacs workflow with the shell workflow. In that sense, Emacs is a shell.
133,134
The Smalltalk way of developing is the Lisp Machine way, modern Lisps doesn't even come close to it.
anti-emacs posters be like: https://www.theonion.com/man-who-enjoys-thing-informed-he-is-wrong-1819571272
>>137
That is exactly how I feel whenever I write scheme in vim- "I will endeavor to enjoy the correct things in the future."
Will JEmacs (Emacs but Kawa scheme) or Guile Emacs (more interesting) ever be "finished"?
>>139
No, Edwin is done already however.
>>140
Don't forget about Hemlock!
>>141
Have you had any luck running it? I tried awhile back, the CMUCL version would crashed on me for several different reasons, and I had a similar poor experience with the portable versions.
>>136
After experiencing the Smalltalk way of developing, I feel happy that Lisp Machines are dead. I don't want Lisp Machines to be revived. I strongly prefer the edit-compile-run cycle rather than the "mutate the image" method that traditional Lispers and Smalltalkers seem to love so much.
>>136
Can't you just save-lisp-and-die (SBCL) and load the image? See recipes 22-4 22-5 from Common Lisp Recipes
>>142
The at least the ClozureCL version is usable.
>>144
That's very interesting; I'll have to give it another go in the future.
>>141
I think I'll just conveniently forget about it. We all know how it worked out for Socrates.
>>146
I don't understand the reference to Socrates. Could you explain?
>>147
Socrates was forced to drink hemlock for corrupting the youth. Voting Athenians likely thought of him as a sophist who were encouraging many mens' sons at the time to learn rhetoric so as to debate any position independent of truth. Sons flocking to learned individuals also undermined the traditional role of fathers as teachers of their sons. To add to this Socratese was the tutor of a particularly strong general who defected to the Spartans.
These are some very well done tutorials:
https://karthinks.com/software/avy-can-do-anything/
https://karthinks.com/software/fifteen-ways-to-use-embark/
I thought still Ivy and Helm were the hip things but apparently there are new players now.
>>149
These were good reading, thanks for sharing. I'm unlikely to switch from vertico (>>117) for the moment, and I couldn't watch the videos, but I'm impressed.
>>150
As far as I understand Embark works with vertico, and Avy is a completely different beast and not an alternative to any of these.
>>151
Ah, my bad, I honestly didn't read the embark article and for some reason assumed it handeled completion in addition to "dispatch".
>>151-152
Embark seems strange to me. It sounds like a more chaotic kakoune. One which doesn't fully embrace structure, isn't fully aware of when different operations apply, and is permissive of user input errors.
>>153
Isn't it the same as Ivy's actions?
>>154
I've never used Ivy or Embark, but on the pamphlet it said the difference was that Ivy had to have actions hard-coded where as this interacts with the Emacs system as it exists. Probably rather like how vertico simply modifies completing-read instead of making its own solution for everything.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Sound-Output.html
The sound must be stored as a file in RIFF-WAVE format (‘.wav’) or Sun Audio format (‘.au’).
Why these two formats? Sun Audio of all things? I don't think I've ever seen it used anywhere.
>>156
The "free software song" is distributed in the .au format.
Don't forget that emacsconf is next weekend!
https://emacsconf.org/2021/schedule/
Are there any talks that you are looking forward to in particular?
I am looking forward to "GNU's Not UNIX: Why Emacs Demonstrates The UNIX Philosophy Isn't Always The Only Answer", "A day in the life of a janitor", "How to write faster Emacs Lisp", "Don't write that package! or: How I learned to stop worrying and love emacs-devel", "CLEDE: the Common Lisp Emacs Development Environment" and "M-x Forever: Why Emacs will outlast text editor trends".
I'm starting to learn Scheme. I found out about Guile-Studio to help me with my adventure into Scheme. I learned how to use the Guile REPL to load my program and run the code.
Does anybody know about some kind of shortcut for loading and evaluating my code into the REPL? What I'm doing at the moment is that I've defined a function called ``a=='' that does ==(load "program.scm")
so that it's very quick to type into the REPL.
>>160
I have never used Guile-Studio, but since it uses Geiser, there should be a geiser-eval-buffer
command that sends everything in the current buffer to the REPL.
>>160
You could use the command geiser-load-file
(bound to C-c C-l
in Emacs) which would prompt for a file path in the minibuffer. If there's a file you want to have always loaded when you open a Guile REPL, you could add (load "program.scm")
to the ~/.guile
init file.
>>158
I expected "Introducing N-Angulator" to be a joke, but it's not. It's another attempt to apply basic library science within the confiens of UNIX. I might watch it anyway, also "Tree-edit: Structural editing for Java, Python, C, and beyond!", and "Self-Describing Smart DSL's: The Next Magits", although as it's Emacs there is almost a guarantee of the right ideas implemented wrong. I've been thinking about writing some of my own stop-gaps and they might be inspirational for this.
Here's one made in Clojure:
https://github.com/mogenslund/liquid
Seems pretty cool.
M-x calc RET
' hr / sqrt(h^2 - 2 hr) RET
a d h RET
The result I get is
1: -(h hr / (h^2 - 2 hr)^3:2)
But shouldn't it be -(r hr / (h^2 - 2 hr)^3:2)
instead? Did I misunderstand something?
Apparently 2x
is understood to be 2 times x, but rh
is its own variable and not r times h.
Did they break the indentation in org-mode? It used to align to the headline but now it just sticks to the left.
>>167
I belive that was changed in the last release, but tbh I prefer this change.
Nobody wants to mention that 28.1 was released? Or has everyone already been building from source?
>>169
Is there some big new feature in it?
>>170
Definitely: elisp can now be JIT compiled into native code! And NonGNU ELPA (https://elpa.nongnu.org/) repository is enabled by default.
M-x shortdoc-display-group
This is pretty cool.
How do I remove all the useless bloat from Emacs? Is it possible to remove all the games? (e.g. pong, snake, tetris, solitaire, dunnet, doctor, butterfly, etc.)
bloat
In the case of Emacs, you do not pay for what you do not use.
(dolist (bloat '(pong snake tetris solitaire dunnet doctor butterfly))
(fmakunbound bloat))
>>175
Wouldn't this ironically make the startup time longer?
I think you can just delete the .el files if you really want to get rid of them. But personally I have found tetris
to be really useful at work.
>>177
How is tetris
useful at work?
>>178
When your job consists of stacking and orienting packages in such a way to make most of the volume of packing space.
>>178
It makes the boredom go away.
http://metamodular.com/Essays/psychology.html
Similarly, I have heard people argue against a tool that they ignore based on the fact that it can do too much. Too much functionality in a tools is a problem only if unneeded or unwanted functionality somehow makes it harder to use the needed and wanted parts. I have heard people argue about the amount of memory a particular tool requires, whereas the additional memory required might represent a cost equivalent to a few hours of work at most. A favorite idea is to label a particular tool with a name suggesting what it ought to be doing, and then arguing that it is doing more than that. For instance, a text editor that is capable of automatic indentation would be accused of being a ``kitchen-sink'' tool because after all it does much more than allowing the user to just edit text.
Hmm... this sounds familiar. Are people who attack Emacs for being bloated just insecure about the supposed superiority of Emacs users?
>>179
Why don't you use a computer to produce acceptable solutions to your bin packing problems?
>>182
I don't know about that. That problem sounds like it's NP-hard.
ob-scheme
can execute Scheme code using a given implementation if I specify it as a parameter like this:
#+begin_src scheme :scheme guile
(+ 1 1)
#+end_src
But when I edit the block with org-edit-special
, Geiser still asks me which implementation I would like to use. Is there a way to tell Geiser that I want to use the one specified by the parameter there?
ob-scheme
can execute Scheme code using a given implementation
I can't actually get it to produce any useful output though.
I tried both ivy and helm and I consider the latter superior since it makes it so comfortable to get use of your history commands and queries being searched are not shown in retarded order.
Why does ivy seem to be more popular, though? Helm has more stars on github, but every "eceleb" youtube retard recommends to use ivy.
>>186
I chose ivy because I like the way it displays results more. I don't really care about history and the other helm advantages are minor for me.
abo-abo also made some pretty great packages like swiper and lispy
Abo-abo is sneaky slavshit who scams with unusable software, which only looks nice to peeps with shitty taste? Gotcha.
>>188
Fuck off.
The survey for 2022 has been opened: https://emacssurvey.org/. Same drill as in >>28.
There are live results available from the FAQ, the answers to what operating systems people use is seriously scary.
>>191
Most Emacs users use linux as expected
Whats scary about it?
I like Emacs.
https://andreyorst.gitlab.io/posts/2022-11-01-emacs-lisp-shorthands-as-namespacing-system/
Could some Lisp wizard explain what it means that shorthands are expanded at read time or evaluation time and why Stallman claims that Clojure is not a Lisp?
>>194
Read time - building objects from s-expressions (program text as character stream), interns all the symbols, etc.
Evaluation time - operates on objects in memory, this is where the actual magic happens
Now, I have no idea how Clojure works, and don't really feel like reading much about it, but it seems that you use a standard macro to create a namespace. Macros expand into actual Lisp code to execute, and the execution should happen on a level above Read; Eval. I'd hazard a guess that he doesn't like that this work is done at Eval step, since generally you want to do this at Read step, when symbols are interned. The way they seem to want to do it in Emacs looks similar in spirit to reader macros, so they do work at read time.
You have to keep in mind that Stallman is an old school Lisp hacker, and has VERY strong opinions on it. If I remember correctly, he hates lexical variables (and dislikes Lisps that use them), doesn't take too kindly to Common Lisp in general, and so on. This, combined with the fact that Emacs Lisp had to start small due to resource constraints, is the reason why it's sometimes difficult to work with, and why libraries like cl-lib and friends have been developed.
Software tooling reminds me of floating ladders with a person attached.
Although it looks like someone is climbing the ladder, it's the ladder moving down with each swing of arm and leg.
The person attached maintains the same position in air, pushing their ladder down.
And so these persons-attached stack ladders, moving them all downward to accomplish these heavily-related tasks:
1. To invert the problem of technology as all blissfully do: instead of finding a problem and then seeking to solve it, let's solve it and then seek a problem.
2. Though they've not moved an inch since the ladder monolith was instantiated, they can maintain that all the programming exercises have prepared them for the days to come
3. And to pin a noble hope that, through a sheer incidentals, their ladder-stacks hit the ground, and therefore start moving up.
And Cush begat Nimrod: he began to be a mighty one in the earth.
Gen 10:8 KJV
>>194
It's autism. But he's right about Clojure.
https://emacsconf.org/2022/
This happened this weekend and I completely forgot about it. Is there anything worth watching?
>>198
https://emacsconf.org/2022/talks/rms/
Stallman shaved most of his beard 😳😳😳
https://bellard.org/qemacs/
This is an interesting distribution. It has full graphicals and UTF support with a lot of interesting modes like (X|HT)ML/CSS rendering.
Also, 200GET.
>>200 you mean implementation, the term "distribution" doesn't make sense here.
>>201
The one original server where you can download a given software package would be the the original distribution source. From there, other people are welcome to redistribute the very same package from their own server and thus they'd become a "downstream distributor" for that package.
I recently updated emacs and all the packages and now when writing in org-mode, the characters appear in chunks, visibly lagging. I ran the profiler and it seems that it is bogged down by functions related to something called an org-element-cache
, which was turned on by default at the end of last year: https://blog.tecosaur.com/tmio/2022-01-31-caching.html#cache-continues-make
Specifically =org-element--cache-after-change= seems to be taking a lot of time.
Did any of you see anything similar? The blog post says that it shouldn't slow things down and I couldn't find anything on the mailing lists either, but turning it off visibly speeds things up...
>no one uses the word "distribution" that way.
Is it possible to make ediff ignore parts of the file when diffing? For example timestamps at the start of the the line. I tried using #h
but this works on "regions" instead of just line, so if every timestamp is different everywhere, the whole file gets ignored, instead of just the timestamps.
*Bringing joy to Scheme programming*
https://emacsconf.org/2023/talks/scheme/
Talk about Lisp development workflows, REPLs, and modern Scheme tooling for Emacs.
Pretty cool!
>>206
Nice.
There's a function in a third party library that puts something on the kill ring that I want to use from my own function, but I don't want to pollute the user's kill ring. I ended up with this:
(let ((old-kill kill-ring))
(unwind-protect
(progn
;; stuff that messes with the kill ring here
)
(setq kill-ring old-kill)))
It seems to work but I was sure there would be something that already did this, but I couldn't find anything. Is doing something like this frowned upon? Or why couldn't I find anything?
>>206
Good talk. This one is very good too.
The Emacsen family, the design of an Emacs and the importance of Lisp.
Lem is a nice Emacsen implementation.
Interesting project.
https://lem-project.github.io
Has anyone used Linus Torvalds' fork of uEmacs? I've used it on ocassion. I know it's his own fork, so he can do whatever he wants, but I still don't get why he mapped the save key binding to C-x C-d lol
>>210
Just tried this out with Racket. Feels "cleaner" and more responsive than GNU Emacs, but I couldn't find an equivalent to racket-run or eval-buffer command, and I needed to use a separate terminal to spawn the Racket REPL process. Trashed it for now, but seems promising.
>>184
It's so annoying, sometimes it even asks when visiting an org file with embedded Scheme code. I can't figure out what to do.
>>210
I've tried this long ago https://github.com/lem-project/lem/issues/43 A sane lisp environment to replace elipth, too bad I can't replace emacs yet https://github.com/lem-project/lem/issues/602
https://github.com/emacs-lsp/dap-mode#Summary
https://build-server-protocol.github.io/docs/specification#relationship-with-lsp
Yes it's personal preference to use my scheme ide with other languages and have the support for those other languages be warded off. Why deal with a buggy lem extension trying it's own nih take on ocaml completion?
I'd call out false advertising but it's a fair project regardless. Like to know more about how much lem extensions use lemmington or some issue tracking native org babel support. Also wish to know how lem handles multiple embedded languages https://www.emacswiki.org/emacs/MultipleModes
What a shame that there are multiple multiple mode modes. As soon as you need mode X that requires multiple mode M1, while already using another mode which uses multiple mode M2, you’re loading far more than you need to. Just because TIMTOWTDI (sorry for the perl-ism) doesn’t mean you must do it more than one way.
I'd really hope lem won't have this issue https://lem-project.github.io/usage/extension_modes or at minimum avoid it for the common case of embedded languages.
>>211
I have. It's alright. His save keybinding is a little weird, but it works
Тетрисp ╰( ͡° ͜ʖ ͡° )つ──☆*:・゚
https://github.com/lem-project/lem/blob/main/contrib/tetris/tetris.lisp
I just found out Emacs comes with a REPL: M-x ielm
Previously, I have always used the *scratch* buffer for similar purposes.
You can make `ielm' evaluate your sexprs in a different buffer with `ielm-change-working-buffer' (usually bound to C-c C-b
). It's much more comfortable than running `eval-expression' (usually M-:
) to mess around while developing modes.
>>217
Yep, it's pretty gud.