hacker-news-custom-logo

Hackr News App

82 comments

  • k_bx

     

    6 hours ago

    next

    [ - ]

    > — Sensible file handling: backups and auto-saves in a cache/ directory, recentf for recent files, clean buffer naming with uniquify

    It's crazy to me how out of the box when you edit nginx file at /etc/nginx/sites-enabled/foo it creates another file foo~ there and nginx tries to load that too

    When I tried to ask emacs reddit community they started attacking me for changing the default that only I need and fits everyone perfectly.

    Still can't believe I'm the only one finding that default amazingly bad.

    reply

    praptak

     

    2 hours ago

    parent

    next

    [ - ]

    [ x ]

    <@k_bx> I also set create-lockfiles to nil. I think you can theoretically keep the lockfiles and the clean directory by using lock-file-name-transforms to place the lockfiles somewhere sensible but I didn't bother.

    Without this I had to be careful not to acciddentally commit stuff like ".#filename.txt".

    reply

    baby

     

    6 hours ago

    parent

    prev

    next

    [ - ]

    [ x ]

    <@k_bx> I raise you my .DS_store

    reply

    AJRF

     

    2 hours ago

    parent

    prev

    next

    [ - ]

    [ x ]

    <@k_bx> Surprised to hear people told you not to change that - one of the earliest bits of advice I got on using emacs is to set the location of those files to a hidden directory in your home folder.

    reply

    k_bx

     

    1 hour ago

    root

    parent

    next

    [ - ]

    [ x ]

    <@AJRF> I was proposing to make default where those files are not created, since Emacs is actually surprisingly great out of the box with no configuration, except for this "little" thing. Apparrently, some people believe it's perfect as it is

    reply

    mksybr

     

    1 minute ago

    root

    parent

    next

    [ - ]

    [ x ]

    <@k_bx> It should default to a single location maybe a XDG directory instead of polluting every directory

    reply

    parasti

     

    3 hours ago

    parent

    prev

    next

    [ - ]

    [ x ]

    <@k_bx> I would fault nginx here instead. Tilde-suffixed backups is an old convention used by vim and emacs among others. Definitely older than nginx.

    reply

    sshine

     

    2 hours ago

    root

    parent

    next

    [ - ]

    [ x ]

    <@parasti> The ~foo as backup convention is not part of any standard.

    Using hidden files is a stronger convention, e.g. .foo.swp or .foo~.

    But nginx's sites-enabled also doesn't filter those.

    It's a very simple mechanism that assumes what you put in that directory is a website configuration.

    Adding backup files here and there is considered spam, no matter how old it is.

    It's the second thing I fix in either Vim or Emacs: Put backup files in a central location. (The first is proper indentation/spacing rules.)

    reply

    scbrg

     

    2 hours ago

    root

    parent

    next

    [ - ]

    [ x ]

    <@sshine> > The ~foo as backup convention is not part of any standard.

    Emacs does foo~ by default, not ~foo.

    In either case, you're not really supposed to edit files in sites-enabled. That directory is expected to contain symlinks to files in sites-available. I'm not going to say with any certainty that one of the reasons for this indeed is that the pattern (which was used by apache as well - and perhaps other things before it) protects against accidentally reading backup files, but it's not impossible.

    So there's definitely a case of holding it wrong if you end up with backup files in that directory.

    reply

    jibal

     

    2 hours ago

    root

    parent

    prev

    next

    [ - ]

    [ x ]

    <@sshine> There was no mention of ~foo

    reply

    rolandog

     

    2 hours ago

    root

    parent

    prev

    next

    [ - ]

    [ x ]

    <@sshine> > The ~foo as backup convention is not part of any standard. > [...] > It's the second thing I fix in either Vim or Emacs: Put backup files in a central location. (The first is proper indentation/spacing rules.)

    Perhaps not a standard, but you yourself admit it's the default behavior.

    Though I agree that the simple mechanism acts ... er,... simply, shouldn't it be at the very least aware of the default behavior of common editors?

    reply

    e40

     

    5 hours ago

    parent

    prev

    next

    [ - ]

    [ x ]

    <@k_bx> Been using gnu emacs since the 80s and it’s one of the first things I changed. Did you figure it out? If not I can dig up the answer tomorrow.

    reply

    k_bx

     

    4 hours ago

    root

    parent

    next

    [ - ]

    [ x ]

    <@e40> Yes I’ve added this to hundreds of containers and vms at this point

    (setq make-backup-files nil)

    reply

    noosphr

     

    4 hours ago

    root

    parent

    next

    [ - ]

    [ x ]

    <@k_bx> Just use tramp mode instead.

    The fact it can do multi-hop edits is far too much power for us mere mortals.

    reply

    k_bx

     

    4 hours ago

    root

    parent

    next

    [ - ]

    [ x ]

    <@noosphr> It's a very different experience:

    - I already have tmux launched, if ssh drops – I can continue

    - I don't have to match windows to ssh sessions -- just have them in my tmux

    reply

    noosphr

     

    3 hours ago

    root

    parent

    next

    [ - ]

    [ x ]

    <@k_bx> Yes, tmux vastly inferior to tramp.

    Tramp runs in your local Emacs and edits files remotely. It can also launch processes remotely and keep track of them.

    reply

    maleldil

     

    35 minutes ago

    root

    parent

    next

    [ - ]

    [ x ]

    <@noosphr> How does it handle things like LSPs?

    reply

    bandrami

     

    4 hours ago

    parent

    prev

    next

    [ - ]

    [ x ]

    <@k_bx> (setq backup-directory-alist '(("." . "~/.emacs.d/backups/")))

    First thing I do any time I install emacs.

    Note that tramp will kvetch if you do this, but it still works fine.

    reply

    draxil

     

    3 hours ago

    parent

    prev

    next

    [ - ]

    [ x ]

    <@k_bx> emacs users who are hostile to you configuring things, aren't really getting the point IMO :)

    reply

    raverbashing

     

    3 hours ago

    root

    parent

    next

    [ - ]

    [ x ]

    <@draxil> The list of things emacs users don't get seems to get longer per day so I'm not surprised at the reaction OP got, just disappointed

    (but I still think this is on nginx more than emacs - unless they really mean foo~ and not .foo~ )

    reply

    globular-toast

     

    5 hours ago

    parent

    prev

    next

    [ - ]

    [ x ]

    <@k_bx> This was one of the very first things I added to my config over a decade ago:

        (setq backup-directory-alist '(("." . ".~")))

    reply

    shevy-java

     

    5 hours ago

    parent

    prev

    next

    [ - ]

    [ x ]

    <@k_bx> I always disable those auto-backup-files features in any editor I use. Never understood why that was the default-on for so many editors.

    reply

    bandrami

     

    4 hours ago

    root

    parent

    next

    [ - ]

    [ x ]

    <@shevy-java> It made more sense when running editors over tenuous telnet connections was more common

    reply

    dhosek

     

    3 hours ago

    root

    parent

    next

    [ - ]

    [ x ]

    <@bandrami> The kids really have no idea how tenuous computing in general was back in the olden days. Some of the stability issues in the 20th century translated to modern systems would be akin to black smoke coming out of your computer if you happened to have the wrong two programs running at the same time.

    reply

    k_bx

     

    4 hours ago

    root

    parent

    prev

    next

    [ - ]

    [ x ]

    <@shevy-java> I do too, it’s just that I’ve realised that emacs-nox is awesome container / vm editor out of the box, this backup thing is the only most annoying part (and Ubuntu 22.04 emacs packages expired cert)

    reply
  • jimbokun

     

    8 hours ago

    prev

    next

    [ - ]

    This article shows how Emacs remains a beautiful, relevant project several decades after it was first created. The core design and implementation’s ability to evolve into something still useful today and competitive with modern tools is an amazing achievement.

    Also, with LLMs driving so much of current development it potentially makes Emacs even more competitive relative to modern IDEs. Development can be driven primarily by an agent like Claude Code from the command line, then navigating and tweaking the code, handling Git commits, etc with Emacs.

    I imagine an LLM would be very good at writing Elisp to leverage EMacs’ strong core functionality to make Emacs work exactly how you want. This author managed to do it by hand, but I imagine someone starting now with an LLM could get there much faster.

    reply

    widdershins

     

    2 hours ago

    parent

    next

    [ - ]

    [ x ]

    <@jimbokun> > I imagine an LLM would be very good at writing Elisp to leverage EMacs’ strong core functionality

    Yes, they are pretty good. I have set up GPTel (an excellent Emacs package for interacting with LLMs) with some tools allowing it to run Elisp, inspect files (Elisp functions know what file they were defined in, so it's easy to find stuff) and read Emacs documentation. LLMs use this to good effect, and iterate on my config very nicely.

    reply

    uncletaco

     

    2 hours ago

    parent

    prev

    next

    [ - ]

    [ x ]

    <@jimbokun> It’s interesting how your comment did not talk about anything that’s unique to emacs.

    reply
  • wilkystyle

     

    10 hours ago

    prev

    next

    [ - ]

    > That means the code is sketchy sometimes, sure, but it's in my control. I wrote it, I understand it, and when it breaks, I know exactly where to look.

    This resonates with me so hard. I'm not a "no external packages" purist, but there are a number of pieces of functionality that I wrote for myself because there wasn't anything quite like what I wanted.

    One example is a function to expand the region (selection) to any arbitrary set of pairing delimiters that I define in a defvar (parens, quotes, brackets, or I can can supply a custom left/right regex for matching). Then, when I execute the function, it waits for a second keypress, which is the trigger key I've defined for that matching pair, and it will expand the region to the left and the right until it meets the applicable delimiter.

    Repeating the same key presses results in selecting the left and right delimiters themselves, and another repeat will extend to the next set of matching delimiters, and so on.

    Even though I use a treesitter-based expand-region plug-in, my custom function is still invaluable for when I want to jump past a series of valid treesitter object expansions, or when certain text objects are just not defined in treesitter.

    Some of the helpful custom expansions I have defined are:

    "w" to select what Vim considers a lowercase-w word

    Space to select what Vim considers an uppercase-W word

    "$" to select ${...}-style expressions

    "/" to select everything between forward slashes

    "*" to select between asterisks (useful when editing markdown)

    It's really an invaluable function for me, personally, but I always talk myself out of trying to open-source it because it has some gotchas and limitations, and I just don't want to be on the hook for trying to make everyone who uses it happy.

    reply

    throwaway27448

     

    10 hours ago

    parent

    next

    [ - ]

    [ x ]

    <@wilkystyle> > "w" to select what Vim considers a lowercase-w word

    ?!? Wtf does this mean and how did vi come up

    reply

    keithnz

     

    9 hours ago

    root

    parent

    next

    [ - ]

    [ x ]

    <@throwaway27448> vim has two "word" motions, w and W, the lowercase w motion will see punctuation as a word boundary (as well as whitespace ) W only considers whitespace

    reply

    bluebarbet

     

    2 hours ago

    root

    parent

    next

    [ - ]

    [ x ]

    <@keithnz> Mind blown. Now I'm wondering if swapping `w` and `W` in the config is worth the penalty of diverging from the defaults. Decisions decisions.

    reply

    throwaway27448

     

    8 hours ago

    root

    parent

    prev

    next

    [ - ]

    [ x ]

    <@keithnz> Sure. how was that relevant to explaining their keymapping? Why would you not simply directly describe the behavior as you did rather than sending the same amount of energy to route people through an entirely unrelated editing paradigm?

    reply

    dhosek

     

    3 hours ago

    root

    parent

    prev

    next

    [ - ]

    [ x ]

    <@throwaway27448> Because any mention of Emacs must bring out the vi people, just as any mention of vi must bring out the Emacs people.

    Because you people are cracking your eggs from the wrong end!

    reply

    rkomorn

     

    3 hours ago

    root

    parent

    next

    [ - ]

    [ x ]

    <@dhosek> > Because you people are cracking your eggs from the wrong end!

    That's because both ends are wrong. Eggs should be cracked from the side.

    Can't believe this still needs to be said on this forum in 2026.

    reply
  • Ferret7446

     

    9 hours ago

    prev

    next

    [ - ]

    The "why" is kinda sketchy. The difference between what is shipped in Emacs and in ELPA is somewhat arbitrary. In fact, there are many built in packages that have their updates shipped in ELPA, meaning if you aren't using ELPA then your builtin packages might have unpatched bugs.

    There's also no reason why you have to literally write everything yourself either. You can find open source licensed packages, read them to understand them, and then copy them into your config. Doing everything from scratch is a waste of time unless you enjoy the process (in which case go nuts).

    It's roughly equivalent to trying to discover all of our scientific knowledge yourself from scratch vs taking "for granted" the knowledge discovered by your forebears. There is no shame or disadvantage in doing so.

    Also, a critical objection:

    > Writing your own packages is the best way to learn Elisp

    Absolutely not. Reading a language is crucial. If all you do is write, you will pigeonhole into weird practices and generally fail to improve. Only by reading stuff written by others can you learn, as you're exposed to what other people do right and wrong, both of which will be different from you.

    Of course, writing your own packages is also necessary, but not sufficient alone.

    reply

    porcoda

     

    9 hours ago

    parent

    next

    [ - ]

    [ x ]

    <@Ferret7446> > Absolutely not. Reading a language is crucial.

    I don't think the post implied that this package writing activity was a write-only activity where reading and learning is strictly forbidden.

    > You can find open source licensed packages, read them to understand them, and then copy them into your config. Doing everything from scratch is a waste of time unless you enjoy the process (in which case go nuts).

    The post clearly indicates the relatively large set of open source packages they looked at and understood before doing their own packages. The author graciously acknowledges them and their influence on the work:

    "Emacs Solo doesn't install external packages, it is deeply influenced by them. diff-hl, ace-window, olivetti, doom-modeline, exec-path-from-shell, eldoc-box, rainbow-delimiters, sudo-edit, and many others showed me what was possible and set the bar for what a good Emacs experience looks like. Where specific credit is due, it's noted in the source code itself."

    reply

    tom_

     

    9 hours ago

    parent

    prev

    next

    [ - ]

    [ x ]

    <@Ferret7446> It's nothing like rediscovering everything. Not only is it only Emacs, but it's also been designed by people with a goal of being straightforward to use by people. And whatever you create just needs to be useful to you personally anyway.

    I think of it more like building stuff out of Lego without following any instructions.

    reply

    amake

     

    7 hours ago

    parent

    prev

    next

    [ - ]

    [ x ]

    <@Ferret7446> > The "why" is kinda sketchy

    It seems pretty clear that the "why" is "because it's there"

    reply

    jimbokun

     

    8 hours ago

    parent

    prev

    next

    [ - ]

    [ x ]

    <@Ferret7446> I’m not sure how you missed it, but the “why” was clearly a challenge to better learn and understand Emacs. And because it was fun.

    reply

    skydhash

     

    9 hours ago

    parent

    prev

    next

    [ - ]

    [ x ]

    <@Ferret7446> > There's also no reason why you have to literally write everything yourself either.

    > It's roughly equivalent to trying to discover all of our scientific knowledge yourself from scratch vs taking "for granted" the knowledge discovered by your forebears.

    The author do have another config with all the bells and whistles. But Emacs does come with a lot of packages and tweaking them isn't that much work compared to building a full suite like Helm, especially with the awesome documentation system. Getting a v0.x of anything can be a matter of minutes. And then you wake up one day and you've built a whole OS for your workflows.

    reply

    bitwize

     

    6 hours ago

    parent

    prev

    next

    [ - ]

    [ x ]

    <@Ferret7446> You have to sign the FSF's CLA (and clear your contributions with your employer) to contribute to Emacs itself. To ship a separate package to ELPA you need not do this.

    reply

    pkal

     

    5 hours ago

    root

    parent

    next

    [ - ]

    [ x ]

    <@bitwize> A point of clarification: GNU ELPA (https://elpa.gnu.org/) is part of Emacs, and you have to sign the copyright assignment to submit packages an to contribute to packages. NonGNU ELPA (https://elpa.nongnu.org/) doesn't have this restriction.

    reply
  • qazxcvbnm

     

    5 hours ago

    prev

    next

    [ - ]

    The new Emacs features sound great! (We have native window management finally)

    I wish we would someday be able to edit in xref too, wgrep having landed in Emacs 30 (especially since project.el grep goes to xref by default).

    By the way, anyone more informed know about any work on getting a graphical browser to work on latest Emacs, now that webkit xwidgets is dead for Emacs 30+? (Have tried EAF; extremely buggy on Mac)

    reply

    jharsman

     

    2 hours ago

    parent

    next

    [ - ]

    [ x ]

    <@qazxcvbnm> Emacs solo actually contains functionality for just that, the below snippet which allows exporting xref buffers to grep format by pressing 'E'. You can then use wgrep etc.

      ;; Makes any xref buffer "exportable" to a grep buffer with "E" so you can edit it with "e".
        (defun emacs-solo/xref-to-grep-compilation ()
          "Export the current Xref results to a grep-like buffer (Emacs 30+)."
          (interactive)
          (unless (derived-mode-p 'xref--xref-buffer-mode)
            (user-error "Not in an Xref buffer"))
    
          (let* ((items (and (boundp 'xref--fetcher)
                             (funcall xref--fetcher)))
                 (buf-name "*xref→grep*")
                 (grep-buf (get-buffer-create buf-name)))
            (unless items
              (user-error "No xref items found"))
    
            (with-current-buffer grep-buf
              (let ((inhibit-read-only t))
                (erase-buffer)
                (insert (format "-*- mode: grep; default-directory: %S -*-\n\n"
                                default-directory))
                (dolist (item items)
                  (let* ((loc (xref-item-location item))
                         (file (xref-file-location-file loc))
                         (line (xref-file-location-line loc))
                         (summary (xref-item-summary item)))
                    (insert (format "%s:%d:%s\n" file line summary)))))
              (grep-mode))
            (pop-to-buffer grep-buf)))
        (with-eval-after-load 'xref
          (define-key xref--xref-buffer-mode-map (kbd "E")
                      #'emacs-solo/xref-to-grep-compilation))

    reply

    qazxcvbnm

     

    1 hour ago

    root

    parent

    next

    [ - ]

    [ x ]

    <@jharsman> My goodness, how so thoughtful Emacs Solo is!

    reply
  • internet_points

     

    2 hours ago

    prev

    next

    [ - ]

    This was a beautiful article; the joy of tinkering just shines through everywhere :-) I'm glad Rahul did the work to upstream some of the changes, I hope some of the maintainers read his post and are inspired to change a few defaults too (with that init.el vs `lisp/` refactor it should be easier for them to see what wants changing). Maybe some of the packages might provide for inspiration too; I'd love to see vc-mode provide builtin gutter support, for example. And viper extensions sounds like something that should just be upstreamed. (Less so exchange rates and weather.) Emacs is so close to being quite good out-of-the-box.

    reply
  • NetOpWibby

     

    6 hours ago

    prev

    next

    [ - ]

    I’m always impressed by people who are hardcore EMacs or Vim devs, their setups are impressive af.

    I’m a GUI guy though. As soon as I try delving in, I abort when I see things like “just type c-C dingle bob to do x thing.” I’m happy these people found something that works with their brains. I just want a GUI that works like what they use.

    I recently saw a Zed fork stripped of AI stuff but there’s no binaries yet (you gotta compile and get an Apple dev account and I don’t care enough). Zed and Sublime Text are the closest to my stylistic sensibilities but I’m always on the lookout for something better.

    If you’re one of these EMacs freaks who also love GUIs, sign me up to your app!

    reply

    ngc6677

     

    3 hours ago

    parent

    next

    [ - ]

    [ x ]

    <@NetOpWibby> A nice way to get quickly familiar with how to use emacs/(neo)vi(m), understand how keybindings work and how to uncover new ones, is to go through reading/practicing the built-in tutorial. It almost plays like games.

    When opening a freshly installed emacs, there should be a "Emacs Tutorial" link that can be clicked; also the keyboard shortcut `C-h t` (which is «Control + `h`, then `t`»).

    There is a similar feature in `neovim`, when opened type `:Tutor` (which is «`:` to open the command prompt, with command `Tutor`»).

    reply

    LiamPowell

     

    6 hours ago

    parent

    prev

    next

    [ - ]

    [ x ]

    <@NetOpWibby> > I’m a GUI guy though. As soon as I try delving in, I abort when I see things like “just type c-C dingle bob to do x thing.” I’m happy these people found something that works with their brains. I just want a GUI that works like what they use.

    You do have that somewhat with packages like which-key that will show you a menu of options every time you press a key. You then learn the keybinds that you use the most. You can also search for them by name and see the keybind like you do with VS Code etc..

    Here's what doom-emacs looks like when I press space and then space-t:

    https://files.catbox.moe/szfcif.png

    https://files.catbox.moe/2kgrai.png

    reply

    yoyohello13

     

    6 hours ago

    parent

    prev

    next

    [ - ]

    [ x ]

    <@NetOpWibby> > I just want a GUI that works like what they use.

    I don't think this is really possible. The thing that makes it special is that there are key binds for all the 100s of things you could want to do. So it becomes sort of like playing a instrument where you use your muscle memory instead of thinking specifically about the keys. If you make a bunch of menus and buttons to do the things it would be a mess and probably not very nice to use. Emacs actually has buttons and GUI controls for lots of the functionality, but it kind of sucks to use it that way.

    These setups are impressive specifically because the creator has put in the time and effort to become an expert at using their editor. There is just no way to hand that over to someone else as-is without any investment from the recipient in skill development.

    reply

    mhd

     

    3 hours ago

    parent

    prev

    next

    [ - ]

    [ x ]

    <@NetOpWibby> I'd say most people run Emacs in the GUI mode, not in a terminal. So these days, you're pretty much on the same level as most rivals.

    Sadly, "these days" is a low bar. The days of consistent platform-specific "Human Interface Guidelines" are over, it's all just a browser wrapped in a top-level window or something that simulates that, with most interaction patterns being a cargo cult of how it's remembered from the 90s. So "GUI" means that some unique overlays can be drawn without a fixed width character grid and that you might get the original file requester now and then.

    reply

    mark_l_watson

     

    1 hour ago

    root

    parent

    next

    [ - ]

    [ x ]

    <@mhd> I mostly run Emacs in a terminal, except I configure for two finger scroll on Mac trackpad and tap to move cursor. I also reduced the size of my .emacs by 60% in the last year.

    reply

    thunfischbrot

     

    6 hours ago

    parent

    prev

    next

    [ - ]

    [ x ]

    <@NetOpWibby> The Zed fork sounds interesting!

    What was the Apple Dev account needed for? Previously I remember it was only needed for submitting apps to the App Store, not running Dev builds locally.

    reply
  • lvass

     

    9 hours ago

    prev

    next

    [ - ]

    This is beautiful, incredibly sane, and awesome reference material. There's no way I'd use a 3500 lines init.el or most of the extras, but somehow I feel like a good chunk of the stuff here should be upstreamed if we one day consider it reasonable to change default behaviors in a major update.

    reply
  • yunnpp

     

    10 hours ago

    prev

    next

    [ - ]

    Is Eglot on par with emacs-lsp for C++? Specifically thinking about pointing it to a compile_commands.json and all of the usual C++ nonsense required for code navigation and autocomplete.

    reply

    gpderetta

     

    27 minutes ago

    parent

    next

    [ - ]

    [ x ]

    <@yunnpp> Pretty much yes. I switched to eglot from emacs-lsp because of some frequent random errors ("document not added") that required me to frequently kill clangd; might be a PEBCAK problem, but went away with eglot.

    Everything mostly worked out of the box.

    reply

    internet_points

     

    2 hours ago

    parent

    prev

    next

    [ - ]

    [ x ]

    <@yunnpp> I use it that way. It requires less setup than lsp-mode. Just try it – add `:disabled t` to your use-package lsp-mode, restart emacs and type `M-x eglot` in a C++ buffer.

    reply

    Ferret7446

     

    10 hours ago

    parent

    prev

    next

    [ - ]

    [ x ]

    <@yunnpp> The UX will be different and is a matter of preference. The performance depends solely on your LSP. So long as your LSP is the same and configured the same, it will give you the same results for navigation/completion.

    reply
  • CodeCompost

     

    3 hours ago

    prev

    next

    [ - ]

    Emacs is awesome but customizing it costs me way too much of my precious time.

    reply
  • hirvi74

     

    10 hours ago

    prev

    next

    [ - ]

    This might be a paragon of masochism. Though, I am not only beyond impressed. I am beyond jealous as well.

    I've been using Emacs since one of professors/mentors converted me over a decade ago back when I was attending university. As the years have progressed, I have found myself reaching for Emacs less and less. I still maintain my config and use it fairly often. I cannot use Emacs at my employer either, so that doesn't help.

    However, I have always wanted to do what the author has demonstrated. I would love to be liberated from the all package dependencies I currently have. I just do not have the time nor self-discipline to do something like this. Even if the functionality would be less than or equal parity with 3rd-party packages, I would prefer the Devil I know over the ones I don't.

    reply
  • throwaway27448

     

    10 hours ago

    prev

    next

    [ - ]

    Why are we so bad at naming things? Modules and packages are so abstract I need to google what they mean relative to the development environment just to move forward.

    reply

    InMice

     

    9 hours ago

    parent

    next

    [ - ]

    [ x ]

    <@throwaway27448> That's the beauty of open source

    reply
  • gyrgtyn

     

    9 hours ago

    prev

    next

    [ - ]

    The only reason I'm still using emacs is magit (and muscle memory). I could not make magit myself.

    reply

    asymmetric

     

    4 hours ago

    parent

    next

    [ - ]

    [ x ]

    <@gyrgtyn> For me it’s org-mode. Although now that I think of it, there’s a Neovim implementation I’ve been meaning to try.

    reply
  • fedreg

     

    10 hours ago

    prev

    next

    [ - ]

    super impressive!! Going to steal some of this lisp for sure

    reply
  • iJohnDoe

     

    8 hours ago

    prev

    next

    [ - ]

    This guy Emacs!

    In all seriousness very impressive and cool. Great information and post.

    reply
  • shevy-java

     

    5 hours ago

    prev

    next

    [ - ]

    Poor guy - stuck with lisp on an ancient operating system ...

    And no - vim isn't any better either. I always felt that in the emacs-versus-vim debate there were two losing sides.

    reply

    Antibabelic

     

    4 hours ago

    parent

    next

    [ - ]

    [ x ]

    <@shevy-java> Perhaps these poor guys possess a secret wealth beyond your wildest imagination. I wouldn't give up Emacs for anything.

    reply

    gpderetta

     

    26 minutes ago

    parent

    prev

    next

    [ - ]

    [ x ]

    <@shevy-java> "a weapon from a more civilized age".

    reply
  • bananamogul

     

    8 hours ago

    prev

    [ - ]

    If I was going to reimplement Emacs it wouldn't be with Lisp.

    Is there some reason Lisp is superior to any other general-purpose programming language for text editing? I'm skeptical because to my knowledge, Emacs is the only major text editor written in Lisp.

    reply

    internet_points

     

    2 hours ago

    parent

    next

    [ - ]

    [ x ]

    <@bananamogul> The Lem editor[0] and LispWorks IDE's[1] are implemented in Common Lisp.

    Still, the reason for choosing a language for whatever are always more social and path-dependent than technical (reason 1: initial developer of whatever really likes the language, reason 2: language is seen as hip within some crowd, reason 3 (later in the game): management feels language is safe). Technical reasons for choosing a language typically tend to be post-hoc rationalizations. (I mean, no sane person would choose Javascript for an editor based on technical reasons alone, yet here we are.)

    [0] https://lem-project.github.io/ [1] https://www.lispworks.com/products/lispworks.html

    reply

    spudlyo

     

    8 hours ago

    parent

    prev

    next

    [ - ]

    [ x ]

    <@bananamogul> It's a product of its time. In the mid 70s when Emacs was originally created, the MIT Lisp Machine Project had already been going for a few years, and Lisp was kind of a big deal at MIT's AI Lab, where it was created. When Stallman started GNU Emacs in '85 or so, he took lots of inspiration from Lisp and those systems.

    You can think of Emacs as a kind of software Lisp machine with an emphasis on editing. Although that analogy only works well if you squint or if you don't know a lot about Lisp machines.

    As someone who first learned Lisp through Emacs Lisp, I found it fun, well-documented, and powerful. Once you grok the basics of how the system is dynamically glued together, infinitely hackable, and self-documenting it's kind of mind-blowing.

    reply

    0xpgm

     

    4 hours ago

    parent

    prev

    next

    [ - ]

    [ x ]

    <@bananamogul> A good reason is that Lisp has almost no syntax. So it can act as a neutral language that is easy to learn for developers from other languages.

    reply

    bandrami

     

    4 hours ago

    parent

    prev

    next

    [ - ]

    [ x ]

    <@bananamogul> Because it's very easy to generate lisp code. It's meant for metaprogramming

    reply

    jimbokun

     

    8 hours ago

    parent

    prev

    next

    [ - ]

    [ x ]

    <@bananamogul> But if you were implementing it in 1976 you would have.

    reply

    pkal

     

    5 hours ago

    root

    parent

    next

    [ - ]

    [ x ]

    <@jimbokun> But in 1976 Emacs was implemented in TECO. In 1984 it was implemented in Lisp, because Multics Emacs _or_ EINE/ZWEI (Lisp Machine editors) were using Lisp as an extension language, which apparently has shown itself to be useful.

    reply

    jibal

     

    1 hour ago

    parent

    prev

    next

    [ - ]

    [ x ]

    <@bananamogul> This article isn't about reimplementing emacs.

    BTW emacs is written in C.

    reply

    beepbooptheory

     

    8 hours ago

    parent

    prev

    next

    [ - ]

    [ x ]

    <@bananamogul> Lisp calls c in emacs. What would be a better language? The code-as-data, data-as-code paradigm fits nicely imo with everything-is-a-buffer. Things like global namespace, hooks, defadvice, would all feel very wrong in other interpreter, and yet seem to make sense in elisp.

    reply

    sunng

     

    2 hours ago

    root

    parent

    next

    [ - ]

    [ x ]

    <@beepbooptheory> Emacs is like a minecraft of lisp expressions.

    reply

    Barrin92

     

    4 hours ago

    parent

    prev

    [ - ]

    [ x ]

    <@bananamogul> >Is there some reason Lisp is superior to any other general-purpose programming language for text editing?

    purely for text editing? No. But that's not what distinguishes Emacs, it's famously very mediocre at it. The point of Emacs is to be a fully transparent, inspectable, dynamic and changeable environment. In spirit similar to Smalltalk systems like Pharo. And for that a Lisp is not the only choice but a very good one.

    There's very few languages and environments that facilitate jumping into any place, making a change, compiling or evaluating a block of code or treating it as data and continuing seamlessly.

    reply