[HN Gopher] How to open a file in Emacs: a story about Lisp, tec... ___________________________________________________________________ How to open a file in Emacs: a story about Lisp, technology, and human progress Author : mpereira Score : 146 points Date : 2021-01-03 16:32 UTC (6 hours ago) (HTM) web link (www.murilopereira.com) (TXT) w3m dump (www.murilopereira.com) | abhinav22 wrote: | Wowsers! That was a long read, I skimmed through a bit of it. | | Kudos for dedicating time and effort to high quality long form | articles - this is something that online needs to revert to. | | That said, can you give us a TL;DR if you have a moment :D | chrisdone wrote: | I read all of it. It was very interesting, while I can see the | author knows what they're talking about, something about it | rankles me. I've used Emacs since I was a teenager and now I have | grey hairs I'm entitled to indulgences like mocking this author's | 4 years of using Emacs. I won't, however. | | My only real critique is that due to the power of Emacs's | extensibility -- notably, differently to other editors, it has | its own real language, not Python or some separately controlled | language -- all claims of the form "X editor de jour has X | features and Y population of users" fall on deaf ears. | | I'm using still using Elisp that I wrote in 2008. It still works | the same. Do you remember what editor was popular in 2008? Me | neither. I use Emacs for the long haul. Every bit of investment I | make into it has paid dividends. I'm using a package that one of | my colleagues wrote in the 90s (aligning by regexp). | | In particular, if your admiration of Emacs consists in listing | its "killer app" packages (Org, Magit), then you are one of the | flaky users who will jump ship when something more shiny comes | along. Emacs isn't for you. You have to think about why Emacs is | such a great incubator for such packages. | | People are always coming to Emacs wanting to "fix" it by changing | standard keybindings or making more "modern". An sdl/OpenGL | renderer would sure be neat and all, but it's nowhere near a | priority for me. These are superficial things and Emacs doesn't | have to be popular to be successful. It's past the point of | needing heavy maintainership. | | I don't even remember what version of Emacs I'm running. It | doesn't matter, it works the same. I pin all my Elisp packages by | putting them all in a git repo so that my environment never, ever | breaks. | | I don't recommend Emacs to people, so I don't "have a hard time | recommending it". Emacs is more wonderful when there is lots of | Elisp around on the wiki, and the more recent phenomenon of | "packages" is also wonderful. But you don't need to "market" or | "sell" Emacs, as long as there are hackers who like full control | and freedom over their environment, there will be Emacs users. | Did I have an easy time learning it? No, it was hard work. But | here I am in 2021 still loving it. | | Finally, and this point is more of an addition than a critique: | Emacs may be the singular, unique, piece of software out there | that truly satisfies the spirit of "free" software. Most GNU/FSF | software falls short of their own ideals, because it is not | modifiable by the users who use it. Linux the kernel is free, but | could I modify it? Heck, getting it to compile is a step in | itself. Understanding the C to achieve what I want? Give me a | week. With Emacs, I can change almost anything and I can do it in | a few minutes. Either via hooks, or just editing the Elisp code | directly and evaluating it. Heck, I patched C-s the built-in | search feature. Not only that, I can save that file and it'll | still be working in 10 years. What other OS can you name that | gives you this power? | radarsat1 wrote: | I use emacs but tend to just find another way to do things (e.g. | grep, & other shell things) when I run into a stumbling block | like this; believe it or not, not everyone wants to start | debugging their text editor when they run into trouble. | | Admittedly I wish I would spend a bit of time in emacs internals | sometimes just so I could learn to approach similar issues, but | it's just never much of a priority when I'm trying to work on | what I'm actually working on. I rarely get distracted by trying | to optimize my config, as a result I use almost the vanilla | defaults and I'm mostly happy with that. TRAMP is pretty great, I | wish it would not make a new connection for every network | interaction though. Setting ControlMaster on ssh helps a bit but | it's still not as fast/transparent as I'd like. There are far too | many "blocking" operations in emacs, as much as I love working in | it, there is the non-zero times that it locks up on me and it | drives me crazy when that happens. | | If it was ever the case that I had to wait 30 seconds to open a | file, I'm sure I would abandon emacs instead of trying to debug | it. That said I can't imagine working on a 70,000-file repo. That | sounds like a terrible idea. | bambataa wrote: | I always wonder how people evolve from fiddling with package | configurations to using emacs at this level. | | My stunbling block is not so much knowing Elisp (I'm sure I can | stumble through that) but just knowing the internal architecture | and how emacs works overall. | | Has anyone come across a good guide for hacking emacs? I know | there is the manual. Perhaps I just need to look at that again | and get going. | mlang23 wrote: | Being able to open remote files with Tramp is convenient. | However, whats even cooler is that Tramp can execute remote | commands. IOW, if you edit a file in a remote directory, you can | also use M-x compile RET to run a remote build process and see | the output in your Emacs _Compilation_ buffer. If the paths | pritned are relative, you can even use M-x next-error RET to jump | to a build error location. | macintux wrote: | Running remote commands is almost entirely what that part of | the article is about. | humanistbot wrote: | When I was first getting into programming and computer science as | a student, I was so into these kinds of super-customizable rabbit | holes. My whole life pretty much centered around the keyboard and | terminal. I was all in on knowing everything about the entire | stack and making it do whatever it was I wanted. I'd spend hours | to save a few keystrokes. That wasn't so much about the | productivity trade-off as it was about an almost ideological | drive I had to make the machine do exactly whatever it was I | wanted. Nothing commercial off the shelf, only things I could | customize down to the source code. | | A couple decades later, I just find it all so exhausting. | agumonkey wrote: | As you grow your brain optimizes off fruitless ideas. You think | total control of one part will be the ultimate because younger | your perspective is narrow and you focus all on it. | | When I was in college I thought being a flawless typist would | make me a better programmer.. (mind you I had trouble mastering | dynamic programming, advanced abstractions or semantic | subtleties). | | I find these exhausting too now, and actually that's why I'm | jaded by tech. The vast majority of things in the late 10 years | felt like a planet scale tweak (phone has tilting backgrounds, | css animations, ..). Deep inside I knew it was just marketing | and nothing substantial. | erikbye wrote: | > The vast majority of things in the late 10 years felt like | a planet scale tweak (phone has tilting backgrounds, css | animations, ..) | | Sounds like you are in a very small bubble if that is your | take on the last decade's tech inventions/evolution. What | about autonomous vehicles/dock yards/warehouses and reusable | rockets? | agumonkey wrote: | SDV are not there yet, reusable rockets are not mainstream. | | Yeah my bubble was mostly about consumer computing and | network. CRISPR wasn't included in my rant. | bjeds wrote: | In no way do I want to come off as rude with this comment, but | to me what you are saying is not at all different from | | "when I was young I used to work out and eat healthy... a | couple of decades later, I just fund it all so exhausting". | | Customizing your computer environment is good. Eating healthy | is good. None of those need to end up in a "rabbit hole". | | Everyone can be tired of life and give up due to exhaustion, | but greatness requires discipline. This is also true with the | craft and art of programming. | nn3 wrote: | A super customized system is more like a pet. A mostly | standard system with very limited tweaks is more cattle. | | Like the OP I used to be in the having "pets" category | (including gigantic ~/.emacs), but these days I prefer cattle | (defaults as much as possible) | Thrymr wrote: | It feels a little closer to "when I was young, I used to | spend so much time arranging my kitchen gadgets [or exercise | equipment]". Not doing the useful part of it, but frittering | around the edges. | brandonmenc wrote: | I'm not going to die younger if I don't waste a bunch of time | customizing my computer. | oblio wrote: | Or you can, you know, just use VSCode, have fun coding what | you actually want to code and use that spare time: | | a) learning Spanish to talk to that hot chick/dude | | b) traveling around the world | | c) doing whatever else you love to do besides coding | bmitc wrote: | Exactly my thoughts. In the context of the posted article, | one just installs the Remote - SSH extension and moves on | with life. | coldtea wrote: | > _Customizing your computer environment is good. Eating | healthy is good._ | | One is a practical endeavor of great importance for mind | function, body function, longevity, performance, etc. | | The other is something between slightly better ergonomics (in | a non-scientific ad-hoc way), tinkering, and bike-shedding. | | People have found again and again that "customizing your | computer environment" is not a good in itself, but a means to | an end, with quite narrow diminishing returns. | | > _Everyone can be tired of life and give up due to | exhaustion, but greatness requires discipline._ | | This includes first and foremost the disclipline of avoiding | tinkering and bike-shedding with your tools, and doing real | work on real problems instead (which is not a false | dichotomy: many people fixate on the former to the detriment | of the latter). | | > _This is also true with the craft and art of programming._ | | Which has as little to do with a focus on customizing of | tools, as a hi-fi hobby has with being a music lover... | bjeds wrote: | Did we read the same article? | | The author of the article customized his environment so | opening a file no longer froze his editor. | | I wouldn't classify that either as "slightly better | ergonomics" nor "tinkering" nor "bike shedding". | | He had the discipline to improve his favorite editor. Good | for him. | | Emacs is obviously a very powerful environment for people | who know how to use it. I applaud the author for | documenting how he fixed this. | | The only difference between emacs and many other open | source software is here you can easily solve bugs in your | config file, instead of filing a pull request or submitting | a patch to some git repo. The first you call "tinkering" | and look down upon. The other I assume you approve of? But | why the double standard? | coldtea wrote: | > _Did we read the same article?_ | | I didn't respond to the article, I responded to your | particular comment, which seemed to imply that | customizing your programming environment in general is | something great and necessary. | | > _The author of the article customized his environment | so opening a file no longer froze his editor._ | | That doesn't clarify as "customizing my environment" is | more like "fixing fundamentally broken shit". | dan-robertson wrote: | A lot of emacs customisation ought to be unnecessary. And I | think the yak shaving on one's config isn't really a great | use of time (if you want it as a hobby then I guess that's | fine). | | Some examples of unnecessary customisation is the fact that | the defaults of emacs so often ought to be changed. E.g. why | does M-SPC do just-one-space instead of the strictly more | powerful cycle-spacing (answer: probably a combination of | history, neglect, and a fear of breaking existing saved | keyboard macros), why use upcase-word instead of upcase-dwim? | Why does autocomplete require so much customisation? | | If emacs had better defaults there would be much less reason | for spacemacs or doom to exist. | | One person I work with will (drastically) customise the key | bindings for each new mode before using it, making it hard to | use new modes. Another gave up on customising emacs and | switched to spacemacs to no longer have to think about | customisation. | mainstreemm wrote: | I'm too young to have used it, but I bet Borland C++ was | nice, too. And I bet it was more work to configure Emacs to | write C++ in the 90s than it was to just use Borland. But | which one is still around? | | I wonder if it's more time wasted when you have to change | editors every few years because of changes in the funding | model of the corporate patron of the product and relearn | how to use the entire environment with "sane defaults" | versus creating some custom keybindings that you like | essentially one time and then using them for 30 years in an | editor that has a license and community that makes it | unlikely to suddenly cease to exist. | | People act like there's all this extra work to using | software like Emacs over corporate IDEs, or GNU+Linux over | corporate OSes, but I contend that it is merely different | and better-documented work. The corporate environments just | make more promises, and then everyone is surprised when the | promises are broken. | krbzsq wrote: | I don't think this is fair. Eating healthy and working out is | objectively good. Whereas for plenty of people, these | customisations are just that, a "rabbit hole" that was | interesting when they were younger but then it got tedious. | Now they've found a setup they like, be that intensely | customised or a fresh macOS install with VSCode. I wouldn't | consider either indicative of greatness. A lot of people just | want their computing environment to get out of their way. | stirner wrote: | I had the exact same experience, but I feel grateful since it's | what got me into programming. I first learned C in order to | customize the dwm tiling window manager on Linux. Over time, my | priority became simplicity and overall cohesive design over | customization, though still in an entirely impractical way (I | moved to BSD and briefly Plan 9/9front). Now I've settled on a | dead-stock macOS setup and spend zero mental bandwidth on | customization, but I think going down the customization rabbit | hole taught me a lot about software design, UI/UX, and even | philosophy in a weird way. | entropie wrote: | I absolutely know what you mean. | | > I was so into these kinds of super-customizable rabbit holes | | I did this too. I spend _days_ customizing my xmonad (I dont | speak haskell), but thats nothing in comparison to the time I | spend tuning my emacs. | | On the other hand, i pretty much use the same environment like | a decade ago. My same .emacs, my same xmonad.hs. I was looking | at my WM and if there is a way to get rid of ghc on my machines | (I use gentoo, updating ghc is an expensive task, especially on | older machines) but every other WM felt like a downgrade so I | went back to xmonad, to my old config. | | I feel home everytime I open my notebook or booting linux on my | desktop. | opan wrote: | >I'm not aware of similar functionality in Vim, | | Vim can open remote files by putting scp:// at the start. Check | the vim wiki or similar for exact syntax. Works with your ssh | config aliases and keys and such, so can be pretty smooth. | | What I don't know is if he knows of this feature and declares it | not-equivalent, or if he's never seen it. TRAMP is likely more | powerful, in part due to emacs itself. Like, you can view a | remote dir in dired and open an image and see it inside your | emacs. I don't know if gvim can view images, I only use regular | vim or neovim, but I typically use a graphical emacs. | | Mostly unrelated, you can open a web url in neovim like it's a | file. I've done this to read a page with a bad layout before. A | bit like w3m, but then you can easily delete chunks or save parts | to another file if you want. You are just seeing the raw html, | but usually the paragraph tags are fairly readable. | coldtea wrote: | > _What I don 't know is if he knows of this feature and | declares it not-equivalent, or if he's never seen it._ | | I know it, but it's not even close. Almost every editor can do | something like that over SCP/SSH/SFTP. | macintux wrote: | It's a shame that most of the discussion is about the first part | of the essay, impressive as the troubleshooting is. | | His discussion of core values is quite interesting, in that it's | both relatively obvious in retrospect yet something I've not | given conscious thought to. | | I've certainly thought about programming languages as expressions | of intent, and how some attempt to be what I call "kitchen sink" | languages, like C++, Java, or JavaScript, while others are much | more opinionated about their purpose, like Erlang, Forth or APL. | | Also reminds me of the old description of UNIX as user-friendly, | just picky about who its friends are. | oblio wrote: | Cute. If I'd have to guess, that's at least 200 hours put into | learning Emacs, probably more. | guenthert wrote: | 200h is a lot if you think of Emacs as a tool to turn | keystrokes into source code of your current project. I don't | think it's a lot if you think of Emacs as a tool to help | realize the ideas of your lifetime. | oblio wrote: | Summarizing: everything you do takes time and this time has | an associated opportunity cost. | | If you can configure another tool in 2-5-10 hours to achieve | 90% of the efficiency Emacs gives you and you can use the | other 190-195-198 hours to actually realize those "ideas of | your lifetime", it is a lot of time spent (and maybe wasted). | Also: https://xkcd.com/1205/ + tinkering isn't necessarily | productivity. If anything, it's more often procrastination. | | Finally, I'm not sure how you could prove that Emacs it the | only thing that allows you to achieve those "ideas of your | lifetime", I don't think that's even a falsifiable statement, | it's just your personal opinion. | bmitc wrote: | Articles like this really trigger the imposter syndrome for me. I | just have no patience for these type of things, and seeing | others' both ability and patience to power through issues like | this one, I just feel like an imposter. | | But these types of issues are why I've always given up on | learning Emacs. When I can just install Visual Studio Code and | the Remote - SSH extension and whatever else extension that I | want to work remotely and get on with life, it's really hard to | justify the time one needs to spend with Emacs to bend it to your | will. | PaulDavisThe1st wrote: | You appear utterly convinced that VSCode will never demonstrate | an obscure bug like the one discussed in TFA, or alternatively | that if it does you'll be able to jump ship to some other tool. | I don't share your confidence, and would prefer to know that | such issues can be fixed with or without vendor participation. | macintux wrote: | That seems an ungenerous and quite broad interpretation of a | fairly simple assertion. | | Even as much as I love Emacs, I would never fault someone for | choosing a more productive tool now even if there's a non- | zero risk of something breaking in the future...because | there's always something that will break on any platform. | Time spent being productive _now_ is usually worth that risk. | guenthert wrote: | "I've recently joined a company that for security reasons doesn't | allow their source code on laptops. Development happens strictly | on workstations inside their private networks, with some using | their text editor's support for remote file editing and others | running editors on those machines via SSH." | | I think using TRAMP or similar technologies is bypassing, if not | the letter, then the spirit of that companies' security policy. | Sure, not the whole repository is lost when the laptop is, but | having an (ephemeral) copy of the files one is working on outside | the security perimeter is kind of defeating its purpose. Why is | that company granting access to remote file transfer? I'd think | they would be better off restricting access to some form of | desktop virtualization (the old SunRays were nice) if they must | offer remote access. | helmut_hed wrote: | This really captures the power of Emacs for people with Lisp | skills. For coders with strong habits of high-level thinking it's | a real force multiplier. Why shouldn't we apply the same analysis | and effort to our productivity tools we do to our "output"? | mark_l_watson wrote: | Nice write up, thanks. | | I often mosh + tmux on remote servers slso, and even though I do | nothing fancy, with Emacs it all works for me. ___________________________________________________________________ (page generated 2021-01-03 23:00 UTC)