unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
From: Emanuel Berg <moasen@zoho.com>
To: help-gnu-emacs@gnu.org
Subject: Re: on adding a function call to a s-exp
Date: Wed, 13 Jun 2018 18:48:31 +0200	[thread overview]
Message-ID: <86a7rytyxs.fsf@zoho.com> (raw)
In-Reply-To: mailman.1823.1528906669.1292.help-gnu-emacs@gnu.org

Távora wrote:

> DWIM guessing

One point regarding language: DWIM is far from
the computer "guessing" what the user wants!
Because the different actions are very
predictable based on the current state (which
is known, all clear and visible, and often part
of the workflow just one second ago), the Emacs
user is very aware of what is going on, and the
computer response is equally predictable!

Seeing the state is whatever it is, or setting
it up a certain way prior to invoking the DWIM
command, is thus part of executing the command
in the way that fits the situation!

So DWIM is a way to set up a natural, intuitive
workflow with less keys to memorize - it is not
the user being moronic, hitting the same key
for tons of purposes, and then have the
computer sweat in panic, trying to put together
something sensible of it!

There seems to be at least two definitions
of DWIM.

One is to do different things depending on if
some situation is or is not there. And it can
be based on something as simple as the position
of the cursor.

For example, in dired, if there is a file at
point, kill its path; if there isn't, kill the
path of the directory. As in:

    (defun dired-kill-path-dwim ()
      (interactive)
      (kill-new
       (or (dired-get-filename nil t)    ; kill file including path; or
           (dired-current-directory) ))) ; kill directory path if file u/a

The other, which is more undisputably DWIM, is
when you either use the region, or don't use
the region because there isn't one, and instead
fall back to a default behavior.

For example, to count the chars, if there is
a region, count the chars in the region, if
there isn't one, count the chars in the whole
buffer. As in:

    (defun count-chars (&optional start end)
      (interactive
       (if (use-region-p)
           (list (region-beginning) (region-end))
         (list (point-min) (point-max)) ))
      (message "%d" (- end start)) )

As you see, this is all-deterministic, no
guessing, and setting the state up is part of
executing the command. And that sounds
complicated and cool but actually it is
completely natural.

-- 
underground experts united
http://user.it.uu.se/~embe8573


  parent reply	other threads:[~2018-06-13 16:48 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-06-09 22:05 on adding a function call to a s-exp Robert Girault
2018-06-10  2:38 ` Noam Postavsky
2018-06-10  4:46   ` João Távora
     [not found]   ` <mailman.1619.1528606007.1292.help-gnu-emacs@gnu.org>
2018-06-11  1:04     ` Robert Girault
2018-06-11  1:30       ` Noam Postavsky
2018-06-12 14:40         ` João Távora
2018-06-12 21:34           ` Noam Postavsky
     [not found]       ` <mailman.1644.1528680649.1292.help-gnu-emacs@gnu.org>
2018-06-11 14:29         ` Robert Girault
2018-06-12 14:24       ` João Távora
     [not found]       ` <mailman.1739.1528813488.1292.help-gnu-emacs@gnu.org>
2018-06-13 21:06         ` Robert Girault
2018-06-10 21:28 ` Xavier Maillard
     [not found] ` <mailman.1614.1528598292.1292.help-gnu-emacs@gnu.org>
2018-06-11  0:59   ` Robert Girault
2018-06-11  1:21     ` Michael Heerdegen
2018-06-11  1:26       ` Michael Heerdegen
2018-06-11  2:18       ` Michael Heerdegen
     [not found]     ` <mailman.1642.1528680086.1292.help-gnu-emacs@gnu.org>
2018-06-11 14:35       ` Robert Girault
2018-06-12 14:34         ` João Távora
2018-06-12 15:14           ` Óscar Fuentes
2018-06-12 16:17             ` Drew Adams
2018-06-12 16:26               ` João Távora
2018-06-13  7:11               ` Andreas Röhler
2018-06-13 10:44               ` João Távora
2018-06-13 14:39                 ` Drew Adams
2018-06-13 15:31                   ` João Távora
2018-06-13 16:03                     ` Drew Adams
2018-06-13 16:01                 ` Andreas Röhler
2018-06-13 16:17                   ` João Távora
     [not found]                   ` <mailman.1823.1528906669.1292.help-gnu-emacs@gnu.org>
2018-06-13 16:48                     ` Emanuel Berg [this message]
2018-06-13 17:32                       ` João Távora
2018-06-13 18:23                       ` Drew Adams
     [not found]                       ` <mailman.1848.1528914250.1292.help-gnu-emacs@gnu.org>
2018-06-13 19:18                         ` Emanuel Berg
2018-06-12 16:24             ` João Távora
2018-06-12 17:00               ` Eric Abrahamsen
2018-06-12 17:04               ` Óscar Fuentes
2018-06-12 17:07                 ` Eric Abrahamsen
2018-06-12 17:19                   ` João Távora
2018-06-12 17:26                     ` Eric Abrahamsen
2018-06-12 17:16                 ` João Távora
     [not found]             ` <mailman.1747.1528820272.1292.help-gnu-emacs@gnu.org>
2018-06-13 21:09               ` Robert Girault
     [not found]         ` <mailman.1740.1528814086.1292.help-gnu-emacs@gnu.org>
2018-06-13 21:02           ` Robert Girault
2018-06-13 21:32             ` João Távora
     [not found] ` <mailman.1637.1528666199.1292.help-gnu-emacs@gnu.org>
2018-06-11  1:05   ` Robert Girault

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

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=86a7rytyxs.fsf@zoho.com \
    --to=moasen@zoho.com \
    --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.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).