From: Xah Lee <xah@xahlee.org>
To: help-gnu-emacs@gnu.org
Subject: Re: How to get rid of *GNU Emacs* buffer on start-up?
Date: Thu, 18 Sep 2008 16:50:50 -0700 (PDT) [thread overview]
Message-ID: <823901dd-c54c-4e3b-b6ad-512d52724a46@z11g2000prl.googlegroups.com> (raw)
In-Reply-To: 873ajzwoqu.fsf@kobe.laptop
My previous message (the rot13'd one), is now polished and published
on my website, at:
Suggestions on Emacs's Scratch Buffer
http://xahlee.org/emacs/modernization_scratch_buffer.html
The following is a text version.
----------------------------------
Suggestions on Emacs's Scratch Buffer
Xah Lee, 2008-09
In the article The Modernization of Emacs, i suggested that emacs's
“*scratch*” buffer be removed. In this article, we give some detail
about it.
In the article, i gave the following as primary reasons that scratch
buffer should be removed:
* It is not useful by 99% of letter writers. If they wanted a
scratch pad, they can open a new document and not save it. This way is
familiar to all software users.
* The “*scratch*” “buffer” is primarily designed for elisp
programers. (it defaults to lisp mode) Majority of people who use
emacs are not lisp coders. For lisp coders, they can easily customize
their emacs to have a “*scratch*” “buffer”.
* The “*scratch*” “buffer” is a intrusive idiosyncrasy. It is
persistent, cannot be closed (it regenerates). It is foreign to all
programers. This idiosyncrasy is the first thing presented to users,
and it persists.
Here are few minor reasons:
* There is no easy, intuitive way to create multiple scratch
buffers. (it is done by using the switch-to-buffer command (C-x b) and
give name that is not one of existing buffers.)
* When the scratch buffer is closed, emacs does not prompt user to
save it. This easily causes data loss.
* A scratch pad can be very useful not just for temporary elisp
code but for any scratch notes or programing in other languages. (For
example, well known programer Stevey Yegg in his popular Effective
Emacs↗ blog list it as a top 10 tip in emacs productivity.) Emacs's
“*scratch*” buffer is narrowly geared for elisp editing only,
defaulting to emacs-lisp-mode.
* Emacs does not provide a user level function to create a new
buffer. It has “Open New file...”, which actually creates a empty file
and immediately prompt user for a file name. This is annoying. Most
apps's New File command actually just create a new buffer, and only
when user save it it becomes a file. When user closes it, it prompts
for saving.
Proposed Fix
I propose that emacs should also add a menu command “New buffer”, with
the keyboard shortcut “Ctrl+n”. Once called, it should create a
scratch buffer titled “untitled”. If one already exists, append
numbers such “untitled 2”. Here are the reasons:
* The New command is a standard across Mac, Windows, Unix (Linux).
It is familiar to all software users.
* The Ctrl+n shortcut for New is standard and familiar to all
software users.
* A New Buffer command (where the corresponding elisp command name
might will be named new-empty-buffer), can supplant completely the
functionality of *scratch* buffer.
* When users want to have a scratch buffer, he can create it by
simply pressing the shortcut, and when he doesn't want it, he can
simply close it with a standard keystroke Ctrl+w.
* By adopting the New Buffer and Ctrl+n, users can intuitively
create multiple scratch buffers for any purpose.
* The name “untitled” is conventional, far more widely understood,
and more general than “scratch”.
* For those who uses scratch buffer for elisp coding, she can set
the default mode for untitled buffer to emacs lisp mode.
* Adopting the suggestion would fix several problems for those who
actually use emacs's scratch buffer. (1) emacs no longer mysteriously
respawn the “*scratch*” buffer when user didn't want it. (2) user can
create multiple scratch buffers by just pressing a shortcut. (3) User
can close a scratch buffer and emacs will ask the user if she wants to
save it.
Draft Implementation
The above suggestion is experimentally implemented in my Ergonomic
Keyboard Shortcut Layout For Emacs. The following are the elisp files,
primarily the modern_operations.el:
* ergonomic_keybinding_dvorak.el.
* ergonomic_keybinding_qwerty.el.
* modern_operations.el.
Some detail about the implementation:
* create-new-buffer will create a new empty buffer named
“untitled”. (this should be added to the menu under “File‣New Buffer”
but i haven't done that yet.)
* create-new-buffer has standard keyboard shortcut Ctrl+n.
* elisp command close-current-buffer will close the current
buffer, and if it is a buffer not associated with a file (such as
“untitled”), it'll ask user to save (unless it has no content)
* close-current-buffer has the standard keyboard shortcut Ctrl+w.
* close-current-buffer should have menu under “File‣Close”, but it
is not currently done. The existing “File‣Close” menu command in emacs
22.2 calls kill-this-buffer, which has 2 problems. (1) it doesn't have
a shortcut. (2) it doesn't ask users to save a buffer that are not
associated with file (in effect, any text in the buffer is
irreversibly lost immediately). The standard emacs command used to
close a file is kill-buffer (Ctrl+x k). It has a major problem of
prompting user even if the file is already saved.
I have been using the above code daily since late 2007, with
incremental improvement and bug fixes. i'm sure it can use a lot more
polishing for public use. The code is GPL'd, so feel free to grab
pieces for your own use or submit into GNU.
Xah
∑ http://xahlee.org/
☄
next prev parent reply other threads:[~2008-09-18 23:50 UTC|newest]
Thread overview: 163+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-09-16 5:28 How to get rid of *GNU Emacs* buffer on start-up? Davin Pearson
2008-09-16 7:39 ` Giorgos Keramidas
2008-09-16 8:47 ` Davin Pearson
2008-09-16 8:14 ` Adam Rooke
2008-09-16 8:44 ` Nikolaj Schumacher
2008-09-16 8:44 ` Charles Sebold
2008-09-16 20:57 ` Xah
2008-09-17 1:22 ` Giorgos Keramidas
2008-09-18 5:35 ` Xah Lee
2008-09-18 5:41 ` Xah Lee
2008-09-19 0:39 ` tyler
[not found] ` <mailman.19510.1221784782.18990.help-gnu-emacs@gnu.org>
2008-09-19 4:16 ` David Kastrup
2008-09-19 12:42 ` tyler
2008-09-20 1:53 ` Allan Gottlieb
2008-09-29 19:20 ` tyler
2008-10-01 10:26 ` Tassilo Horn
[not found] ` <mailman.19545.1221828161.18990.help-gnu-emacs@gnu.org>
2008-09-19 21:09 ` David Kastrup
2008-09-19 4:49 ` Xah Lee
2008-09-18 23:50 ` Xah Lee [this message]
2008-09-19 8:53 ` Eli Zaretskii
[not found] ` <mailman.19536.1221814453.18990.help-gnu-emacs@gnu.org>
2008-09-19 11:34 ` Xah Lee
2008-09-19 13:04 ` Cor Gest
2008-09-19 14:21 ` Xah Lee
2008-09-19 15:32 ` Eric S Fraga
2008-09-20 0:54 ` Xah Lee
2008-09-22 8:25 ` Eric S Fraga
2008-09-22 11:40 ` Xah Lee
2008-09-22 12:16 ` Lennart Borgman (gmail)
[not found] ` <mailman.19683.1222085805.18990.help-gnu-emacs@gnu.org>
2008-09-22 13:53 ` Xah Lee
2008-09-22 14:50 ` Lennart Borgman (gmail)
[not found] ` <mailman.19689.1222095038.18990.help-gnu-emacs@gnu.org>
2008-09-23 13:49 ` Xah Lee
2008-09-23 15:47 ` Lennart Borgman (gmail)
[not found] ` <mailman.19771.1222184864.18990.help-gnu-emacs@gnu.org>
2008-09-23 16:27 ` Xah Lee
2008-09-23 16:47 ` Lennart Borgman (gmail)
[not found] ` <mailman.19774.1222188466.18990.help-gnu-emacs@gnu.org>
2008-09-23 16:59 ` Xah Lee
2008-09-23 17:43 ` Lennart Borgman (gmail)
2008-09-22 18:25 ` Eric S Fraga
2008-09-23 8:16 ` Xah Lee
2008-09-23 13:02 ` Eric S Fraga
2008-09-23 15:20 ` Xah Lee
2008-09-23 18:55 ` Michael Ekstrand
2008-09-24 1:59 ` Xah Lee
2008-09-24 8:31 ` Eric S Fraga
2008-09-24 10:12 ` Giorgos Keramidas
2008-09-24 11:46 ` Alexey Pustyntsev
[not found] ` <mailman.19815.1222259480.18990.help-gnu-emacs@gnu.org>
2008-09-24 12:52 ` Andreas Politz
2008-09-24 13:30 ` Xah Lee
2008-09-24 9:28 ` Nikolaj Schumacher
[not found] ` <mailman.19809.1222248534.18990.help-gnu-emacs@gnu.org>
2008-09-24 14:38 ` Xah Lee
2008-09-24 17:15 ` Nikolaj Schumacher
[not found] ` <mailman.19834.1222276553.18990.help-gnu-emacs@gnu.org>
2008-09-25 3:16 ` Xah
2008-09-23 20:34 ` Nikolaj Schumacher
2008-09-23 21:16 ` harven
2008-09-24 1:35 ` Xah Lee
2008-09-19 16:13 ` Nikolaj Schumacher
[not found] ` <mailman.19563.1221840835.18990.help-gnu-emacs@gnu.org>
2008-09-20 0:02 ` Xah Lee
2008-09-20 1:12 ` Chetan
2008-09-20 2:35 ` Kevin Rodgers
2008-09-24 7:35 ` Kevin Rodgers
[not found] ` <mailman.19800.1222241766.18990.help-gnu-emacs@gnu.org>
2008-09-24 9:26 ` Xah Lee
2008-09-26 4:52 ` Kevin Rodgers
[not found] ` <mailman.19977.1222404766.18990.help-gnu-emacs@gnu.org>
2008-09-26 12:39 ` Xah
[not found] ` <mailman.19592.1221878128.18990.help-gnu-emacs@gnu.org>
2008-09-20 2:58 ` Xah Lee
2008-09-24 7:54 ` Kevin Rodgers
[not found] ` <mailman.19802.1222242899.18990.help-gnu-emacs@gnu.org>
2008-09-24 10:02 ` Xah Lee
2008-09-24 11:42 ` Xah Lee
2008-09-24 12:51 ` rustom
2008-09-24 13:33 ` Bug? buffer-offer-save Xah Lee
2008-09-24 14:31 ` Juanma Barranquero
2008-09-24 14:33 ` Juanma Barranquero
2008-09-26 5:40 ` How to get rid of *GNU Emacs* buffer on start-up? Kevin Rodgers
[not found] ` <mailman.19978.1222407641.18990.help-gnu-emacs@gnu.org>
2008-09-26 13:28 ` Xah
2008-09-26 21:45 ` Alan Mackenzie
2008-09-27 2:20 ` Kevin Rodgers
[not found] ` <mailman.20050.1222482050.18990.help-gnu-emacs@gnu.org>
2008-09-27 14:27 ` Xah
[not found] ` <mailman.20040.1222465122.18990.help-gnu-emacs@gnu.org>
2008-09-27 0:15 ` Chetan
2008-09-27 7:57 ` Andreas Politz
2008-09-27 14:17 ` Xah
2008-09-27 12:42 ` Chetan
2008-09-27 16:19 ` Xah
2008-09-27 17:28 ` Sean Sieger
2008-09-27 18:12 ` B. T. Raven
2008-09-27 22:48 ` Chetan
2008-09-28 3:43 ` Xah
[not found] ` <mailman.20073.1222536552.18990.help-gnu-emacs@gnu.org>
2008-09-28 2:46 ` Xah
2008-09-28 16:18 ` stan
2008-09-28 17:11 ` Richard Riley
2008-09-29 2:34 ` stan
2008-09-29 2:58 ` Richard Riley
2008-09-29 15:39 ` Cor Gest
2008-09-29 16:03 ` Richard Riley
2008-09-29 16:37 ` Cor Gest
2008-09-29 17:50 ` Richard Riley
2008-10-15 16:01 ` buffers and files and plus ca la change and all that OtherMichael
2008-10-01 1:37 ` How to get rid of *GNU Emacs* buffer on start-up? stan
2008-10-01 11:44 ` rustom
2008-10-01 19:58 ` Sean Sieger
2008-10-01 14:19 ` Richard Riley
2008-09-29 14:06 ` rustom
2008-09-29 14:32 ` Richard Riley
2008-09-29 16:56 ` Chetan
2008-09-30 9:46 ` Paul R
2008-09-30 13:37 ` Alexey Pustyntsev
2008-10-01 7:27 ` Paul R
[not found] ` <mailman.20241.1222781309.18990.help-gnu-emacs@gnu.org>
2008-09-30 19:20 ` xraysmalevich
2008-09-20 10:51 ` Nikolaj Schumacher
2008-09-19 13:08 ` xraysmalevich
2008-09-19 14:13 ` Xah Lee
2008-09-19 15:21 ` xraysmalevich
2008-09-19 15:36 ` Xah Lee
2008-09-19 13:46 ` Eli Zaretskii
[not found] ` <mailman.19551.1221832017.18990.help-gnu-emacs@gnu.org>
2008-09-19 14:32 ` Xah Lee
2008-09-19 15:31 ` Eli Zaretskii
2008-09-19 16:39 ` Alan Mackenzie
2008-09-20 0:12 ` Xah Lee
2008-09-20 0:48 ` Cor Gest
2008-09-20 3:06 ` Xah Lee
[not found] ` <mailman.19558.1221838316.18990.help-gnu-emacs@gnu.org>
2008-09-19 18:11 ` Lowell Gilbert
2008-09-19 20:36 ` Alan Mackenzie
2008-09-20 0:50 ` Xah Lee
2008-09-20 8:17 ` Alan Mackenzie
[not found] ` <mailman.19598.1221898300.18990.help-gnu-emacs@gnu.org>
2008-09-22 13:07 ` Xah Lee
2008-09-22 16:29 ` Nikolaj Schumacher
2008-09-22 16:58 ` Sean Sieger
[not found] ` <mailman.19702.1222100964.18990.help-gnu-emacs@gnu.org>
2008-09-22 17:06 ` Xah Lee
2008-09-23 19:05 ` Nikolaj Schumacher
2008-09-24 2:08 ` Xah Lee
2008-09-24 4:32 ` Ross A. Laird
[not found] ` <mailman.19792.1222230766.18990.help-gnu-emacs@gnu.org>
2008-09-24 10:22 ` Giorgos Keramidas
2008-09-25 4:01 ` Xah
[not found] ` <mailman.19706.1222102753.18990.help-gnu-emacs@gnu.org>
2008-09-22 17:56 ` Xah Lee
2008-09-22 19:15 ` Ted Zlatanov
2008-09-23 14:47 ` Xah Lee
2008-09-22 22:13 ` Alan Mackenzie
[not found] ` <mailman.19718.1222121219.18990.help-gnu-emacs@gnu.org>
2008-09-22 22:36 ` David Kastrup
2008-09-24 11:43 ` Alan Mackenzie
[not found] ` <mailman.19814.1222256243.18990.help-gnu-emacs@gnu.org>
2008-09-27 16:35 ` Xah
2008-09-20 8:50 ` Alan Mackenzie
[not found] ` <mailman.19599.1221900241.18990.help-gnu-emacs@gnu.org>
2008-09-22 13:08 ` Xah Lee
2008-09-17 7:36 ` Kevin Rodgers
[not found] ` <mailman.19399.1221637030.18990.help-gnu-emacs@gnu.org>
2008-09-17 23:16 ` Xah
2008-09-21 12:06 ` Christian Herenz
2008-09-21 19:01 ` Joost Kremers
2008-09-24 14:39 ` William Case
[not found] ` <mailman.19824.1222267150.18990.help-gnu-emacs@gnu.org>
2008-09-25 5:06 ` Tim X
2008-09-25 6:35 ` Xah
2008-09-25 8:13 ` Jonathan Groll
[not found] ` <mailman.19898.1222330438.18990.help-gnu-emacs@gnu.org>
2008-09-25 9:09 ` Andreas Politz
2008-09-25 10:01 ` Juanma Barranquero
2008-09-25 11:17 ` Xah
[not found] ` <mailman.19906.1222336893.18990.help-gnu-emacs@gnu.org>
2008-09-25 12:07 ` Xah
2008-09-25 12:53 ` Lennart Borgman
[not found] ` <mailman.19912.1222347213.18990.help-gnu-emacs@gnu.org>
2008-09-25 13:21 ` Xah
2008-09-25 13:48 ` Lennart Borgman
[not found] ` <mailman.19917.1222350495.18990.help-gnu-emacs@gnu.org>
2008-09-25 13:57 ` Xah
2008-09-25 15:39 ` Lennart Borgman (gmail)
[not found] ` <mailman.19926.1222357204.18990.help-gnu-emacs@gnu.org>
2008-09-26 1:07 ` Xah
2008-09-25 11:00 ` Xah
2008-09-25 13:34 ` language (was: How to get rid of *GNU Emacs* buffer on start-up?) Ted Zlatanov
2008-09-25 13:49 ` Xah
2008-09-25 19:47 ` language Ted Zlatanov
2008-09-25 17:58 ` How to get rid of *GNU Emacs* buffer on start-up? Sean Sieger
[not found] ` <mailman.19940.1222365501.18990.help-gnu-emacs@gnu.org>
2008-09-26 1:04 ` Xah
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=823901dd-c54c-4e3b-b6ad-512d52724a46@z11g2000prl.googlegroups.com \
--to=xah@xahlee.org \
--cc=help-gnu-emacs@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.