<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Breno Farias Fonseca</title>
    <description>The latest articles on DEV Community by Breno Farias Fonseca (@breno).</description>
    <link>https://dev.to/breno</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F36152%2F27124e2b-cc4f-4311-92dc-09c917064c0c.png</url>
      <title>DEV Community: Breno Farias Fonseca</title>
      <link>https://dev.to/breno</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/breno"/>
    <language>en</language>
    <item>
      <title>Why I Still Use Emacs in 2025</title>
      <dc:creator>Breno Farias Fonseca</dc:creator>
      <pubDate>Thu, 02 Oct 2025 02:21:00 +0000</pubDate>
      <link>https://dev.to/breno/why-i-still-use-emacs-in-2025-3oj9</link>
      <guid>https://dev.to/breno/why-i-still-use-emacs-in-2025-3oj9</guid>
      <description>&lt;ul&gt;
&lt;li&gt;It’s Genuinely Fun: Where else can you check the lunar phases (M-x lunar-phases) or talk to a built-in psychotherapist emulator (M-x doctor)?&lt;/li&gt;
&lt;li&gt;Is the opposite of minimalism: I can do everything from one place — reading emails, coding, creating documentation, and reviewing PRs — with consistent keybindings for all of it&lt;/li&gt;
&lt;li&gt;Modular Unix philosophy? Forget it! (not even the ls command follows this philosophy)&lt;/li&gt;
&lt;li&gt;It has a built-in pomodoro timer 😂&lt;/li&gt;
&lt;li&gt;Amazing PDF Integration: Thanks to pdf-tools, I can read PDFs, make annotations, highlight text, and navigate through my notes without ever leaving the editor&lt;/li&gt;
&lt;li&gt;Seamless Context Switching: Jumping from a Next.js project to a Scala project is straightforward and incredibly fast&lt;/li&gt;
&lt;li&gt;The editor adapts to my workflow, not the other way around&lt;/li&gt;
&lt;li&gt;Org Mode: This is my second brain. I use it to organize notes, create documents with images, links, and tables, and export them to dozens of formats. Think of Markdown on steroids. I think this is where Emacs shines&lt;/li&gt;
&lt;li&gt;Magit: A text-based user interface for Git that is simply amazing. It makes version control faster and more intuitive than any GUI I’ve used&lt;/li&gt;
&lt;li&gt;The Perfect Theme: It has the best light theme I’ve ever used:
&lt;a href="https://github.com/fniessen/emacs-leuven-theme" rel="noopener noreferrer"&gt;https://github.com/fniessen/emacs-leuven-theme&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;“Why not just use VS Code?” Don’t get me wrong, VS Code is a fantastic tool. But for me, it all comes down to muscle memory. After many years of using Emacs, it just works. When I open Emacs, the keyboard feels like an extension of my thoughts. When I open another editor, it feels like I’ve forgotten how to type.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>programming</category>
      <category>tooling</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Managing multiple terminals in Emacs</title>
      <dc:creator>Breno Farias Fonseca</dc:creator>
      <pubDate>Mon, 22 Jul 2024 00:46:49 +0000</pubDate>
      <link>https://dev.to/breno/increasing-productivity-by-better-managing-multiple-terminals-in-emacs-119c</link>
      <guid>https://dev.to/breno/increasing-productivity-by-better-managing-multiple-terminals-in-emacs-119c</guid>
      <description>&lt;p&gt;For those who utilize multiple virtual terminals in Emacs, the management of these terminals can become a challenging task. When the terminals are associated with disparate projects, the process of utilizing the terminal and editing code can become significantly slower. To illustrate, consider the scenario of opening three distinct projects, each of which employs a separate terminal. In such a situation, it would be simple to become confused and lose track of the various elements.&lt;/p&gt;

&lt;p&gt;I typically utilize &lt;em&gt;vterm&lt;/em&gt; in Emacs for the precise reason outlined in its documentation:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The use of compiled code (as opposed to ELisp) enables Emacs-libvterm to function fully, with high speed and the capacity to process large outputs in an uninterrupted and seamless manner.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;What methods can be used to improve the management of multiple virtual terminals in Emacs?&lt;/p&gt;

&lt;p&gt;The initial action to be taken is as follows: The terminals were designated by the project or context in use.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;(defun my-vterm-custom-buffer-name (name)
  "Open a new vterm buffer with a specified NAME."
  (interactive "sEnter buffer name: ")
  (let ((buffer (get-buffer-create (concat "*VTERM-" name "*"))))
    (with-current-buffer buffer
      (unless (derived-mode-p 'vterm-mode)
        (vterm-mode)))
    (switch-to-buffer buffer)))
(global-set-key (kbd "s-t") 'my-vterm-custom-buffer-name)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The function is located in the Emacs configuration file and, when executed, allows the user to specify the name of the desired &lt;em&gt;vterm&lt;/em&gt; buffer. In the event that no buffer with the specified name exists, the function will create a new buffer with the name of the argument that was passed, appending “*VTERM-” to the name. This newly created buffer will then be opened. To facilitate the procedure, the command “s-t” (command-t in macOS) has been utilized as a shortcut to execute the created function.&lt;/p&gt;

&lt;p&gt;The second step is to create a new buffer that will facilitate the opening of all the terminals in split windows.&lt;/p&gt;

&lt;p&gt;To accomplish this, one must open as many terminals as necessary in split windows. For those who prefer to split windows on the same vertical axis, the command is C-x 3 (&lt;em&gt;split-window-right&lt;/em&gt;). Alternatively, for those who wish to split windows on the same horizontal axis, the command is C-x-2 (&lt;em&gt;split-window-below&lt;/em&gt;).&lt;/p&gt;

&lt;p&gt;After completing the above steps, it is time to push all open windows into a single buffer. To do this, use the &lt;em&gt;ivy-push-view&lt;/em&gt; command, making sure that the ivy package is installed. When running the command, it is necessary to pass an argument specifying the desired buffer name. &lt;/p&gt;

&lt;p&gt;Now I can switch to using multiple terminals in a single buffer and locate them quickly.&lt;/p&gt;

&lt;p&gt;Dependencies:&lt;br&gt;
vterm: &lt;a href="https://github.com/akermu/emacs-libvterm" rel="noopener noreferrer"&gt;https://github.com/akermu/emacs-libvterm&lt;/a&gt;&lt;br&gt;
ivy: &lt;a href="https://github.com/abo-abo/swiper" rel="noopener noreferrer"&gt;https://github.com/abo-abo/swiper&lt;/a&gt;&lt;/p&gt;

</description>
      <category>emacs</category>
      <category>terminal</category>
      <category>elisp</category>
    </item>
  </channel>
</rss>
