[HN Gopher] Emacs Modernization: Simple Changes Emacs Should Ado...
       ___________________________________________________________________
        
       Emacs Modernization: Simple Changes Emacs Should Adopt (2006)
        
       Author : AJRF
       Score  : 92 points
       Date   : 2021-08-28 09:16 UTC (13 hours ago)
        
 (HTM) web link (ergoemacs.org)
 (TXT) w3m dump (ergoemacs.org)
        
       | bitwize wrote:
       | Emacs has already been rewritten as a completely modern
       | application in a modern programming language (JavaScript). It's
       | called Visual Studio Code. We can now safely deprecate the
       | original.
        
       | sullyj3 wrote:
       | Title could probably use a (2006)
        
         | mcc1ane wrote:
         | or (2015)
        
       | mleonhard wrote:
       | I've been using Emacs for 17 years. I want every change suggested
       | in the article, especially 'redo'. A few additional ones:
       | 
       | - After pressing Alt-X, show a list of recently used commands.
       | Allow moving between them with the up/down keys. Show a docs pane
       | which explains what the command does, how to use it, and has an
       | example. For new users, pre-populate the recently-used commands
       | list with common commands. This is like the auto-complete
       | "intellisense" function that saves me so much time when using
       | JetBrains & VSCode.
       | 
       | - When opening/saving a file and typing the path, automatically
       | show the directory contents and hi-light entries that match the
       | path. Show recently opened files and directories in bold. Scroll
       | the listing with PGUP/PGDN/mouse-wheel. I often use emacs to open
       | log files which contain long unique prefixes which are error-
       | prone to type. Allow using the mouse & arrows keys to select the
       | file.
       | 
       | - Auto-save and auto-format. I love this mode when editing Rust
       | code with CLion. It gives me something I've wanted for a long
       | time: to write code without thinking about formatting. There's
       | probably already some complicated way to get this to work in
       | Emacs. Ideally, emacs would check if appropriate tools (rustfmt)
       | are installed and make it just work automatically.
       | 
       | - Allow using ENTER to add newlines to a search-replace command.
       | I can rarely remember whether it's CTRL-Q, CTRL-J, or both and
       | frequently make mistakes.
       | 
       | - Allow writing Emacs commands in popular languages like Python 3
       | or JavaScript. Include a tutorial for each supported language.
       | The lisp bigots will be angry about this.
       | 
       | - Create a public issue tracker for emacs, ideally on GitHub.
       | This will let users help each other and participate in setting
       | issue priorities. Include a code of conduct. Do not auto-lock old
       | issues like Flutter Team does. Old issues are findable by search
       | engines. Workarounds and error messages change over time. When
       | issues are unlocked, users will add comments like "The fix now
       | requires change X. Here's the new command that worked for me ..."
       | Locking old issues saves the dev team some effort but destroys a
       | lot of the utility for users.
        
         | tgbugs wrote:
         | > especially 'redo'
         | 
         | undo-redo is in emacs-28 now, though not the default behavior.
         | 
         | > Allow writing Emacs commands in popular languages like Python
         | 3 or JavaScript.
         | 
         | For js see https://github.com/emacs-ng/emacs-ng
         | 
         | Integrating additional runtimes into the Emacs core, especially
         | ones that also have a single main thread are likely to be a
         | complete nightmare. There are already insane and undebugable
         | performance issues with things that run on the main graphics
         | event loop or on timers.
         | 
         | If elisp can somehow be made multi-threaded there might be a
         | chance. However, there is SO much elisp code that assumes
         | synchronous ordered execution that will break in subtle and
         | unexpected ways when that restriction is lifted I expect it
         | will take even longer than the transition to lexical scoping
         | (and that is just in the core). I would love to be wrong
         | though.
         | 
         | With respect to Python, the cpython runtime and semantics for
         | redefinition are likely even more nighmareish because it is so
         | easy for classes and instances to become out of sync and you
         | wind up having to restart the whole environment just to clear
         | out the bad state or risk creeping insanity. Also the churn in
         | the Python ecosystem is likely far too high for Emacs to be
         | able to maintain. So there are both technical and process
         | mismatches. You could always run python in a separate process
         | and use message passing though. Work to support LSP certainly
         | paves the way for it, and elpy has fully interop with python as
         | well, so you could use that machinery to operate on buffers in
         | languages beyond python. So if all this is possible why isn't
         | anyone doing it?
        
       | daly wrote:
       | I've been using emacs for 35+ years. It does everything I need to
       | do. If it doesn't, it has lisp. And then it does.
       | 
       | I only use fundamental-mode.
       | 
       | Emacs, like lisp, is "clay for the mind". You can adapt it to any
       | task easily.
        
         | greggman3 wrote:
         | I've been using programmable editors for 35+ years. They all do
         | everything emacs does and more and are just as adaptable.
        
         | agumonkey wrote:
         | and emacs is already so packed.. even after rtfm 3 times
         | thoroughly (or so I thought) I learn there's something else I
         | didn't know about
         | 
         | maybe the only thing I'd like to see more center, is a blend of
         | crdt / live-notebook in simple buffers. This could be very
         | benefitial to newcomers too.. you can pair tutor, enjoy things
         | in teams right inside your window
        
         | Scarbutt wrote:
         | _I only use fundamental-mode._
         | 
         | Why? do you use emacs for programming (besides elisp)?
        
       | brlewis wrote:
       | I'd be interested to see an exhaustive list of computer programs
       | that are as old as emacs that people still complain about today.
        
       | mark_l_watson wrote:
       | I bought the Emacs Manual from Richard Stallman and friends, so
       | many years ago, and I still rely on it, especially with Mosh+tmux
       | for working in remote servers.
       | 
       | Off topic, but I have been trying to figure out why Emacs startup
       | got faster and editing seems snappier on an M1 MacBook. The M1 is
       | generally faster but not enough to account for the difference.
       | Maybe some engineers at Apple in some way optimized the Emacs
       | that ships with macOS? The speed up has increased my use of Emacs
       | locally on my laptop.
       | 
       | EDIT: I love Common Lisp, but probably it is not worth the effort
       | to replace Emacs Lisp.
        
         | agigao wrote:
         | Emacs did speed-up on M1? When/How? :D
         | 
         | Which Emacs distribution are you using?
        
           | mark_l_watson wrote:
           | I just noticed that I am now running the Home Brew built for
           | M1 install of Emacs: /opt/homebrew/bin/emacs
           | 
           | It is really nice to be able to have Brew installs for Intel
           | (Rossetta) and M1 side by side (in different root
           | directories).
        
       | tsuujin wrote:
       | I agree with basically everything in this article. Emacs needs
       | new users, and to get them we need to reduce the barriers and
       | user friction. In fact, increasing adoption through reducing user
       | friction is a very well known topic in software design; this
       | shouldn't really be a topic for debate.
       | 
       | But god help you if you suggest changing Emacs to conform with
       | modern standards. I still maintain that the worst part of Emacs
       | is the vocal minority of evangelicals in the community.
       | 
       | I've been using Emacs as a daily driver for years, but it also
       | took me years to adopt fully because the mental overhead of
       | learning new terms for things I already knew drove me to ask for
       | help from the community, and the community routinely made me not
       | want to be any part of it.
       | 
       | It sucks, because most of the community is fine, but the very
       | loud voices of a minority group of purists who have built their
       | identities around being "Emacs people" are incredibly
       | aggravating.
        
       | toolslive wrote:
       | what a lot of people fail to realise is that emacs key bindings
       | *are* consistent with other tools. Take a look at bash (or the
       | korn shell): begin of line (C-a); end of line (C-e); kill rest of
       | line (C-k). Emacs key bindings are the same.
       | 
       | Not everybody grew up using windows.
        
         | yakubin wrote:
         | C-w doesn't work the same. In bash it will delete the word
         | before the cursor. In Emacs it will cut selection (which is
         | always there, just sometimes invisible and then C-w does
         | unpredictable things).
        
           | kmstout wrote:
           | And then there's the experience of using Jupyter's terminals,
           | where you reflexively C-w to delete the last word, but the
           | tab closes. You then reopen the terminal, which has helpfully
           | retained its state--including the word you just tried to
           | delete.
           | 
           | Alas.
        
         | bodhiandpysics1 wrote:
         | note unix shells allow you to choose your keybindings! It's
         | just as common for people to use vi keys as emacs
        
           | oblio wrote:
           | It's not. I don't read have numbers but my anecdata (of
           | probably hundreds of people across several continents) is
           | that maybe 1% of users switch to vi mode and most revert
           | after a while.
        
         | still_grokking wrote:
         | That's because GNU ReadLine uses Emacs key-bindings. It's not
         | the other way around.
        
           | toolslive wrote:
           | I think these key bindings go (at least) back to csh.
        
             | ByteJockey wrote:
             | csh's initial release was 2 years after emacs.
        
         | Veen wrote:
         | > Not everybody grew up using windows.
         | 
         | No, but almost everybody did. Very few people grew up using
         | korn, readline, and emacs.
        
           | G3rn0ti wrote:
           | But I'd argue learning basic Emacs key bindings gives you the
           | benefit of becoming better on any Linux terminal. Going
           | through the tutorial does not take much time.
           | 
           | I think the author is right about the arcane terminology
           | (,,meta key", ,,buffer", ,,window", ,,frame" etc) that should
           | be changed and, too, configuring CUA Mode by default to help
           | newbies a bit. I personally prefer using ,,control c" and
           | ,,control v" for copy and pasting. Mind you if you like to
           | use keyboard macros, you can't use CUA mode copy/cut/paste
           | bindings in them. That confused me quite a bit as beginner.
           | However, I don't think I ever got confused by Emacs undo
           | system. It basically does the same thing as in other editors,
           | just the key binding is different.
        
             | Veen wrote:
             | > It basically does the same thing as in other editors,
             | just the key binding is different
             | 
             | I think it's the way redo works that's confusing, not
             | necessarily undo itself. The way you have to undo, then use
             | another command so the undos themselves become undoable,
             | and redo by undoing the previous undos. That's not how most
             | editors work.
        
       | Decabytes wrote:
       | I posted a link here to a Reddit post that said "if you could
       | change one thing about emacs what would it be?" It had almost 200
       | comments. Some answers definitely touched on these points. But
       | for the most part, what Emacs users wanted was for the Gnu Emacs
       | maintainers to do was...
       | 
       | 1. Switch out Elisp for a Common Lisp or Scheme
       | 
       | 2. Update the way Emacs Ui Core so it used standard GTK or
       | something better. (The current implementation uses a lot of ugly
       | hacks to support a subset of GTK)
       | 
       | 3. Ability to scroll without bringing point along with me so I
       | can quickly check something off screen then just continue typing
       | where I left off.
       | 
       | 4. Improve threading so that things like TRAMP didn't freeze when
       | you were connecting
       | 
       | 5. Fast/Arbitrary graphics support
       | 
       | I think for most Emacs users it's a performance thing. Though the
       | improvements to the GUI code would go a long way to making it
       | easier to make Emacs be more user friendly.
       | 
       | In terms of this article. I think all of this is possible in a
       | separate distribution of Emacs right now. Emacs will never turn
       | on most of these things by default. But maybe if a version of
       | Emacs that makes these changes becomes wildly popular, the
       | current maintainers would be more amenable to it.
       | 
       | https://old.reddit.com/r/emacs/comments/padv22/if_you_could_...
        
         | creamytaco wrote:
         | I've been using Emacs for more than 20 years, these are all
         | (for the most part) non-issues, brought up by folks who either
         | are new to Emacs or never read the documentation / dived below
         | the surface.
         | 
         | 1. Emacs Lisp is great (for the problem domain), exists and
         | works. Common Lisp could work but then given how close Emacs
         | Lisp and CL are, there's no clear benefit, especially with
         | Emacs getting native compilation. Scheme was proposed, some POC
         | code written and failed because nobody was interested. It
         | doesn't fit and fragmenting one of Emacs's greatest strengths
         | (consistent ecosystem of working Emacs Lisp code) is a terrible
         | idea.
         | 
         | 2. The Emacs UI core is completely toolkit-agnostic. It doesn't
         | use GTK on Windows. It doesn't use GTK on macOS. You can run
         | _graphical_ Emacs without GTK or any toolkit whatsoever on
         | Linux, and not lose any functionality. Therefore what you write
         | makes no sense (ugly hacks to support a subset of GTK).
         | 
         | 3. There are multiple ways to do this. Read up on setting the
         | mark.
         | 
         | 4. Threading has nothing to do with TRAMP freezing, bad
         | configuration does. TRAMP documentation (does anyone that bring
         | up these points ever read it?) has multiple sections on
         | improving performance. Check "SSH control master" and
         | "Improving performance of asynchronous remote processes".
         | 
         | 5. SVG support is already there and more is on the pipeline.
         | 
         | What I've noticed during my 40 year computing career is that
         | folks get lazier and lazier. Few read manuals / documentation
         | anymore but most are quick to jump to superficial conclusions
         | without any substantial time investment in trying to figure
         | things out. Spoonfed knowledge is the order of the day, and the
         | folks doing the spooning are usually not far from clueless
         | themselves (the blind leading the blind). This leads to
         | generational gaps and rapid propagation of erroneous ideas
         | amidst the newbie masses, very similar to what you laid out.
         | 
         | Emacs mastery requires commitment and time investment in order
         | to understand (at least) the basic models and the trade-offs
         | involved. If that doesn't take place, one can start going down
         | paths that are entirely irrelevant ("Emacs needs threads so
         | that it doesn't freeze!", "Let's use JavaScript so we can do
         | non-blocking IO!", "Let's rewrite Emacs in Rust!")
        
           | chriswarbo wrote:
           | The fact there are known workarounds for certain problems
           | shouldn't prevent us improving and fixing the underlying
           | causes (in a step-by-step, backwards-compatible way).
           | 
           | With that said, I'd rather not see Emacs go all-in on threads
           | or GTK, since they generally feel like WorseIsBetter anti-
           | patterns:
           | 
           | - GTK 2 seemed OK, but unusable for me due to the 'display
           | disconnection' bug. GTK 3 is full of red flags: a constantly
           | moving target, little thought given to third-party
           | applications, pretty much killed off third-party theming,
           | etc.
           | 
           | - Threading is famously error-prone, which is completely
           | unnecessary for high-level languages like Emacs Lisp. Co-
           | routines, async/await macros, delimited continuations; even
           | an actor model would all seem like better fits.
        
           | CJefferson wrote:
           | 2. What you wrote makes no sense. If linking to gtk provides
           | nothing at all, why is the code even there?
           | 
           | 3. Why is the default config for TRAMP so bad? It isn't
           | spoonfeeding for everyone to not want to reconfigure it.
        
             | creamytaco wrote:
             | 2. It makes perfect sense if you actually learn how Emacs
             | works. It provides superficial elements like GTK-look-and-
             | feel (scrollbars, menubars). Most Emacs experts disable all
             | of these anyway, thus nothing of value is lost. On the
             | other hand, toolkit-less Emacs tends to be a lot more
             | stable. That was definitely the case for GTK since it had
             | well-known bugs that the GTK developers refused to fix that
             | would crash Emacs. I suggest you compile graphical Emacs on
             | Linux without any toolkit (or with Athena/Lucid/Motif) to
             | see for yourself.
             | 
             | 3. Because there are trade-offs involved and the (informed)
             | user should be responsible for enabling them.
        
           | lytefm wrote:
           | > What I've noticed in my 40 year computing career is that
           | folks get lazier and lazier. Few read manuals / documentation
           | anymore but most are quick to jump to superficial conclusions
           | without any substantial time investment in trying to figure
           | things out.
           | 
           | The problem is being used to software that "just works".
           | 
           | I've tried out to figure out how to to stuff with Emacs
           | multiple times, but apart from sticking with org-mode for
           | some use cases, I always have up after a while.
           | 
           | I don't see why I should "master Emacs" when there are
           | usually better tools for any given task.
        
             | creamytaco wrote:
             | Emacs is a tool with an enormous set of available
             | functionality that has been continuously developed for 35
             | years. Moreover, its major strength is its programmable and
             | nearly infinitely-extensible nature.
             | 
             | And yet, it does "just work", from the moment you first run
             | it -no previous experience needed- it does present you with
             | a familiar "editor skin". It does offer you an interactive
             | tutorial. It does come with comprehensive offline
             | documentation. It does come with the best interactive
             | querying and documentation capabilities of any software
             | system in wide-use today.
             | 
             | So, taking all of that into account, when you say "just
             | works", I read "I don't want to spend any time whatsoever
             | to learn 35 years of features and a software system that is
             | by far the most user-empowering in existence today". Your
             | loss.
        
         | pjmlp wrote:
         | For me Emacs was only something I used when I couldn't have
         | access to XEmacs, which was the best workaround for the lack of
         | IDEs in 1990's UNIX.
         | 
         | Nowadays I just use IDEs.
        
         | clircle wrote:
         | Hopefully pure-gtk branch will be merged prior to Emacs 28,
         | addressing (2).
         | 
         | On (1), I'm not much of a programmer, but Emacs-lisp fine, so
         | I'm not sure what benefit changing languages could bring.
        
           | b3morales wrote:
           | There are a good number of Emacs users who also use a Lisp
           | dialect such as Scheme for their day-to-day work. Emacs Lisp
           | has enough small, slightly strange differences from more
           | mainstream Lisps that I can imagine that being kind of
           | frustrating.
           | 
           | For myself I think that Emacs Lisp is a pretty good language
           | _for configuring a text editor_. A lot of its warts actually
           | make it easy to use in that context, in my opinion.
           | Personally I wouldn 't mind moving closer to Scheme or CL.
           | Though I wouldn't want to lose "special" variables (with
           | dynamic binding) no matter what happens -- they're a key tool
           | in tweaking behavior to get it just how you want. But for
           | people who are trying to build packages, especially large
           | ones on the order of Org or Magit, I can see having a more,
           | let's say production code oriented language, being a nice
           | prospect.
        
           | slightwinder wrote:
           | Is the pure-gtk-branch really working on switching the
           | underlying UI-architecture? Or just removing the hacks for
           | X11 and moving them to gtk?
        
             | clircle wrote:
             | pure-gtk doesn't decouple ui process from editor, if that's
             | what you're asking about.
        
               | slightwinder wrote:
               | No, I mean emacs was designed for terminals. The whole
               | GUI is build ontop of this and is suffering from it. Is
               | pure-gtk changing this and decouple from the terminal-
               | design or still working with it, replicating the same
               | hacks just in a different GUI?
        
               | clircle wrote:
               | Sorry, I just don't understand. I don't really use
               | terminals except to do a system update. Is there a
               | specific issue?
        
               | slightwinder wrote:
               | Terminals work with characters, meaning, lines, columns,
               | fontsize. GUIs usually are working with pixel, meaning
               | x/y-coordinates and free sizes.
               | 
               | In case of emacs this means there is a bunch of hacks to
               | translate pixel-coordinates to line/column-coordinates.
               | This often are working well enouhg, but sometimes not.
               | For example, with my emacs there is always a free space
               | at the bottom when maximising the window, Resizing the
               | window also works in terms of lines, not pixels.
               | Positioning of completion-dialogs is linked to chars, not
               | the pixel-coordinates of a the word which in certain
               | cases get's ugly.
               | 
               | It's overall not what I would call a hard issue, but
               | still ugly. But it also kinda limits what you could do
               | with Emacs in GUI-world. As Emacs has no understanding of
               | z-axis, there are overlapping widgets and free-
               | positioning of elements outside the text-flow.
               | 
               | An additionally, it seems the too many laysers and
               | additional complexity has some speed-impact in GUIs which
               | the terminal-version has not.
        
           | chriswarbo wrote:
           | Would this pure-gtk branch avoid GTK's famous X11 connection
           | bug? https://gitlab.gnome.org/GNOME/gtk/-/issues/221
           | 
           | Every few years I'm tempted to try the GTK version of Emacs,
           | but it doesn't take long before this bites me and I go back
           | to Lucid!
        
         | Finnucane wrote:
         | Yes, if you ask people who know how to use emacs what they
         | would change, the answer is going to be _very_ different from
         | the answer you'd get asking people who have tried to use emacs
         | and gave up.
         | 
         | The documentation does really suck. The terminology makes no
         | sense to users not used to it. It does not explain that to make
         | this into a functional system, some configuration needs to be
         | done. It is terrible out-of-the-box. 'Because this is how rms
         | did it 45 years ago' is not really a good excuse.
        
           | Abhinav2000 wrote:
           | The documentation does _not_ suck. It it literally the most
           | well documented software in existence, a reason for which it
           | has been used for many different things outside its original
           | purpose of text editing.
           | 
           | Yes, it may not be for everyone. But just say that, that it
           | uses certain conventions that are likely outdated for a
           | reasonable set of the population. But you can't say the
           | documentation sucks when you have the below:
           | 
           | https://www.gnu.org/software/emacs/manual/html_node/emacs/in.
           | ..
           | 
           | https://www.gnu.org/software/emacs/manual/html_node/elisp/in.
           | ..
        
             | phist_mcgee wrote:
             | `You can also type Meta characters using two-character
             | sequences starting with ESC. Thus, you can enter M-a by
             | typing ESC a. You can enter C-M-a (holding down both Ctrl
             | and Alt, then pressing a) by typing ESC C-a. Unlike Meta,
             | ESC is entered as a separate character. You don't hold down
             | ESC while typing the next character; instead, press ESC and
             | release it, then enter the next character. This feature is
             | useful on certain text terminals where the Meta key does
             | not function reliably.`
             | 
             | Taken from: https://www.gnu.org/software/emacs/manual/html_
             | node/emacs/Us...
             | 
             | I'm really not sure that this counts as 'well documented'.
        
             | cge wrote:
             | That documentation is _thorough_ does not mean that it is
             | _good_.
             | 
             | If anything, one might argue that Emacs documentation being
             | so extensive while buing built around idiosyncratic
             | conventions makes it worse, not better, for many cases: it
             | means it is even harder for people to actually find
             | relevant parts of the documentation.
        
               | otabdeveloper4 wrote:
               | Emacs itself is idiosyncractic. Being cute and using
               | "standard" terminology would just confuse users.
        
           | otabdeveloper4 wrote:
           | Emacs is great out-of-the-box.
           | 
           | Really its only problem is the annoying bugs you frequently
           | run into. (Emacs Lisp really isn't meant for programming
           | large, stable systems.)
        
             | Bost wrote:
             | > Emacs is great out-of-the-box.
             | 
             | Sure. And because the out-of-the-box is so great: 1. people
             | actually create emacs distributions(!) like spacemacs,
             | doom-emacs, etc. 2. the emacs wiki has
             | https://www.emacswiki.org/emacs/DotEmacsBankruptcy
        
           | mlang23 wrote:
           | Emacs is the self-documenting editor for a reason. I always
           | found the documentation very good. I submit that every
           | sufficiently complex system will need some terminology
           | specific to the system the user will have to learn. Not
           | wanting to do so if a form of lazyness that the developers
           | cant really do anything about.
        
             | oblio wrote:
             | Dude, Emacs had its own terminology for text editing, the
             | rest of the world moved on, another terminology won.
             | 
             | If Emacs would be solving protein folding, I'd maybe
             | understand the need for unique terminology, but this is
             | just unnecessary smugness.
             | 
             | At this point Emacs is only doing a few user facing things
             | which are unique, and I'm not even sure about those.
        
         | 908B64B197 wrote:
         | > 3. Ability to scroll without bringing point along with me so
         | I can quickly check something off screen then just continue
         | typing where I left off.
         | 
         | https://ftp.gnu.org/old-gnu/Manuals/emacs-20.7/html_chapter/...
         | 
         | > 4. Improve threading so that things like TRAMP didn't freeze
         | when you were connecting
         | 
         | You really want this, as well as the low level functions to
         | support TRAMP to be written in C.
         | 
         | https://code.visualstudio.com/docs/remote/remote-overview
        
           | rusk wrote:
           | > 3. Ability to scroll without bringing point
           | 
           | You could probably do this with a transparent indirect buffer
           | with a special "scroll only" mode that reverts once you start
           | typing again.
        
             | vvillena wrote:
             | Well, yes, it's Emacs, we can probably do anything we can
             | imagine, but that's beside the point. This particular
             | behavior is stupidly annoying for both newbies and old-
             | timers.
             | 
             | Even if Emacs works internally with the concept of a
             | "point" that is always set to a position in the visible
             | part of a window, text editors evolved over time to adopt
             | the concept of a "cursor" that always stays in place unless
             | the user moves it. It's about time Emacs adopts the concept
             | too, and sets a well-thought default behavior for it.
        
               | JadeNB wrote:
               | > Even if Emacs works internally with the concept of a
               | "point" that is always set to a position in the visible
               | part of a window, text editors evolved over time to adopt
               | the concept of a "cursor" that always stays in place
               | unless the user moves it. It's about time Emacs adopts
               | the concept too, and sets a well-thought default behavior
               | for it.
               | 
               | I'm a Vim user, not an Emacs user, which likely means my
               | opinion isn't worth much; but I think the point I'm about
               | to make is the same.
               | 
               | I use Vim because I like its user interaction paradigm.
               | It is badly out of sync with modern text-editing
               | paradigms, and that's fine. I would be _very_ upset if it
               | started updating to stay relevant. If someone wants an
               | editor that behaves more like modern editors, then they
               | can use a modern editor; and, if they want the best of
               | both worlds, then they can fork Vim and modify it (and
               | there are successful projects doing exactly that).
               | There's no need to modify core Vim to attract new users
               | while alienating old ones.
        
               | michaelmrose wrote:
               | If you are thinking of a mouse oriented text editing gui
               | where one scrolls with the scroll wheel and then clicks
               | somewhere and starts typing from there this might make
               | perfect sense. In fact you can of course use Emacs like
               | that if you prefer but for keyboard oriented operation it
               | would be absolutely odd if operations that moved the view
               | didn't also move point and in fact other functionality
               | depends on this. Presumably making visual point from
               | internal point different would complexity and work and I
               | have no idea to what end this work would be.
               | 
               | It would be equally weird if scrolling with a mouse wheel
               | worked differently than scrolling with page down for
               | example. In fact in many applications I now realize it
               | does work differently. It's likely that I and many others
               | are not likely to notice because when we do scroll with
               | the scroll wheel in an editable field or document we
               | immediately follow a series of scroll operations with a
               | click in the appropriate location where we intend to
               | insert text. That is to say people are unlikely to
               | exploit the fact that visual point and point are
               | different as a deliberate feature because its awkward.
               | It's spacebar heating.
               | 
               | https://xkcd.com/1172/
               | 
               | I would also venture to guess people are vastly more
               | likely to scroll documents in emacs via keys compared to
               | the scroll wheel in part because mouse scrolling emacs
               | isn't awesome. That is a better thing to improve.
        
               | rusk wrote:
               | > It's about time Emacs adopts the concept
               | 
               | I find this kind of thinking interesting. Like Emacs is a
               | bold child that needs to shape up ... rather than a
               | conintiually evolving codebase developed by enthusiasts.
               | If it doesn't do "this thing" it's probably because it
               | doesn't need to. There's probably better ways to do this
               | that experienced users are comfortable with. For the
               | newbies then you only need workarounds to make them
               | comfortable, such as that which I described.
        
               | michaelmrose wrote:
               | This is especially true of functionality that could be
               | implemented in 15 minutes by users that so desire.
        
           | michaelmrose wrote:
           | Regarding 3. Ability to scroll without bringing point along.
           | 
           | You can duplicate the buffer side by side with the original
           | buffer and in each window point will be at a different
           | location. This is fundamentally just better than such a peek
           | mode as you can see two different segments of the same file
           | side by side. If you do want to peek and return you can use
           | goto-last-change to return to where you were last typing. In
           | evil this is bound to g; no idea about a binding in plain
           | emacs but nothing is stopping you from using and binding such
           | a thing.
           | 
           | https://github.com/emacs-evil/goto-chg/blob/master/goto-
           | chg....
           | 
           | You can also use marks in evil m[a-z] to set a mark '[a-z] to
           | go back to that mark. so for example ma 'a to go back.
           | 
           | Consider the alternative. Since you don't want scroll to
           | always leave point behind you must have a special binding to
           | enter peek mode and thereafter you scroll as normal. Then one
           | of two things has to happen. Either you decide point really
           | ought to be here now and you have to hit a key combo bound to
           | end-peek-at-current-location or another key bound to end-
           | peek-return-to-point. I would suggest escape/q for end-peek-
           | return-to-point and return for end-peek-at-current-location.
           | You can also do end-peek-return-to-point if you just start
           | typing obviating the need for an additional binding but I
           | think this would be a little weird because there would be a
           | slight hitch while it pops back to prior location.
           | 
           | The biggest defect with this compared to goto-last-change is
           | that it is ironically given the alternative being part of
           | evil modal. You have to decide to use peek ahead of time and
           | then you have to remember you are in that mode and do
           | something to get out of it should you decide you actually
           | want to do something different like exit with point at the
           | new location. With goto-last-change you don't have to decide
           | ahead of time you can simply decide to go back after the fact
           | without needing to attend to any state in between.
           | 
           | Multiple windows on the same file and marks require attention
           | ahead of time but are far more general and powerful than
           | peeking.
           | 
           | Sometimes what people want and what is most useful are
           | different things. Fortunately Emacs is simple enough and
           | powerful enough for you to implement peek mode trivially if
           | you like but I don't think it would be worth using compared
           | to the alternatives. Logically you could implement it by
           | remembering present point and making local bindings to go
           | back to prior point example esc to go back enter to remove
           | local binding to esc.
        
             | na85 wrote:
             | >You can duplicate the buffer side by side with the
             | original buffer and in each window point will be at a
             | different location.
             | 
             | I actually attempted that last night. It doesn't work
             | unless you disable completion frameworks like company/LSP
             | because as soon as a completion event triggers, both
             | buffers snap to the completion location.
        
               | brlewis wrote:
               | I was unable to reproduce this just now in emacs 26.3
               | using company/tide. I've been thinking about moving from
               | tide to LSP, but that bug would drive me crazy so maybe I
               | should wait for it to be fixed.
        
               | gpderetta wrote:
               | this is very odd. I both routinely have duplicate buffers
               | visiting the same file and use LSP with company mode. I
               | have never seen the snap effect you are describing. Why
               | would completion trigger in both buffers? Maybe it is
               | company vs ac-mode or some other completion system?
        
             | rusk wrote:
             | To me this seems like the answer. We don't need to change
             | the way emacs works, we just need a standard way to do this
             | that is familiar to people coming at emacs from other
             | environments.
        
           | [deleted]
        
         | guessbest wrote:
         | I've seen all these before and it makes me wonder why someone
         | doesn't just make a different version of emacsen like guile-
         | emacs. There must be a lot of inertia behind emacs and
         | substantial amount of development effort to make all these
         | changes that keeps competitors to gnu emacs from progressing to
         | replace it.
        
           | slightwinder wrote:
           | Because of GNU Emacs biggest strenght, which is also it's
           | biggest flaw: the mountains of existing code. Any new emacs
           | must support what emacs already offers. And this means not
           | just to be able to run the code, but to also support the huge
           | amount of special and exotic features that Emacs offers.
           | Guile-emacs for example has a pretty long history on fighting
           | emacs-strings and it's special features.
           | 
           | There is the general believe that users don't wanna change
           | from emacs away and any new emacs should be ~100% compatible
           | to old emacs. But history has shown, people will not settle
           | with inferiour clones. So many work will be neccessary,
           | whatever someone will build to replace emacs.
        
         | slightwinder wrote:
         | Be aware that this are comments from people who use emacs. It
         | does'nt mean that implementing these wishes will also lead to
         | more users coming to emacs. Even the low hanging fruits from
         | the article are barely something that will bring in new users.
         | 
         | Though, distributions like spacemacs and doom-emacs have shown
         | that they are bait working well to get new users. Investing
         | more in that directions should pay out to some degree.
        
       | acomjean wrote:
       | I used Aquaemacs on my work machine. It wasn't perfect but it
       | really did integrate well with macOS. the command key doesn't
       | overlap with and native emacs commands which helped.
       | 
       | Im using IDEs more these days but still drop text into emacs if
       | on a remote terminal or need to use it's macro feature.
       | 
       | Installing emacs plugins or extending the application always
       | seems daunting and seems to always involve manual king editing a
       | list config file....
        
       | b5n wrote:
       | Lately there's been a lot of talk about what Emacs needs, written
       | mostly by people who don't understand Emacs.
       | 
       | Emacs is more of a journey than an application. It's similar to a
       | blacksmith forging their own tools - Emacs is the metaphorical
       | ingot, waiting to be transformed and molded by the user.
       | 
       | If you're happy with what you're using then you don't need Emacs,
       | and Emacs doesn't need to appeal to that crowd. Emacs isn't a
       | VSCode competitor, it's something entirely different, and it's
       | waiting for those who desire transcendence - shedding the limits
       | imposed by other tools.
       | 
       | You can install and use Emacs as quickly as any other
       | application, but to truly reap its benefit you must go deeper. I
       | don't see the need to cater to people who clearly want something
       | else, those tools already exist, please leave Emacs to those of
       | us who appreciate it for what it is.
       | 
       | I disagree with all the reccomendations made in this article, all
       | these changes are easy to implement, and the user is encouraged
       | to do so - one of the main selling points of Emacs.
       | 
       | That doesn't mean there is not room for improvement, Emacs is
       | still constantly improving. Additionally, I've encountered many
       | instances where a colleague or friend introduces me to some new
       | feature in their preferred application, the majority of the time
       | it's a feature that's been available in Emacs for years if not
       | decades.
       | 
       | I'd prefer we continue to focus on the needs of Emacs users
       | rather than the wants of non-emacs users. Emacs will still be
       | waiting for them when they're ready.
        
         | greggman3 wrote:
         | Seems like you completely missed the point of the article.
         | 
         | The article called out that none of the changes make emacs any
         | less powerful nor do any of the changes remove any
         | functionality. Users can still do everything they could always
         | do with emacs. They can still take this "journey" you mention.
         | All the changes do is let them get started quicker and jump in
         | with at least some familiarity.
         | 
         | Old emacs users such as yourself can keep on using your non-
         | standard keys and old terminology. For you, nothing would
         | change. For new users, they'd be productive quicker and still
         | able to take advantage of all the things that keep fans of
         | emacs using to emacs.
        
           | b5n wrote:
           | I can't help but feel that you missed the point of my
           | comment. New users should be encouraged to make those changes
           | themselves if they feel the need to. If that's not something
           | they're interested in, why use Emacs?
           | 
           | Anyone can publish a config and distribute it. For instance,
           | the author of this article could create a 'new user friendly'
           | config and distribute it just like doom, spacemacs, etc. If
           | it's popular enough it will see a lot of use, but my guess is
           | it would most likely wallow.
           | 
           | Making those changes default would require existing users to
           | update their configs, not necessarily a big deal, but for
           | what? So a new user can download Emacs, play with it for a
           | minute, and still conclude that Emacs is a dusty relic
           | because they don't understand the philosophy?
           | 
           | The whole idea of chasing new Emacs users is kind of silly,
           | Emacs is more popular than it has ever been, and if a new
           | user doesn't come to Emacs for what Emacs offers they were
           | never going to stay.
           | 
           | Out of the box solutions already exist, Emacs is in a
           | different category, and need not compete in that arena -
           | especially at the expense of current users.
           | 
           | Appreciate the reply, cheers.
        
             | SeanLuke wrote:
             | > I can't help but feel that you missed the point of my
             | comment. New users should be encouraged to make those
             | changes themselves if they feel the need to. If that's not
             | something they're interested in, why use Emacs?
             | 
             | This whole response is the reason Emacs is rapidly
             | approaching EOL.
             | 
             | You're putting the onus on _new users_ to modify Emacs into
             | a more beginner-friendly, standards-friendly editor? Their
             | response would be: thanks, but I 'll go try out Eclipse
             | instead.
             | 
             | It's not that new users desperately want to use Emacs. It's
             | that emacs is losing userbase at a tremendous clip because
             | its UI and design is so ancient and crufty and because the
             | community leaders think that's Just Fine for Them. If the
             | emacs community wants new blood, it's _they_ who have to
             | implement changes to attract it.
        
       | ashton314 wrote:
       | Inspired in part by this article, I put together a quasi-Emacs
       | distribution for my wife who is a writer. It turns on several of
       | the suggestions in this article by default, such as CUA mode,
       | etc.
       | 
       | https://github.com/ashton314/amethyst
        
       | titzer wrote:
       | FTA:
       | 
       | > Thus, every program had to be learned individually and its
       | complete user interface memorized. It was a sign of expertise to
       | have learned the UIs of dozens of applications, since a novice
       | user facing a new program would find their existing knowledge of
       | a similar application absolutely no use whatsoever.
       | 
       | Hello, web, looking at you. Except that no UI is stable long
       | enough that people ever bother mastering it.
        
       | roenxi wrote:
       | Interesting commentary. I do think this is a little harsh on the
       | poor Emacs undo system.
       | 
       | I can't really push back on the idea that Emacs' undo system is
       | excessively confusing, because I use Emacs and I don't understand
       | it. I usually save text in a second buffer if I think I'll need
       | it later.
       | 
       | But the solution should be to improve the UI rather than remove
       | functionality. Consider what magit did to a similar problem in
       | git - git is powerful with a weirdly crippled CLI. Magit adds a
       | great ... Emacs User Interface? EUI? and all is well.
       | 
       | There is a probably a similar solution to the Emacs Undo problem.
        
         | uselesscynicism wrote:
         | The author has a reputation for being an asshole among the
         | Emacs community; notably he is banned from #emacs on Libera,
         | formerly Freenode.
         | 
         | He isn't always wrong, but his personality is a little harsh,
         | as you put it, and it's worth keeping in mind when you read his
         | commentary.
        
         | psychstudio wrote:
         | Given your current situation, undo-tree-visualize will change
         | your life.
        
           | medo-bear wrote:
           | wow. is there something like this but for a whole project ?
        
             | blahgeek wrote:
             | I think that something is "git" :)
        
         | karatinversion wrote:
         | > I usually save text in a second buffer if I think I'll need
         | it later.
         | 
         | I use the kill ring for this.
        
           | abdullahkhalids wrote:
           | Doesn't the kill ring also behave similarly. That if you move
           | through the kill ring and stop, next time it will start from
           | that point, rather than the latest killed text?
           | 
           | I always get confused if I use too much of it.
        
             | lvass wrote:
             | I think the default M-y does that and it's confusing. helm-
             | show-kill-ring or counsel-yank-pop makes this much more
             | manageable kind of like how undo-tree makes undoing
             | simpler.
        
         | Guthur wrote:
         | Just add undo-tree and blow everyone's mind :)
        
       | mlang23 wrote:
       | The title is rather strange considering Emacs is Free Software.
       | Forks are fine. So why not UX forks. But demanding changes to the
       | original without going through the dev process as everyone else
       | would need to do is rather weird. "X should do Y" seems to be the
       | new way of treating eachother...
       | 
       | If you ask me, Emacs is fine as it is. In fact, I have been
       | bitten by two changes over the time which come from the "better
       | UI" camp. matching-paren-mode stopped to do the jumping cursor
       | thing, which I totally rely on working with a braille display. I
       | luckily caught this during the dev process and managed to submit
       | a patch which adds a flag to force the "old" behaviour. And
       | frankly, the guy who forced transient-mark mode on the world
       | needs to hugs till he feels the pain. I am always bewildered when
       | something I just marked suddenly vanishes just because I hit del.
       | Move cursor a bit and DEL suddenly does something different
       | again.
       | 
       | IOW, I am a long-time Emacs user, and really, stop breaking the
       | world just because you think something needs to be "modernized".
       | Breaking the user experience of long-term users in order to cater
       | to newbies is rather rude to those who have invested considerable
       | time to learn the system so they can use it as effectively as
       | possible.
        
         | bjourne wrote:
         | Xah Lee and friends maintains a mode called ErgoEmacs that
         | implements most of the changes he proposed:
         | https://github.com/ergoemacs/ergoemacs-mode
        
       | h2odragon wrote:
       | Why should emacs have to adopt _your_ changes (or mine)?
       | 
       | Make a "Modern-Emacs" and make it what _you_ want, make it
       | something you and others can love. Maybe others will love it
       | enough to contribute, maybe no one but you will ever use it.
       | Either way is great, and you still have your ideal tool.
        
       | medo-bear wrote:
       | i initially hated emacs' non-CUA bindings. now my thoughts are
       | opposite and because i spend so much time in emacs, when I need
       | to go to CUA it's quite annoying. i agree that CUA should be made
       | default, but with immediate option on start-up to use original
       | emacs bindings. i think it will put off far fewer people
        
       | cheezymoogle wrote:
       | To makes Emacs popular again, the core team needs to realize that
       | their actual competitors are desktop environments, window
       | managers, and automation tools rather than text editors and IDEs
       | at this point. Programmers know what they want in an editor--the
       | general populace doesn't (beyond a bare minimum of having it work
       | like Google Docs or Microsoft Word). Emacs doesn't need to change
       | at all, it just needs tools that go a few levels deeper in its
       | philosophy. That is to say, first make Emacs capable of
       | controlling non-Emacs GUIs and piloting web browsers. Second,
       | improve automation tooling that so that individuals can make and
       | share no-code macros for simple tasks. EXWM, an Emacs-based
       | window manager has already taken a great first step towards
       | accomplishing this.
       | 
       | Emacs is a keyboard macro editor stuck in a mouseless era where
       | Lisp Enlightenment was still a thing. It's great, but it's niche.
       | Most people don't actually want or need that (or to be more
       | specific, they don't know that they need or want it).
       | 
       | The way to directly grow the user-base is to get the general
       | population on board Emacs first, then evangelize for the idea
       | underlying open software afterwards.
       | 
       | You do that by solving the problems that they already have more
       | efficiently than their present solutions. Org-mode really nailed
       | it in this department. I switched to Emacs for org-mode, but
       | stayed for vanilla Emacs and EXWM. If Emacs were just Emacs, I'd
       | probably be using a different editor. Without definitive hooks,
       | Emacs is esoteric, opaque, and frightening to the general
       | population, if they know about Emacs at all besides vim's evil
       | rival. They just don't need Emacs in its current state.
       | 
       | What they do need is something that makes it trivial to automate
       | the dumb and repetitive tasks that they have to do every day on a
       | computer using a browser. This is no longer shell or plaintext
       | processing for the majority of non-IT users. It's interfacing
       | with GUIs. They need middleware to automate interfacing with
       | kludgy enterprise software. They need middleware to speed up
       | internet browsing.
       | 
       | If Emacs were a blank slate project today, fulfilling the same
       | type of needs, I could see it being a mashup of EXWM, Selenium,
       | and AutoIt. Its killer features would be a guarantee that the
       | same controls (that the user selected from a common set e.g.
       | Microsoft Word, Firefox, Vim, Emacs, etc.) worked functioned
       | between applications. Having the ability to record mouse and
       | keyboard macros without ever needing to see a line of code, but
       | also providing the ability to drive using the DOM, OCR, or
       | whatever niche smart interface is needed would be a second killer
       | feature. These coupled with the already standard Emacs and EXWM
       | features would attract a ton of new users that would actually
       | have a compelling reason to learn how to use it and then later
       | adopt to the Emacs paradigm.
       | 
       | EXWM is already 70% of the way for a minimum viable product for
       | something like this. It just needs to be bundled with more mature
       | macro tooling beyond 90s relics like xdotool and xautomation
       | along with a distro with sane defaults. Having a single
       | abstraction layer to control everything from userland on through
       | web platforms would be a dream for accessibility and returning a
       | semblance of control to users.
        
       | ycstohley wrote:
       | Do nothing. It's awesome.
        
       | giancarlostoro wrote:
       | I would love Emacs to get a facelift in the UI aspect. I like
       | what Neovim is doing for UI stuff. Maybe Remacs can head a
       | similar direction.
        
         | smackeyacky wrote:
         | Given that emacs just needs a good editor, maybe get them to
         | integrate neovim?
         | 
         | ;-)
        
       | wiz21c wrote:
       | been using emacs for several years... What could be improved is
       | speed. Too many times it doesn't see some keys combinations I
       | hit. Screen redraw should be faster too (I spend a lot of time in
       | front of it so that kind of "detail" is actually important).
       | Loading big files is slow. Editing long lines is slow. Of course
       | it doesn't happen often but when it happens it's annoying. Emacs
       | could also propose options to better align on common behaviors
       | (for example C-left/right arrow) doesn't behave like in other
       | editors.
       | 
       | It could also be more "discoverable". There are hundreds of
       | functions so that 100% of my needs are covered. But every now and
       | then, when I want to find a command, I DuckDuckGo it... It'd be
       | nicer if somehow there would be an assisted navigation in the
       | commands (or a pointer to that assistance I've been sorely
       | missing :-))
       | 
       | But I like it anyway. 'cos it's faithful, community grown, etc.
       | 
       | And if I had time I would contribute. But emacs is an old
       | platform so there are many choices buried in and reaching the
       | level of knowledge necessary to contribute is probably very
       | high...
        
         | Tomte wrote:
         | > What could be improved is speed.
         | 
         | Native compilation is coming in the next version and should
         | help quite a bit.
        
           | wiz21c wrote:
           | I'm already on the 28.0 branch, makes no visible difference
           | (my workflow is rather basic : editing lots of code, bits of
           | org mode, bits of WL)
        
             | daptaq wrote:
             | Are you sure you have libgccjit installed and configure
             | found it?
        
               | wiz21c wrote:
               | My configure's config.log says :
               | 
               | #define HAVE_LIBGCCJIT 1 #define HAVE_LIBGCCJIT_H 1
               | 
               | So, yep it has it.
        
           | medo-bear wrote:
           | i think running as a server should be made default. i imagine
           | that alot of people are opening alot of seperate instances
        
             | lloda wrote:
             | I don't run Emacs as a server because it freezes
             | occasionally and it's very painful to have a couple dozen
             | windows in eight workspaces go down.
             | 
             | If I could rely on Emacs never freezing, I'd be happy to
             | run it as a server.
        
               | lvass wrote:
               | I have init manage an emacs daemon but open separate
               | emacs instances if it's doing something important, even
               | though it practically never freezes for me. I think this
               | works fine as long as you don't have server-start in your
               | config.
        
         | rightbyte wrote:
         | Have you tried "native Emacs", AoT compiled with libgccjit?
        
         | kryptiskt wrote:
         | "Buttery Smooth Emacs" contains some insight into what goes on
         | under the surface of Emacs and is a great read:
         | https://m.facebook.com/notes/daniel-colascione/buttery-smoot...
        
         | abdullahkhalids wrote:
         | > It could also be more "discoverable".
         | 
         | I definitely agree that I want to type some string and it
         | should show a fuzzy search from all available commands and
         | their descriptions. That would be huge timesaver for
         | functionality I know exist, but I forgot the exact commands.
        
           | uncletaco wrote:
           | This is literally what `M-x` does. You want to do the same
           | for functions? `C-h f`. Variables? `C-h v`. Keybindings for
           | the current mode? `C-h ?`.
           | 
           | If I'm not mistaken when you install vanilla Emacs the screen
           | even includes a tutorial and guided tour that both tell you
           | these commands.
        
             | trey-jones wrote:
             | Yes, once you make the connection between every single
             | keypress invoking an elisp function, and the various help
             | combinations (variables, functions, keystrokes as you
             | mention), I think Emacs is actually the _most_
             | "discoverable" editor that I've used.
        
             | wiz21c wrote:
             | Except when the name of what you look for doesn't match
             | your mental model (yep, I'm in the group of people who
             | think software should adapt to human and not the other way
             | around)
             | 
             | Example : I want to change the encoding of a file when I
             | load it... Good luck figuring that out without resorting to
             | reading the documentation.
        
               | uncletaco wrote:
               | And here I would argue that, since the documentation is
               | included _with_ Emacs and can be pulled up _in_ the
               | editor, this is still a point towards its inherent
               | discoverability.
               | 
               | Again when you load emacs there's a link to the manual on
               | its splash screen and as a guided tour. A lot of people
               | rush to turn off this screen or suppress the menues on
               | startup (which I get, the menu bar is pretty ugly) but
               | they do have useful functionality for someone who doesn't
               | know Emacs.
        
             | b3morales wrote:
             | M-x completions aren't really "fuzzy" out of the box.
             | `partial-completion` is in default `completion-styles`,
             | yes, but then you have to do word breaks with dashes
             | manually.
        
           | vvillena wrote:
           | Discoverability is a key part of larger addons such as
           | Spacemacs and Doom Emacs. They come configured out-of-the-box
           | with nice completion panels for command and function search
           | panels.
        
         | yakubin wrote:
         | _> been using emacs for several years... What could be improved
         | is speed._
         | 
         | Same here. Long lines are especially painful. And it's quite
         | surprising what Emacs considers a "long line". I have a file in
         | my project with tests, where I have an array, with each element
         | of the array on a separate line, averaging at around 125
         | characters per line (some of them weird Unicode characters, so
         | not just ASCII). There are 52 lines of it. And when I scroll
         | down the file with C-v (Page Down basically) it scrolls quickly
         | up until I get close to this place, then I get something like
         | 1.5 seconds delay while it's hanging there. It's ridiculous.
         | 
         | Another thing is how easy it is to freeze Emacs into being
         | completely unusable when editing files over Tramp (with remote
         | work it's the go-to solution), caused by an unreliable
         | connection. Mostly it happens when the underlying VPN
         | connection is dropped. When that happens, Emacs freezes with no
         | explanation whatsoever. I can only guess what happened. C-g,
         | Esc, nothing works, regardless whether the VPN connection is
         | restored or not. The only solution at this point is killing
         | this instance of Emacs. Specifically for this purpose I crafted
         | a one-liner to kill the right instance of Emacs[1] (the one
         | under the mouse pointer):                 kill $(xdotool
         | getwindowpid $(xdotool getmouselocation | cut -d : -f 5))
         | 
         | Also, magit is painfully slow. When using it, I always wonder
         | if Emacs is frozen again, or if it's just magit being magit.
         | It's a shame Fork is not available for Linux.
         | 
         | [1]: The other instance of Emacs is used for tracking in org-
         | mode the time I spend on different tasks. I used to do it all
         | in a single instance, but then I kept losing that data due to
         | Emacs freezing like that, so I started using a separate
         | instance for the time-tracking. I really think Emacs should be
         | a multi-process application to prevent such situations.
        
           | mattmein wrote:
           | Regarding your long lines issue - from your description it
           | sounds instead like an unicode issue which I also ran into a
           | while back.
           | 
           | What happens is that your main programming font does not have
           | the unicode characters, so Emacs falls back to searching all
           | your fonts for each character it can't find, which is slow if
           | it has to search through many different fonts.
           | 
           | The solution is to ensure you have symbol fonts installed -
           | see the list of fonts here:
           | https://github.com/rolandwalker/unicode-fonts
        
           | jpeloquin wrote:
           | > some of them weird Unicode characters, so not just ASCII
           | 
           | This makes me suspicious that it's the font cache causing the
           | slowdown (assuming Windows), not long lines. I saw similar
           | symptoms a couple years ago and fixed it with (setq inhibit-
           | compacting-font-caches t).
           | 
           | You could also try increasing the garbage collection
           | threshold on the theory that the lag is a gc pause. I've
           | used:                 (setq gc-cons-threshold (* 511 1024
           | 1024))       (setq gc-cons-percentage 0.5)       (run-with-
           | idle-timer 5 t #'garbage-collect)
        
           | lloda wrote:
           | xkill ?
           | 
           | But I agree. Emacs should be faster.
        
             | yakubin wrote:
             | I didn't know of xkill. Thanks!
        
         | shrimpx wrote:
         | > Too many times it doesn't see some keys combinations I hit.
         | 
         | This caught my eye because I tend to think _the opposite_ of
         | this statement. Emacs doesn 't skip a beat on text input --
         | unlike say VSCode which has perceivable input lag. In my
         | experience, when Emacs gets slow it's a configuration problem,
         | like flychecking on every keystroke, or a slow/poorly written
         | third-party package. Raw emacs is blazing fast.
         | 
         | Disclaimer: I use `emacs -nw` -- no GUI toolkits.
        
       | pjmlp wrote:
       | Not sure what might still be missing, but I add the ones from
       | XEmacs for graphical tooling integration, that might still be
       | missing.
       | 
       | By the way, Gosling now rather uses IDEs.
        
         | vkazanov wrote:
         | He is THE Java guy, and java is pain without massive IDEs.
         | 
         | What I find here funny is that Netbeans is dead, and nobody
         | ever mentions it on HN. And we still talk about emacs.
        
           | bitwize wrote:
           | NetBeans is dead because JetBrains was a better NetBeans.
        
             | SeanLuke wrote:
             | NetBeans was killed by competition with Eclipse. IDEA had
             | nothing to do with it.
        
       | erlkonig wrote:
       | TL;DR * Don't change any of the naming, Emacs's naming is either
       | better than what the article proposes, or cannot be changed
       | everywhere it would need to be * Don't push for CUA copy/paste
       | unless there's a plan for where to put both the C-x and C-c
       | keymaps, and NOT on Alt (more info below) - if you have one, add
       | a menu item to turn it and similar things on together, with help
       | about it. * Add to the top of NEWS (C-h n) how to kill the NEWS
       | buffer
       | 
       | The article's point that Emacs's use of "frame" and "window" are
       | quirky is true, but running it on a true terminal would mean the
       | standard use of a the word "window" wouldn't even apply. However,
       | since few people do that now, I agree that "window" to describe
       | the view of Emacs overall on a terminal, or in a desktop window,
       | and "pane" for the subsections (NOT "frame") sounds reasonable.
       | EXCEPT that this would break the name usage in a staggeringly
       | large amount of LISP code, and thereby add cognitive dissonance
       | when reading code, documentation, function calls and so on. So
       | sadly, I think being resigned to being consistent instead of
       | having different terminology for a beginner vs advanced user is a
       | better call.
       | 
       | I've mapped keys for Alt, Meta, Super, and Hyper to my keyboard.
       | Since Alt key (and AltGr) are, as far as I know, notionally for
       | typing glyphs that aren't on the keyboard, it would be stupid to
       | mix the Alt and Meta concepts - those need to be on different
       | keys. All the article is doing by arguing that Alt should be
       | hardwired in to the default emacs keymap is going down the same
       | annoying path we did with backspace-vs-delete: Eternally
       | confusing two different things over a keyboard layout peculiarity
       | NOT shared by all users.
       | 
       | Yes, the Scratch buffer should default to text mode. Experienced
       | users who like the current default can configure for it.
       | 
       | C-k and C-y are named mnemonically, so unless one wants to move
       | copy to "Ctrl+c" and paste to "Ctrl+p" (which are both harder to
       | read, btw, thana C-c and C-p), don't break one feature (mnemonic
       | names) for another feature only some people prefer. Also, the
       | kill-ring system does NOT work like copy+paste, and there are a
       | number of complexities around X cut buffers the article author
       | may not be aware of where something you kill/copy may not end up
       | in the buffer the other app can yank/paste.
       | 
       | There also nothing wrong with "buffers" - a editor with a concept
       | lacking in the UX many other editors is certainly allowed to
       | apply a single consistent name to it. It's unfortunate that this
       | use of the word is unique to software (compare "buffer zone" in
       | normal English)... "stash" at least had a concrete meaning to
       | non-devs ("working copy" doesn't work since the in-RAM could be
       | the original, "draft" doesn't work because it may have been saved
       | to disk, etc, etc). "slate" would have been an amusing choice. As
       | with the discussion on "window"/"frame", changing "buffer"
       | consistently would be a nightmare.
       | 
       | To the user complaining about copy/paste/etc not being all
       | together, they are in contrast, bound to mnemonically reasonable
       | keys. Also, Dvorak. Also, a huge number of PC users don't use the
       | Ctrl+{C,V,X} anyway, and don't understand that complaint to begin
       | with.
       | 
       | "Keybind" is a pretty commonly used term in PC games, and is a
       | superset of "Keyboard shortcut" since it's understood by PC
       | gamers to include mouse buttons and so on as well. It's
       | notionally hard to apply "keyboard shortcut" to the act of
       | binding a function to a _mouse_ key, so the  "keyboard shortcut"
       | falls short of the concept and will just cause confusion. Now
       | saying a key is "bound" to an action may be confusing, sure, and
       | what's funny is that saying a key is "tied" to an action would
       | probably make sense to most users. Yet those are synonyms. Go
       | figure.
       | 
       | Having taught users how to use editors in Unix for years, my
       | students only complained about one thing in Emacs - getting stuck
       | in NEWS and not knowing how to get out. Usually this happened
       | _before_ they knew how to kill /switch buffers. Nothing else
       | really bothered them, and they largely learned by using the in-
       | editor tutorial. (those users were also taught vi, which is
       | unquestionably harder to get started in, though vim today now
       | points users at a tutorial)
        
       ___________________________________________________________________
       (page generated 2021-08-28 23:00 UTC)