notes from /dev/null

by Charles Choi 최민수


24 Nov 2025

Announcing Casual CSV

Like Make, the CSV file format will outlive us all. That said, editing a CSV file is a precarious task, as it can be easy to violate its separator and escape rules. Thankfully, the Emacs ecosystem has got you covered, with the 3rd party ELPA package csv-mode. This mode provides all kinds of conveniences including:

  • spreadsheet-like visualizing and editing of fields (field alignment)
  • separator auto-detection (comma, tab, space, etc.)
  • support for quoted fields
  • sorting by fields
  • killing and yanking fields

To aid in the discovery and usage of these features, I’m happy to announce Casual CSV, now available in the Casual v2.11.1 update on MELPA.

Screenshot of Casual CSV

One notable feature Casual CSV adds is the ability to select a region of rows to copy to the kill-ring as an Org table. This is also usable in Markdown flavors that support tables.

Closing Thoughts and Caveats

YMMV on how well csv-mode works for you as its performance is tied to the size of CSV file you are working with. If you are trying to edit a CSV file that is hundreds of megabytes in size or greater, you might want to think twice before doing this in Emacs with csv-mode.

As a general rule, I try to avoid editing CSV files in the first place, as I prefer to think of them as files for data exchange. My ideal use-case for csv-mode is really for viewing. That said, if you really need to edit a CSV file, it is best to copy it first. Casual CSV reflects this sensibility by offering a command to duplicate a file.

To get the best results out of csv-mode, I highly recommend turning on field alignment and separator auto-detection. In addition, turning off line-wrapping will aid in both visualization and navigation. The following Elisp configuration shows how to do this.

;; disable line wrap
(add-hook 'csv-mode-hook
          (lambda ()
            (visual-line-mode -1)
            (toggle-truncate-lines 1)))

;; auto detect separator
(add-hook 'csv-mode-hook #'csv-guess-set-separator)
;; turn on field alignment
(add-hook 'csv-mode-hook #'csv-align-mode)

emacs

Past Articles

13
NOV
2025

Thoughts on Funding Free Software Development

“I don’t like to dream about getting paid.”

read more
3
NOV
2025

Prototyping a Toolbar UI for Edebug

Where a prototype toolbar UI for Edebug is made available for public scrutiny.

read more
30
OCT
2025

Announcing Casual Ediff

Where an earnest attempt is made to improve the usability of Ediff for sensibilities in 2025.

read more
25
SEP
2025

Storing a Link from your Web Browser to BibTeX using Org protocol

Automate writing a BibTeX Online entry to Emacs from your web browser using Org protocol.

read more
24
SEP
2025

Announcing Casual BibTeX

Announcing Casual support for BibTeX, a bibilography database.

read more
8
SEP
2025

Announcing Numeri - an Emacs package for Roman number translation

Never not know what Super Bowl it is.

read more
24
AUG
2025

A proof of concept to put a better Emacs UI on top of Gnuplot

Where I demo a PoC of a Transient-based UI for Gnuplot and ask out loud, “should I go further?”

read more
12
AUG
2025

Fixing Emacs Page Navigation

Page navigation in Emacs only does half of what you expect. Here’s how to fix it.

read more
5
AUG
2025

Emacs Elevator Pitch: Nerd-kitch Merch

The first thing to do in software is make a T-shirt.

read more

Page 1 / 17   >

 

AboutMastodonBlueskyGitHub

Feeds & Tags
Get Scrim for macOSGet Captee for macOS

Powered by Pelican