From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Jeff Norden Newsgroups: gmane.emacs.devel Subject: Re: "Why is emacs so square?" Date: Mon, 13 Jul 2020 17:36:15 -0500 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="5593"; mail-complaints-to="usenet@ciao.gmane.io" To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Tue Jul 14 00:38:31 2020 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jv75j-0001IE-3i for ged-emacs-devel@m.gmane-mx.org; Tue, 14 Jul 2020 00:38:31 +0200 Original-Received: from localhost ([::1]:51104 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jv75i-0003G6-4f for ged-emacs-devel@m.gmane-mx.org; Mon, 13 Jul 2020 18:38:30 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:36784) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jv752-0002qn-Go for emacs-devel@gnu.org; Mon, 13 Jul 2020 18:37:48 -0400 Original-Received: from mta.tntech.edu ([149.149.2.87]:10546) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jv74x-0006Mc-HH for emacs-devel@gnu.org; Mon, 13 Jul 2020 18:37:48 -0400 Original-Received: from math.tntech.edu (unknown [149.149.102.6]) by mta.tntech.edu (Postfix) with ESMTPS id F22253000D84 for ; Mon, 13 Jul 2020 17:36:17 -0500 (CDT) Original-Received: from norden.tntech.edu ([149.149.102.4] helo=norden.math.tntech.edu) by math.tntech.edu with esmtp (Exim 4.92) (envelope-from ) id 1jv73X-0000jd-NH for emacs-devel@gnu.org; Mon, 13 Jul 2020 17:36:15 -0500 Original-Received: by norden.math.tntech.edu (Postfix, from userid 742) id A24152572B73; Mon, 13 Jul 2020 17:36:15 -0500 (CDT) In-Reply-To: (message from Jeff Norden on Tue, 26 May 2020 12:09:48 -0500) X-SA-Spam-Score: 0.0 X-SA-Spam-Report: Spam detection software, running on the system "math.tntech.edu", has NOT identified this incoming email as spam. If you have any questions, contact @@CONTACT_ADDRESS@@ pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 T_SPF_HELO_TEMPERROR SPF: test of HELO record failed (temperror) 0.0 T_SPF_TEMPERROR SPF: test of record failed (temperror) Received-SPF: none client-ip=149.149.2.87; envelope-from=jnorden@math.tntech.edu; helo=mta.tntech.edu X-detected-operating-system: by eggs.gnu.org: First seen = 2020/07/13 18:36:18 X-ACL-Warn: Detected OS = Linux 3.11 and newer [fuzzy] X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_NONE=0.001, SPF_NONE=0.001, URIBL_BLOCKED=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:252932 Archived-At: This is a follow-up to may post from May, plus a concrete suggestion. Of course, my Shakespere analogy was a bit tongue-in-cheek. But software and literature are both artistic human activities, and have more similarities than you might think. This would be more apparent if Knuth's concept of Literate Programming were used more widely. Of course, software *must* be updated regularly. But I still contend that the current pace borders on insanity. Updates often seem to be done merely to satisfy some current "ui" or "ux" trends. In other projects, including GPL ones, this has resulted in removing functionality and stripping out large swaths of source code. I would hate to see that happen to emacs. There is a Doonsbury cartoon that I like, even though it refers to the most un-free software platform in existence: https://www.gocomics.com/doonesbury/2014/03/16 I think the risk of emacs becoming extinct because of a lack of users is overblown. But, I probably overstepped in arguing for some sort of elitist attitude. I still think it would be counterproductive to concentrate on superficial changes, like button shapes, just to attract more "warm bodies." On the other hand, anything that makes it easier for a person to reach the point where they say: Hey, I never realized that you could do *that* with an editor! is absolutely worth pursuing. This would, hopefully, help convince them of the value of not just emacs, but free software more generally. ---------- In this last regard, it occurs to me that a small defun from my personal dot-emacs might help. Everyone starting out with emacs eventually finds themselves in some sort of state that they need to get out of. Often a recursive edit, sometimes several level deep. I've never been a big fan of ESC ESC ESC. For a while, I got in the habit of typing "M-X top-level" a lot. Then I added the following to my dot-emacs, and have been quite happy with it: (defun keyboard-quit-strong () "Run `keyboard-quit' to return emacs to a more responsive state. If repeated twice in a row, run `top-level' instead, to also exit any recursive editing levels." (interactive) (when (eq last-command 'keyboard-quit-strong) (setq this-command 'top-level) ;dis-arm a 3rd C-g (ding) (top-level)) ;; Not reached after `top-level'. (A rare behavior in lisp.) (keyboard-quit)) (global-set-key "\C-g" 'keyboard-quit-strong) Here are my reasons for preferring this over ESC ESC ESC: 1) Everyone using emacs has to learn C-g, since it is the only way to interrupt the interpreter. One less thing to remember is always good. 2) If you manage to get yourself 10-levels deep in recursive edits somehow, ESC ESC ESC ESC... is pretty tedious, since it only exits one level for each three ESC's. 3) When the first ESC ESC ESC doesn't work for some reason, and you try more, it's easy to lose count and wind up with an extra ESC. You might type another key before 'ESC-' appears in the echo area, with some unintended (albeit usually benign) consequence. 4) Some of the ESC ESC ESC actions, especially delete-other-windows, seem unexpected to me. Isn't it more confusing, rather than helpful, to have the window configuration you've carefully set up suddenly disappear? I suppose it might make sense after *Help* pops up, unless you've moved the point into the *Help* buffer. It seems to me that 'C-x 1' and 'C-x 2' are bindings that just about everyone learns early on anyway, but I could be wrong. A few other points: If you repeatedly type C-g, the echo area toggles between "Quit" and "Back to top level." This nicely indicates what is going on. If emacs is stuck in the interpreter, it takes at least three C-g's, to get top-level to run. Despite this, I have yet to break the 'G' key on any of my keyboards, no matter how frustrated I've gotten :-). I don't think I have ever accidentally exited from a recursive edit that I wanted to keep using, such as a backtrace, by unintentionally typing C-g too many times. But this it is something to be considered. On the other hand, I've recently used this binding *a lot* along with debug-on-entry. ---------- Hope this helps, and that anyone reading this is healthy and staying safe. -Jeff Norden