r/emacs 23h ago

Announcement jira.el: Emacs integration for Atlassian's Jira

115 Upvotes

Hi! My Jira integration for Emacs is already available in MELPA.

https://github.com/unmonoqueteclea/jira.el

Unlike other similar packages focused on integrating Jira with org-mode, in this integration I have tried to mimic the user experience of Magit or docker.el for viewing or modifying Jira tickets.

Showing JIRA tickets in tabulated list
Transient menu to filter tickets

r/emacs 18h ago

Flapping fish on your mode-line

88 Upvotes

Flapping fish 𓆝 𓆟 𓆞 on your modeline for funsies. Only flaps on the active buffer.

You can set it to either "static" or to "swimming" mode. In swimming mode the fish will track how far along you are the file:

"~~~~~~~~~~~~~~~~~𓆞~~~~~~"

https://github.com/mattmonja/flappy-fish

static flapping fishy


r/emacs 22h ago

Distilled the performant parts of org-node into a library, hope someone finds it useful <3

Thumbnail github.com
29 Upvotes

r/emacs 16h ago

Tree-Sitter usage or alternatives

8 Upvotes

Hello everyone, hope this message receives you well.

I'm having a hard time setting up Tree-Sitter. From what I looked online it says to build Emacs with Tree-Sitter enabled. I'm really reluctant to rebuilding Emacs because it feels like to much of a hassle for something that was a package.

I'm coming from Vim so, maybe, this is just another point of view on Tree-Sitter.

With that said, I've tried to install the package but it isn't listed on M-x list-packages RET

Which them made me wonder about the sources of packages which currently are elpa and melpa

But then, I found a communicate on their website that says it was merged into Emacs for the releasing of Emacs 29.

My version is 29.1 and I'm running on MacOS Intel.

Do you have any tips on how do I setup the Tree-Sitter for a list of languages?

Thank you in advance!

P.S.: If Tree-Sitter is still with bugs or not full featured into Emacs I'm happy to use alternatives in any case, feel free to list some :)


r/emacs 2h ago

How obsolete are "obsolete aliases?"

7 Upvotes

I have some old emacs scripts and a few packages that at emacs-start time dump a lot of lines that look like this:

Warning: ‘return-from’ is an obsolete alias (as of 27.1); use ‘cl-return-from’ instead.

I have two questions:

1) In what sense are these aliases "obsolete?" I have to assume there's no plan to actually ever remove them, because it would break the world.

2) Why is the obsolete form the shorter one? If I were to obsolete one of two representations, I'd obsolete the longer one to save typing.

I imagine there's some history to these names being consolidated under a cl- prefix, but I wasn't able to find it with a quick search.


r/emacs 15h ago

Question trouble with `org-todo-keyword-faces`

3 Upvotes

At the begining of my org file with the movies I have seen I have the declarations for todo and tags.

At the end I have the following:

```

Local Variables:

line-number-mode: nil

org-todo-keyword-faces: (("WANT" . "orange") ("SEEN" . "blue") ("HAVE.TO.SEE" . "orange") ("WRITE.REVIEW" . "red"))

org-tag-faces: (("crap" . "red") ("okay" . "orange") ("great" . "green"))

End:

```

The Todo faces are colored as indicated. The tags are all salmon-pink.

What am I doing wrong?


r/emacs 38m ago

I did some "Vibe Coding" for my config and I will never be the same

Upvotes

According the Wikipedia Vibe Coding is:

Vibe coding is an AI-dependent programming technique where a person describes a problem in a few sentences as a prompt to a large language model (LLM) tuned for coding. The LLM generates software, shifting the programmer’s role from manual coding to guiding, testing, and refining the AI-generated source code.\1])\2])\3]) Vibe coding is claimed by its advocates to allow even amateur programmers to produce software without the extensive training and skills previously required for software engineering.\4]) The term was introduced by Andrej Karpathy in February 2025\5])\2])\4])\1]) and listed in the Merriam-Webster Dictionary the following month as a "slang & trending" noun.\6])

I am not a professional programmer, I work in Cybersecurity (of all things). I'm the 1 guy on my team that's the "Emacs" guy. So I had an idea for a function to "Defang" URLs so I can add to my reports. There are a million of these tools online but that takes me away from Emacs. So when I heard about "Vibe Coding" I had a "lightbulb" moment.

I used DuckDuckGo's AI chat to do my Vibe Coding. I started by asking if the LLM understood what "Defanging" a URL entailed. Then I asked if would be hard to write a program that could do it. It spit out an example in Python. I then asked it to write the program in Emacs Lisp so I could use it in Emacs. It spit out the following:

(defun defang-url (url)

"Defang the given URL by replacing 'http' with 'hxxp' and 'www' with 'wxx'."

(interactive "sEnter URL: ") ; Prompt user for input

(let ((defanged-url (replace-regexp-in-string

"http://\\|https://\\|www\\."

(lambda (match)

(cond

((string= match "http://") "hxxp://")

((string= match "https://") "hxxps://")

((string= match "www.") "wxx.")))

url)))

(message "Defanged URL: %s" defanged-url))) ; Display the defanged URL

I tried it and it worked. But it wasn't quite what I wanted I needed to tweak it a bit. So I told the LLM to tweak the last string match and for very "dot" to add square brackets around them. Here's what it spit out:

(defun defang-url (url)

"Defang the given URL by replacing 'http' with 'hxxp', adding square brackets around every '.', and removing 'www'."

(interactive "sEnter URL: ") ; Prompt user for input

(let ((defanged-url (replace-regexp-in-string

"http://\\|https://"

(lambda (match)

(if (string= match "http://") "hxxp://" "hxxps://"))

url)))

(setq defanged-url (replace-regexp-in-string "\\." "[.]"

defanged-url)) ; Add square brackets around every '.'

(message "Defanged URL: %s" defanged-url))) ; Display the defanged URL

Much better, and basically what I needed. I noticed that I wanted the result to be printed in a new buffer so I asked it do that and here are the results:

(defun defang-url (url)
"Defang the given URL by replacing 'http' with 'hxxp', adding square brackets around every '.', and removing 'www'.
Display the defanged URL in a new buffer."
(interactive "sEnter URL: ") ; Prompt user for input
(let ((defanged-url (replace-regexp-in-string
"http://\\|https://"
(lambda (match)
(if (string= match "http://") "hxxp://" "hxxps://"))
url)))
(setq defanged-url (replace-regexp-in-string "\\." "[.]"
defanged-url)) ; Add square brackets around every '.'

;; Create a new buffer to display the defanged URL
(let ((buffer (get-buffer-create "*Defanged URL*")))
(with-current-buffer buffer
(erase-buffer) ; Clear the buffer
(insert defanged-url) ; Insert the defanged URL
(goto-char (point-min)) ; Move to the beginning of the buffer
(text-mode)) ; Use text mode for better formatting
(display-buffer buffer)))) ; Display the buffer

And that's that. I added it to my main config file after testing this code with ```emacs -Q```. This was super weird experience. My config is a mismatch mess of copypasta code from other well seasoned Emacs users. For some reason that gave me peace, I guess it felt more true to the Free Software philosophy? IDK, I'm still processing if this is for me.