all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: npostavs@users.sourceforge.net
To: Drew Adams <drew.adams@oracle.com>
Cc: 25777@debbugs.gnu.org
Subject: bug#25777: 25.1; [PATCH] `rectangle--pos-cols' should not move point
Date: Wed, 01 Mar 2017 20:21:44 -0500	[thread overview]
Message-ID: <87zih4bhhz.fsf@users.sourceforge.net> (raw)
In-Reply-To: <512a3db8-49d0-4802-aecc-2d71049e0b25@default> (Drew Adams's message of "Tue, 28 Feb 2017 07:11:08 -0800 (PST)")

On Tue, Feb 28, 2017 at 10:11 AM, Drew Adams <drew.adams@oracle.com> wrote:
>
> But IMHO, it is generally better to scope a `save-excursion'
> as tightly as possible around the movement that you want to
> control (hide, erase, undo).

Well, my opinion is just about the opposite, but I won't block the patch
for that.

> Why?  Because it makes the code much clearer.  It tells you
> that outside the `save-excursion' zones point is unlikely
> to be moved.  And that makes maintenance easier and less
> error-prone.

I find wider scoping of `save-excursion' to be clearer.  It tells you
that the code outside the save-excursion zone cares about the original
value of point.  If there are multiple `save-excursion' zones, I have
to look at what comes after each of them, to see what they're using
point for.  Therefore maintenance becomes harder and more error-prone
with many smaller save-excursion calls.

With a single save-excursion, it's immediately clear that the value of
point is unchanged by the function.  And it's clear that adding more
code to the function will preserve that property, so maintenance is
easier.

> Putting a `s-e' at a wider location is analogous to putting
> a mutex block at an unnecessarily wide location.  (Yes,
> there is no real connection between those two, but it comes
> down to doing something only where/when it's needed.)

I agree they are roughly analogous, but again come to the opposite
conclusion.  It would be simpler and clearer to make the mutex as wide
as possible without causing deadlock, but for performance reasons, we
choose as narrow a scope as possible.  The performance reasons don't
apply to save-excursion though.  It comes down to doing something
(grabbing/releasing a mutex or saving/restoring point) only where/when
it's needed (which would be once at the beginning and end of the
function in this case) rather than many redundant times (which would
be each time goto-char is called).

> If you confirm that you really want that wider scope here
> for `s-e' then I'll do that.  Otherwise, I'll keep the
> `s-e' occurrences where they are but do the renaming and
> add a doc string.  Let me know.  Thx.

As I've explained, I prefer wider scope.  However, the Emacs project
doesn't have a policy on this as far as I know, so we're in a similar
situation with pcase vs cond thing: the person making the patch makes
the final decision.  If you found my arguments for it unconvincing,
and still feel strongly that narrower scope is better, I'll accept a
patch with the small scopes too.





  reply	other threads:[~2017-03-02  1:21 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-02-17 17:51 bug#25777: 25.1; [PATCH] `rectangle--pos-cols' should not move point Drew Adams
2017-02-19 17:38 ` Drew Adams
2017-02-27  1:37   ` npostavs
2017-02-27  6:24     ` Drew Adams
2017-02-27 13:44       ` npostavs
2017-02-27 17:51         ` Drew Adams
2017-02-27 18:50           ` Noam Postavsky
2017-02-27 19:21             ` Drew Adams
2017-02-27 19:47               ` Noam Postavsky
2017-02-27 20:35                 ` Drew Adams
2017-02-28  4:57           ` npostavs
2017-02-28 15:11             ` Drew Adams
2017-03-02  1:21               ` npostavs [this message]
2017-03-02  2:32                 ` Drew Adams
2017-03-02 18:13                   ` Drew Adams
2017-03-03  2:09                     ` npostavs
2017-03-03  6:29                       ` Drew Adams
2017-03-03 13:28                         ` npostavs
2017-03-03 16:44                           ` Drew Adams
2017-03-03 18:16                             ` Noam Postavsky
2017-03-03 19:17                               ` Drew Adams
2019-06-24 17:10             ` Lars Ingebrigtsen

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=87zih4bhhz.fsf@users.sourceforge.net \
    --to=npostavs@users.sourceforge.net \
    --cc=25777@debbugs.gnu.org \
    --cc=drew.adams@oracle.com \
    /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.