!emacs
@lemmy.ml... more an annoyance really, and not elfeed's fault at all but ...
[first posted on reddit/r/emacs but probably more interesting here]
lemmy RSS feeds (such as "https://lemmy.ml/feeds/c/emacs.xml") often (but not always) have mis-guided "Link:" elements which target an external link, an image file or other material instead of the lemmy post itself. Consequently, hitting 'b' elfeed-search-browse-url may send one on a surprising if not always useful journey.
eg
Title: Keymacs, a program to generate Emacs keybindings | Plain DrOps
Author: https://feddit.de/u/DrOps
Date: Tue, 23 Apr 2024 23:35:25 AEST
Feed: Lemmy - emacs
Tags: emacs, lemmy
Link: https://plaindrops.de/blog/2024/keymacs/
submitted by DrOps to emacs
8 points | 2 comments
https://plaindrops.de/blog/2024/keymacs/
In this case, the link to lemmy itself is in the "2 comments" => https://lemmy.ml/post/14798221
Here's a little hook to fix it up - it also marks the entry with the tag 'lemmy-fixed' ...
(defun elfeed-fix-lemmy-link (entry)
"Fix lemmy.ml RSS feed links in elfeed."
(when-let ((url-base-regexp "https://lemmy\\.ml/")
(feed (elfeed-entry-feed entry))
(feed-url (elfeed-feed-url feed))
((string-match-p (concat url-base-regexp "feeds/c/") feed-url))
(entry-link (elfeed-entry-link entry))
(link-url-regexp (concat url-base-regexp "post/[0-9]+"))
((not (string-match-p link-url-regexp entry-link))))
(when-let ((content (elfeed-deref (elfeed-entry-content entry))))
(let ((lines (split-string content "\n")))
(dolist (line lines)
(when (string-match link-url-regexp line)
(let ((post-link (substring line (match-beginning 0) (match-end 0))))
(setf (elfeed-entry-link entry) post-link)
(elfeed-tag entry 'lemmy-fixed)
(message "Fixed lemmy link in elfeed: %s" post-link)
(cl-return))))))))
(add-hook 'elfeed-new-entry-hook #'elfeed-fix-lemmy-link)
Thanks to u/karthik for getting me started with this. The crappy elisp is mine not his (roast me!)
I was working with NPM package.json files a lot lately and I often found myself saving them in an unparseable state. json-ts-mode highlights syntax errors in yellow but it wasn't enough.
I didn't want to use flymake-eslint becuase it requires having the jsonlint binary in the PATH and I just wanted a simple Lisp solution.
The code tries to parse the current buffer on save using Emacs' built-in json-parse-string and moves the cursor to the location of the parsing error if it fails.
The below code naively assumes that the saved buffer is always the current buffer, which may very well not be the case (e.g. (save-some-buffers)).
It also probably won't save JSON5 files which have // comments inside
because json-parse-string won't handle that.
(defun rtz/json-parse-pre ()
(interactive)
(if (eq major-mode 'json-ts-mode)
(condition-case err
(progn
(json-parse-string
(buffer-substring-no-properties
(point-min)
(point-max)))
nil)
(json-parse-error
(goto-char (nth 3 err)) (error err)))))
(setq write-file-functions '(rtz/json-parse-pre))
A new backend for Gnus which I have been developing for a while was merged today into Emacs - you can now fetch and read Atom feeds right from Gnus.
The backend is extremely customizable, allowing you to swap any parsing function with a custom implementation (I use this feature to display youtube video descriptions from youtube channel Atom feeds, which are otherwise not picked up by the backend since they don't appear in a standard location, and also to be able to supply a youtube channel name instead of its web address to add it; see https://git.sr.ht/~dsemy/emacs-config/tree/master/item/init.d/init-programs.el#L90 if you're curious).
This is a result of this backend being actually made of two backends - an "abstract" backend (nnfeed) which handles feed data storage, talking to Gnus, and defining server variables which will hold parsing functions, and another (nnatom) which actually provides these parsing functions. This also means it is very simple to define new "feed-like" backends, since you don't need to implement data storage or the Gnus backend interface, only some parsing functions (their requirements are also designed to be fairly generic, so it would be easy to handle various types of feeds. nnfeed itself makes very little assumptions about the feed type).
It should be available with Emacs 30 (or right now from Git).
https://plaindrops.de/blog/2024/keymacs/
For sure, I’m heading straight to Emacs hell for this.
https://protesilaos.com/codelog/2024-03-27-emacs-consult-denote-developer-preview/
consult-denote is a work-in-progress package to integrate the Denote and Consult Emacs packages.
In vim terminal I use C-[
for ESC to escape from insert mode a lot, but didn't know C-[
works in GUI version of Emacs until recently. Since Meta can be replaced with ESC, we can enter C-M-s
, for example, with C-[ C-s
.
As a long time Vimmer, I have recently started using Emacs out of sheer curiosity. I chose Doom Emacs as it has evil-mode enabled by default, and do not want to dive down the rabbit hole of configuring the editor from scratch (at least, not yet!).
After installing and enabling libvterm
in Emacs, I am having a frustrating experience. I configured ZSH shell to use vi-mode keybindings which interferes with evil-mode whenever I press Esc
or C-[
.
After having searched a little, I came across a workaround to disable evil-mode when in vterm. But it is still not a smooth experience. For instance, when switching between buffers (C-w C-w
).
I would like to know how others in the community tackled this problem. Is there a better solution to this problem? Or have you made peace with the aforementioned workaround? Or have you stopped using vterm entirely?
https://www.masteringemacs.org/article/lets-write-a-treesitter-major-mode
Creating a standard programming major mode presents significant challenges, with the intricate tasks of establishing proper indentation and font highlighting being among the two hardest things to get right. It's painstaking work, and it'll quickly descend into a brawl between the font lock engine and your desire for correctness. Tree-sitter makes writing many major modes a snap: here I demonstrate how to write a working indentation and font lock engine for HTML.
https://protesilaos.com/codelog/2024-03-24-denote-2-3-0/
Information about the latest version of my Denote package for GNU Emacs.
https://lists.gnu.org/archive/html/emacs-devel/2024-03/msg00611.html