unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Re: [Emacs-diffs] emacs-25 b6d6304: Comment on last change to define-derived-mode
       [not found] ` <E1aabLe-0006mA-65@vcs.savannah.gnu.org>
@ 2016-03-01 14:24   ` Stefan Monnier
  2016-03-03  1:36     ` Leo Liu
  0 siblings, 1 reply; 32+ messages in thread
From: Stefan Monnier @ 2016-03-01 14:24 UTC (permalink / raw)
  To: emacs-devel; +Cc: Leo Liu

> -	   (doc-string 4))
> +	   (doc-string 4)
> +	   ;; Ask not what
> +	   ;;(indent 3)
> +	   ;; can do for you, ask what it can do to others. IOW, the
> +	   ;; missing of indentation setting here is the indentation
> +	   ;; setting and not an oversight.
> +	   )
 
That should at least give one example where adding (indent 3) hurts.


        Stefan



^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [Emacs-diffs] emacs-25 b6d6304: Comment on last change to define-derived-mode
  2016-03-01 14:24   ` [Emacs-diffs] emacs-25 b6d6304: Comment on last change to define-derived-mode Stefan Monnier
@ 2016-03-03  1:36     ` Leo Liu
  2016-03-03  8:19       ` Oleh Krehel
  2016-03-04 14:26       ` Stefan Monnier
  0 siblings, 2 replies; 32+ messages in thread
From: Leo Liu @ 2016-03-03  1:36 UTC (permalink / raw)
  To: emacs-devel

On 2016-03-01 09:24 -0500, Stefan Monnier wrote:
> That should at least give one example where adding (indent 3) hurts.

define-derived-mode is available since at least emacs 22.1 without any
(indent N) settings. I think maybe it is better to think in the other
direction that is what does (indent 3) bring to the table? is it worth
breaking 10 years of practice? Personally I have code that looks like
this:

 (define-derived-mode lcnt-mode special-mode nil :abbrev-table nil
   ...)

If you insist I'll append that example to the comment.

Thanks,
Leo




^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [Emacs-diffs] emacs-25 b6d6304: Comment on last change to define-derived-mode
  2016-03-03  1:36     ` Leo Liu
@ 2016-03-03  8:19       ` Oleh Krehel
  2016-03-03 14:55         ` Kaushal Modi
  2016-03-04 14:26       ` Stefan Monnier
  1 sibling, 1 reply; 32+ messages in thread
From: Oleh Krehel @ 2016-03-03  8:19 UTC (permalink / raw)
  To: Leo Liu; +Cc: emacs-devel

Leo Liu <sdl.web@gmail.com> writes:

> On 2016-03-01 09:24 -0500, Stefan Monnier wrote:
>> That should at least give one example where adding (indent 3) hurts.
>
> define-derived-mode is available since at least emacs 22.1 without any
> (indent N) settings. I think maybe it is better to think in the other
> direction that is what does (indent 3) bring to the table? is it worth
> breaking 10 years of practice? Personally I have code that looks like
> this:
>
>  (define-derived-mode lcnt-mode special-mode nil :abbrev-table nil
>    ...)

This is a wrong kind of code in my opinion. There is value in all code
looking the same and feeling immediately right to every programmer.  If
in 95% of cases `define-derived-mode' already looks like it is (indent
3), why not make that "the official look" and nudge the remaining 5%
(i.e. you) into conforming.

This is the kind of thought that I've put in to making that commit. I
actually examined all instances of indentation in core and MELPA.

Unfortunately, we have a person that puts his own fancies ahead of the
better style for everyone. And has the audacity to revert commits just
because his little bit of code doesn't look right.

    Oleh



^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [Emacs-diffs] emacs-25 b6d6304: Comment on last change to define-derived-mode
  2016-03-03  8:19       ` Oleh Krehel
@ 2016-03-03 14:55         ` Kaushal Modi
  0 siblings, 0 replies; 32+ messages in thread
From: Kaushal Modi @ 2016-03-03 14:55 UTC (permalink / raw)
  To: Oleh Krehel; +Cc: Leo Liu, Emacs developers

[-- Attachment #1: Type: text/plain, Size: 535 bytes --]

That style of writing everything in a single line will usually cause that
line to exceed the default fill-column of 70. I believe most of the code in
emacs source tries to keep the line lengths around that number.

Also I am one of those people who prefer keeping line lengths around 70-80
characters. The 3-space indentation style helps achieve that goal. IMO
breaking up forms like define-derived-mode, define-minor-mode, etc makes
the code easier to read if each key-value component is written on a
different line.

--
Kaushal Modi

[-- Attachment #2: Type: text/html, Size: 594 bytes --]

^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [Emacs-diffs] emacs-25 b6d6304: Comment on last change to define-derived-mode
  2016-03-03  1:36     ` Leo Liu
  2016-03-03  8:19       ` Oleh Krehel
@ 2016-03-04 14:26       ` Stefan Monnier
  2016-03-04 16:10         ` Dmitry Gutov
  2016-03-08  4:35         ` Stefan Monnier
  1 sibling, 2 replies; 32+ messages in thread
From: Stefan Monnier @ 2016-03-04 14:26 UTC (permalink / raw)
  To: emacs-devel

>> That should at least give one example where adding (indent 3) hurts.
> define-derived-mode is available since at least emacs 22.1 without any
> (indent N) settings. I think maybe it is better to think in the other
> direction that is what does (indent 3) bring to the table?

That's irrelevant to the issue of having to documenting *why* you
revert something.


        Stefan




^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [Emacs-diffs] emacs-25 b6d6304: Comment on last change to define-derived-mode
  2016-03-04 14:26       ` Stefan Monnier
@ 2016-03-04 16:10         ` Dmitry Gutov
  2016-03-05  2:09           ` Leo Liu
  2016-03-08  4:35         ` Stefan Monnier
  1 sibling, 1 reply; 32+ messages in thread
From: Dmitry Gutov @ 2016-03-04 16:10 UTC (permalink / raw)
  To: Stefan Monnier, emacs-devel

On 03/04/2016 04:26 PM, Stefan Monnier wrote:
>>> That should at least give one example where adding (indent 3) hurts.
>> define-derived-mode is available since at least emacs 22.1 without any
>> (indent N) settings. I think maybe it is better to think in the other
>> direction that is what does (indent 3) bring to the table?
>
> That's irrelevant to the issue of having to documenting *why* you
> revert something.

Putting a code sample into the comment right there would be pretty 
awkward, though. I'd rather see a message to emacs-devel or a bug 
report, and a link to either in the reverting commit.

In this case, though, maybe we should revert the revert, all things 
considered.



^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [Emacs-diffs] emacs-25 b6d6304: Comment on last change to define-derived-mode
  2016-03-04 16:10         ` Dmitry Gutov
@ 2016-03-05  2:09           ` Leo Liu
  2016-03-05  3:11             ` Dmitry Gutov
  2016-03-06  2:58             ` John Wiegley
  0 siblings, 2 replies; 32+ messages in thread
From: Leo Liu @ 2016-03-05  2:09 UTC (permalink / raw)
  To: emacs-devel

On 2016-03-04 18:10 +0200, Dmitry Gutov wrote:
> In this case, though, maybe we should revert the revert, all things
> considered.

I love to hear the `all things' that you have considered? Make a trivial
change is trivial but I would like to know we have enough justification
to change something that people have grown dependent in the past 10
years. Care to elaborate?

I am tired of people claiming representing 90ish% users when there is
only just one or two (at most a handful) disregard the silent majority.

No users will come and praise how good some feature is. What we know is
nobody has complaint anything in the past 10 years. This is hard
evidence.

Leo




^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [Emacs-diffs] emacs-25 b6d6304: Comment on last change to define-derived-mode
  2016-03-05  2:09           ` Leo Liu
@ 2016-03-05  3:11             ` Dmitry Gutov
  2016-03-05  9:48               ` Leo Liu
       [not found]               ` <8760x16nag.fsf@oremacs.com>
  2016-03-06  2:58             ` John Wiegley
  1 sibling, 2 replies; 32+ messages in thread
From: Dmitry Gutov @ 2016-03-05  3:11 UTC (permalink / raw)
  To: Leo Liu, emacs-devel, Oleh Krehel

On 03/05/2016 04:09 AM, Leo Liu wrote:
> On 2016-03-04 18:10 +0200, Dmitry Gutov wrote:
>> In this case, though, maybe we should revert the revert, all things
>> considered.
>
> I love to hear the `all things' that you have considered?

That putting the keyword arguments from BODY on the same line as the 
mode name is semantically wrong? And it's prone to result in longer 
lines? And that right now there's a weird comment inside 
define-derived-mode that makes little sense without additional context?

> Make a trivial
> change is trivial but I would like to know we have enough justification
> to change something that people have grown dependent in the past 10
> years.

It might cause you to reformat a few lines over the next few years, but 
it's hardly a cause for major concern.

However: I'm having hard time reproducing the justification stated in 
2c3b05c93e4884460068a12357ebd04ae4cd7446. The given example indents just 
as fine without (indent 3), in 'emacs -Q'.

Oleh, care to elaborate?



^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [Emacs-diffs] emacs-25 b6d6304: Comment on last change to define-derived-mode
  2016-03-05  3:11             ` Dmitry Gutov
@ 2016-03-05  9:48               ` Leo Liu
  2016-03-05 13:32                 ` Dmitry Gutov
       [not found]               ` <8760x16nag.fsf@oremacs.com>
  1 sibling, 1 reply; 32+ messages in thread
From: Leo Liu @ 2016-03-05  9:48 UTC (permalink / raw)
  To: emacs-devel

On 2016-03-05 05:11 +0200, Dmitry Gutov wrote:
> That putting the keyword arguments from BODY on the same line as the
> mode name is semantically wrong? And it's prone to result in longer
> lines? And that right now there's a weird comment inside
> define-derived-mode that makes little sense without additional
> context?

I wouldn't consider the keywords part of BODY (they aren't eval'd as
they appear anyway). They actually affect how code is generated. The
BODY has at most 3 semantic parts: DOC, KEYWORDS and BODY2. The first 2
are optional. My style is not bizarre and to my eye make the code clear.
Everyone has own lisp style and we should do our best to respect them.

Leo




^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [Emacs-diffs] emacs-25 b6d6304: Comment on last change to define-derived-mode
  2016-03-05  9:48               ` Leo Liu
@ 2016-03-05 13:32                 ` Dmitry Gutov
  2016-03-05 14:41                   ` Leo Liu
  0 siblings, 1 reply; 32+ messages in thread
From: Dmitry Gutov @ 2016-03-05 13:32 UTC (permalink / raw)
  To: Leo Liu, emacs-devel

On 03/05/2016 11:48 AM, Leo Liu wrote:

> I wouldn't consider the keywords part of BODY (they aren't eval'd as
> they appear anyway).

Then we can consider them a separate argument. Since it's not delimited 
with parens, what better way to emphasize it than to put it on a 
separate line?

> They actually affect how code is generated. The
> BODY has at most 3 semantic parts: DOC, KEYWORDS and BODY2. The first 2
> are optional. My style is not bizarre and to my eye make the code clear.
> Everyone has own lisp style and we should do our best to respect them.

Not if we lose out in functionality in other places (still waiting for 
Oleh's response on that one).

Anyway, any user, yourself included, can override the 
`lisp-indent-function' property in their init file.



^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [Emacs-diffs] emacs-25 b6d6304: Comment on last change to define-derived-mode
  2016-03-05 13:32                 ` Dmitry Gutov
@ 2016-03-05 14:41                   ` Leo Liu
  2016-03-05 14:51                     ` Dmitry Gutov
  0 siblings, 1 reply; 32+ messages in thread
From: Leo Liu @ 2016-03-05 14:41 UTC (permalink / raw)
  To: emacs-devel

On 2016-03-05 15:32 +0200, Dmitry Gutov wrote:
> Then we can consider them a separate argument. Since it's not
> delimited with parens, what better way to emphasize it than to put it
> on a separate line?

So what's your point of bringing up semantics in the first place? I am
totally lost.

>> They actually affect how code is generated. The BODY has at most 3
>> semantic parts: DOC, KEYWORDS and BODY2. The first 2 are optional. My
>> style is not bizarre and to my eye make the code clear. Everyone has
>> own lisp style and we should do our best to respect them.
>
> Not if we lose out in functionality in other places

Still missing the point. I don't mind if you exert some style in a new
macro. But this is a macro that has been there since at least 22.1.

Leo




^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [Emacs-diffs] emacs-25 b6d6304: Comment on last change to define-derived-mode
       [not found]               ` <8760x16nag.fsf@oremacs.com>
@ 2016-03-05 14:50                 ` Dmitry Gutov
  0 siblings, 0 replies; 32+ messages in thread
From: Dmitry Gutov @ 2016-03-05 14:50 UTC (permalink / raw)
  To: Oleh Krehel; +Cc: Oleh Krehel, Leo Liu, emacs-devel

On 03/05/2016 03:56 PM, Oleh Krehel wrote:

> It indents just fine with `lisp-indent-function' but not with
> `common-lisp-indent-function'.

Not a problem, define-derived-mode is not a Common Lisp function.

> Still, (indent 3) is meta-data, which should be provided and is useful
> in any case (for example, I often use a pretty printer, and they can use
> the meta-data to insert raw Lisp code in a pretty way).

That might be a decent goal, but I don't think we generally take it into 
consideration. Unless I'm mistaken, it'll need a discussion first, and 
probably a bug report.



^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [Emacs-diffs] emacs-25 b6d6304: Comment on last change to define-derived-mode
  2016-03-05 14:41                   ` Leo Liu
@ 2016-03-05 14:51                     ` Dmitry Gutov
  0 siblings, 0 replies; 32+ messages in thread
From: Dmitry Gutov @ 2016-03-05 14:51 UTC (permalink / raw)
  To: Leo Liu, emacs-devel

On 03/05/2016 04:41 PM, Leo Liu wrote:

> So what's your point of bringing up semantics in the first place? I am
> totally lost.

Put keyword arguments on a separate line. It's their place, semantically.

> Still missing the point. I don't mind if you exert some style in a new
> macro. But this is a macro that has been there since at least 22.1.

Sometimes we improve existing facilities too, not just pile on new ones.



^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [Emacs-diffs] emacs-25 b6d6304: Comment on last change to define-derived-mode
  2016-03-05  2:09           ` Leo Liu
  2016-03-05  3:11             ` Dmitry Gutov
@ 2016-03-06  2:58             ` John Wiegley
  2016-03-06  7:22               ` Oleh Krehel
  1 sibling, 1 reply; 32+ messages in thread
From: John Wiegley @ 2016-03-06  2:58 UTC (permalink / raw)
  To: Leo Liu; +Cc: Oleh Krehel, emacs-devel

>>>>> Leo Liu <sdl.web@gmail.com> writes:

> I love to hear the `all things' that you have considered? Make a trivial
> change is trivial but I would like to know we have enough justification to
> change something that people have grown dependent in the past 10 years. Care
> to elaborate?

I agree that defaults like this should not be changed without discussion.

Oleh, why was this change made back in January?

-- 
John Wiegley                  GPG fingerprint = 4710 CF98 AF9B 327B B80F
http://newartisans.com                          60E1 46C4 BD1A 7AC1 4BA2



^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [Emacs-diffs] emacs-25 b6d6304: Comment on last change to define-derived-mode
  2016-03-06  2:58             ` John Wiegley
@ 2016-03-06  7:22               ` Oleh Krehel
  2016-03-06 21:01                 ` John Wiegley
  0 siblings, 1 reply; 32+ messages in thread
From: Oleh Krehel @ 2016-03-06  7:22 UTC (permalink / raw)
  To: emacs-devel

John Wiegley <jwiegley@gmail.com> writes:

> Oleh, why was this change made back in January?

I made the change because I had need for it, and estimated that it
should not affect /any/ code that was laid out properly.

Adding meta-data is an innocuous operation, just like adding
documentation where there was none before.



^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [Emacs-diffs] emacs-25 b6d6304: Comment on last change to define-derived-mode
  2016-03-06  7:22               ` Oleh Krehel
@ 2016-03-06 21:01                 ` John Wiegley
  2016-03-07  4:10                   ` Leo Liu
  2016-03-07  8:48                   ` Oleh Krehel
  0 siblings, 2 replies; 32+ messages in thread
From: John Wiegley @ 2016-03-06 21:01 UTC (permalink / raw)
  To: Oleh Krehel; +Cc: emacs-devel

>>>>> Oleh Krehel <oleh@oremacs.com> writes:

> Adding meta-data is an innocuous operation, just like adding documentation
> where there was none before.

Wouldn't it change the way old code might get re-indented?  In other words,
was this a no-op addition of metadata, or did it have aesthetic impact on the
way code gets indented?

-- 
John Wiegley                  GPG fingerprint = 4710 CF98 AF9B 327B B80F
http://newartisans.com                          60E1 46C4 BD1A 7AC1 4BA2



^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [Emacs-diffs] emacs-25 b6d6304: Comment on last change to define-derived-mode
  2016-03-06 21:01                 ` John Wiegley
@ 2016-03-07  4:10                   ` Leo Liu
  2016-03-07  8:48                   ` Oleh Krehel
  1 sibling, 0 replies; 32+ messages in thread
From: Leo Liu @ 2016-03-07  4:10 UTC (permalink / raw)
  To: emacs-devel

On 2016-03-06 13:01 -0800, John Wiegley wrote:
> Wouldn't it change the way old code might get re-indented? In other
> words, was this a no-op addition of metadata, or did it have aesthetic
> impact on the way code gets indented?

I think it is a misunderstanding that missing a (indent N) in an
oversight when it is actually a deliberate design. A lot of the def-ish
macros have this pattern. See the doc-string of lisp-indent-function.

HTH,
Leo




^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [Emacs-diffs] emacs-25 b6d6304: Comment on last change to define-derived-mode
  2016-03-06 21:01                 ` John Wiegley
  2016-03-07  4:10                   ` Leo Liu
@ 2016-03-07  8:48                   ` Oleh Krehel
  2016-03-07 14:51                     ` John Wiegley
  1 sibling, 1 reply; 32+ messages in thread
From: Oleh Krehel @ 2016-03-07  8:48 UTC (permalink / raw)
  To: emacs-devel

John Wiegley <jwiegley@gmail.com> writes:

>> Adding meta-data is an innocuous operation, just like adding documentation
>> where there was none before.
>
> Wouldn't it change the way old code might get re-indented?  In other words,
> was this a no-op addition of metadata, or did it have aesthetic impact on the
> way code gets indented?

A bit from column A, a bit from column B. I think it's a flaw in the
current `indent' metadata design that the absence of metadata is itself
metadata. Since it makes it impossible to distinguish whether the
absence of metadata is intentional or an oversight.

You can grep the core for "(define-derived-mode " and see the possible
effect for yourself. Here's a summary: out of 301 grep hits in *.el
files, 19 instances don't follow the (indent 3) rule - all the others
do:

    (define-derived-mode bookmark-edit-annotation-mode
    (define-derived-mode diary-fancy-display-mode special-mode
    (define-derived-mode semantic-grammar-mode
    (define-derived-mode electric-buffer-menu-mode Buffer-menu-mode
    (define-derived-mode reb-lisp-mode
    (define-derived-mode smime-mode fundamental-mode
    (define-derived-mode image-dired-thumbnail-mode
    (define-derived-mode image-dired-display-image-mode
    (define-derived-mode network-connection-mode
    (define-derived-mode newsticker-mode fundamental-mode
    (define-derived-mode newsticker-treeview-list-mode newsticker-treeview-mode
    (define-derived-mode newsticker-treeview-item-mode newsticker-treeview-mode
    (define-derived-mode ebrowse-electric-list-mode
    (define-derived-mode ebrowse-electric-position-mode
    (define-derived-mode elisp-byte-code-mode emacs-lisp-mode
    (define-derived-mode pages-directory-address-mode pages-directory-mode
    (define-derived-mode thumbs-mode
    (define-derived-mode thumbs-view-image-mode
    (define-derived-mode vc-git-region-history-mode

So I've added an indentation hint that 94% of the code already follows,
while 6% doesn't. It's up to you as the maintainer to decide if we want
to have a 94/6 split just to not ruffle any feathers. Or we want to
enforce a rule to make all code uniform - easier to read and contribute
to.

Personally I find it annoying tripping over things and trying to
preserve the ancient indentation when contributing to the Emacs core.
This could be a non-issue in the future.



^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [Emacs-diffs] emacs-25 b6d6304: Comment on last change to define-derived-mode
  2016-03-07  8:48                   ` Oleh Krehel
@ 2016-03-07 14:51                     ` John Wiegley
  2016-03-07 15:26                       ` Oleh Krehel
  0 siblings, 1 reply; 32+ messages in thread
From: John Wiegley @ 2016-03-07 14:51 UTC (permalink / raw)
  To: Oleh Krehel; +Cc: emacs-devel

>>>>> Oleh Krehel <oleh@oremacs.com> writes:

> So I've added an indentation hint that 94% of the code already follows,
> while 6% doesn't. It's up to you as the maintainer to decide if we want to
> have a 94/6 split just to not ruffle any feathers. Or we want to enforce a
> rule to make all code uniform - easier to read and contribute to.

If we're formalizing what 94% of our code already does, that can helpful for
setting expected standards.  However, that's 94% of our code, not 94% of
everything that's out there.

-- 
John Wiegley                  GPG fingerprint = 4710 CF98 AF9B 327B B80F
http://newartisans.com                          60E1 46C4 BD1A 7AC1 4BA2



^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [Emacs-diffs] emacs-25 b6d6304: Comment on last change to define-derived-mode
  2016-03-07 14:51                     ` John Wiegley
@ 2016-03-07 15:26                       ` Oleh Krehel
  2016-03-07 15:43                         ` Clément Pit--Claudel
  2016-03-07 15:44                         ` John Wiegley
  0 siblings, 2 replies; 32+ messages in thread
From: Oleh Krehel @ 2016-03-07 15:26 UTC (permalink / raw)
  To: emacs-devel

John Wiegley <jwiegley@gmail.com> writes:

>>>>>> Oleh Krehel <oleh@oremacs.com> writes:
>
>> So I've added an indentation hint that 94% of the code already follows,
>> while 6% doesn't. It's up to you as the maintainer to decide if we want to
>> have a 94/6 split just to not ruffle any feathers. Or we want to enforce a
>> rule to make all code uniform - easier to read and contribute to.
>
> If we're formalizing what 94% of our code already does, that can helpful for
> setting expected standards.  However, that's 94% of our code, not 94% of
> everything that's out there.

Like I said, it's up to you to decide what to do.  You've already shown
favor to the testing and bug-squashing directions for the Emacs
development.

In my opinion, the coding style could be another useful direction. By
this I mean:

- Removing the ambiguity about `indent-tabs-mode'.

- Working on something like `pretty-print-buffer': a command to
  automatically eliminate hanging parens, consecutive spaces,
  multi-variable `setq'; and re-indent everything.
    
- Extending the checkdoc to find more warnings in the code style, like
  unresolved declarations etc.

- Formalizing the C code style, tutorials, contribution guidelines
  etc. Maybe we could have a linter for C.

I think it would be great if at some moment we could stop thinking how a
code looks, and only think about what it does. And ignoring how it looks
isn't really a great solution - it may work for some, doesn't work for
me at the moment.



^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [Emacs-diffs] emacs-25 b6d6304: Comment on last change to define-derived-mode
  2016-03-07 15:26                       ` Oleh Krehel
@ 2016-03-07 15:43                         ` Clément Pit--Claudel
  2016-03-07 15:59                           ` Oleh Krehel
  2016-03-07 16:03                           ` Drew Adams
  2016-03-07 15:44                         ` John Wiegley
  1 sibling, 2 replies; 32+ messages in thread
From: Clément Pit--Claudel @ 2016-03-07 15:43 UTC (permalink / raw)
  To: emacs-devel


[-- Attachment #1.1: Type: text/plain, Size: 135 bytes --]

On 03/07/2016 10:26 AM, Oleh Krehel wrote:
> multi-variable `setq';

Can you remind me of what's wrong with multi-variable setq?


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [Emacs-diffs] emacs-25 b6d6304: Comment on last change to define-derived-mode
  2016-03-07 15:26                       ` Oleh Krehel
  2016-03-07 15:43                         ` Clément Pit--Claudel
@ 2016-03-07 15:44                         ` John Wiegley
  2016-03-07 15:58                           ` Oleh Krehel
  1 sibling, 1 reply; 32+ messages in thread
From: John Wiegley @ 2016-03-07 15:44 UTC (permalink / raw)
  To: Oleh Krehel; +Cc: emacs-devel

>>>>> Oleh Krehel <oleh@oremacs.com> writes:

> Like I said, it's up to you to decide what to do. You've already shown favor
> to the testing and bug-squashing directions for the Emacs development.
> 
> In my opinion, the coding style could be another useful direction.

I do think coding style can be of value, but I'd rate it at far lower
importance than testing and bug-squashing. The reason being that improving
tests and reducing bugs benefits all of our users, while coding styles mostly
benefit the people on this list.

> - Removing the ambiguity about `indent-tabs-mode'.

What is the ambiguity?

> - Working on something like `pretty-print-buffer': a command to
> automatically eliminate hanging parens, consecutive spaces, multi-variable
> `setq'; and re-indent everything.

This could be quite nice!

> - Extending the checkdoc to find more warnings in the code style, like
> unresolved declarations etc.

Agreed.

> - Formalizing the C code style, tutorials, contribution guidelines etc.
> Maybe we could have a linter for C.

Yes!

> I think it would be great if at some moment we could stop thinking how a
> code looks, and only think about what it does. And ignoring how it looks
> isn't really a great solution - it may work for some, doesn't work for me at
> the moment.

Personally I'd love that too. I'd just rather see the bugs under much better
control before putting too much energy in this direction, as its likely to
generate a lot of debate.

-- 
John Wiegley                  GPG fingerprint = 4710 CF98 AF9B 327B B80F
http://newartisans.com                          60E1 46C4 BD1A 7AC1 4BA2



^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [Emacs-diffs] emacs-25 b6d6304: Comment on last change to define-derived-mode
  2016-03-07 15:44                         ` John Wiegley
@ 2016-03-07 15:58                           ` Oleh Krehel
  2016-03-07 16:01                             ` Dmitry Gutov
  0 siblings, 1 reply; 32+ messages in thread
From: Oleh Krehel @ 2016-03-07 15:58 UTC (permalink / raw)
  To: emacs-devel

John Wiegley <jwiegley@gmail.com> writes:

>> - Removing the ambiguity about `indent-tabs-mode'.
>
> What is the ambiguity?

Allowing a mix of tabs and spaces in the core. I'd vote to have this
rule enforced:

    (setq indent-tabs-mode nil)

I think it was discussed previously by Dmitry, but that discussion was
stuck for a while now.



^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [Emacs-diffs] emacs-25 b6d6304: Comment on last change to define-derived-mode
  2016-03-07 15:43                         ` Clément Pit--Claudel
@ 2016-03-07 15:59                           ` Oleh Krehel
  2016-03-07 16:03                             ` Drew Adams
  2016-03-07 16:03                           ` Drew Adams
  1 sibling, 1 reply; 32+ messages in thread
From: Oleh Krehel @ 2016-03-07 15:59 UTC (permalink / raw)
  To: Clément Pit--Claudel; +Cc: emacs-devel

Clément Pit--Claudel <clement.pit@gmail.com> writes:

> On 03/07/2016 10:26 AM, Oleh Krehel wrote:
>> multi-variable `setq';
>
> Can you remind me of what's wrong with multi-variable setq?

It's error-prone and hard to read/manipulate.



^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [Emacs-diffs] emacs-25 b6d6304: Comment on last change to define-derived-mode
  2016-03-07 15:58                           ` Oleh Krehel
@ 2016-03-07 16:01                             ` Dmitry Gutov
  0 siblings, 0 replies; 32+ messages in thread
From: Dmitry Gutov @ 2016-03-07 16:01 UTC (permalink / raw)
  To: Oleh Krehel, emacs-devel

On 03/07/2016 05:58 PM, Oleh Krehel wrote:

> Allowing a mix of tabs and spaces in the core. I'd vote to have this
> rule enforced:
>
>     (setq indent-tabs-mode nil)
>
> I think it was discussed previously by Dmitry, but that discussion was
> stuck for a while now.

The core has been taken care of: see the top-level .dir-locals.el in the 
Emacs repository.

Judging by the previous discussions, it's highly unlikely that we'll get 
anything stronger than that.



^ permalink raw reply	[flat|nested] 32+ messages in thread

* RE: [Emacs-diffs] emacs-25 b6d6304: Comment on last change to define-derived-mode
  2016-03-07 15:43                         ` Clément Pit--Claudel
  2016-03-07 15:59                           ` Oleh Krehel
@ 2016-03-07 16:03                           ` Drew Adams
  2016-03-08 15:32                             ` Thierry Volpiatto
  1 sibling, 1 reply; 32+ messages in thread
From: Drew Adams @ 2016-03-07 16:03 UTC (permalink / raw)
  To: Clément Pit--Claudel, emacs-devel

> > multi-variable `setq';
> 
> Can you remind me of what's wrong with multi-variable setq?

Nothing.  IMHO.

You could complain that it can require more maintenance, just like
`cond', `let*', and other sequential constructs.

Some people prioritize writing code over reading code.  To me this
is misguided, and multi-variable `setq' is a plus, not a minus.

FWIW, for a very long time I avoided multi-variable setq.  Dunno
why - probably just maintenance laziness.

Later I learned to appreciate it.  I also go to the trouble of
(manually) aligning the values (for readability), something that
I also do now for `let' and `let*'.



^ permalink raw reply	[flat|nested] 32+ messages in thread

* RE: [Emacs-diffs] emacs-25 b6d6304: Comment on last change to define-derived-mode
  2016-03-07 15:59                           ` Oleh Krehel
@ 2016-03-07 16:03                             ` Drew Adams
  2016-03-07 16:11                               ` Clément Pit--Claudel
  0 siblings, 1 reply; 32+ messages in thread
From: Drew Adams @ 2016-03-07 16:03 UTC (permalink / raw)
  To: Oleh Krehel, Clément Pit--Claudel; +Cc: emacs-devel

> >> multi-variable `setq';
> >
> > Can you remind me of what's wrong with multi-variable setq?
> 
> It's error-prone

Demonstration?

> and hard to read/manipulate.

Manipulate, maybe.  But no more than `let*' or `cond'.

Read?  Definitely not.  IMHO.



^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [Emacs-diffs] emacs-25 b6d6304: Comment on last change to define-derived-mode
  2016-03-07 16:03                             ` Drew Adams
@ 2016-03-07 16:11                               ` Clément Pit--Claudel
  2016-03-07 17:00                                 ` Drew Adams
  0 siblings, 1 reply; 32+ messages in thread
From: Clément Pit--Claudel @ 2016-03-07 16:11 UTC (permalink / raw)
  To: Drew Adams, Oleh Krehel; +Cc: emacs-devel


[-- Attachment #1.1: Type: text/plain, Size: 483 bytes --]

On 03/07/2016 11:03 AM, Drew Adams wrote:
>> > and hard to read/manipulate.
> Manipulate, maybe.  But no more than `let*' or `cond'.

Actually, its true that it's harder to swap the first and second assignment in a multi-variable setq than a multivariable let*, don't you think?

(setq a 1 
      b 2)

vs

(let* ((a 1)
       (b 2))
  ...)

> Read?  Definitely not.  IMHO.

Agreed: I use multi-variable setq a lot in my init files; I think it reads very nicely.


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 32+ messages in thread

* RE: [Emacs-diffs] emacs-25 b6d6304: Comment on last change to define-derived-mode
  2016-03-07 16:11                               ` Clément Pit--Claudel
@ 2016-03-07 17:00                                 ` Drew Adams
  0 siblings, 0 replies; 32+ messages in thread
From: Drew Adams @ 2016-03-07 17:00 UTC (permalink / raw)
  To: Clément Pit--Claudel, Oleh Krehel; +Cc: emacs-devel

> >> > and hard to read/manipulate.
> > Manipulate, maybe.  But no more than `let*' or `cond'.
> 
> Actually, its true that it's harder to swap the first and second
> assignment in a multi-variable setq than a multivariable let*, don't
> you think?
> (setq a 1
>       b 2)
> vs
> (let* ((a 1)
>        (b 2))
>   ...)

OK, yes, slightly "harder".  Big deal.

As I said, I weigh in on the side of code readability, not ease
of writing.  Probably most (at least many) programmers do the
opposite.

Either way, we are talking about _minor_ differences: in (a) writing
difficulty on the one hand and (b) reading difficulty on the other.

I favor the reader over the writer.  But I'm not writing/maintaining
this code.  I don't mind the minor editing chore for my own code,
but I can understand someone who just wants to get on with quickly
making changes and is not nit-picky about readability.

Personally, my impression is that (what I would call) overemphasis
on ease of writing is a trait of beginners, who can tend to think
that (1) they are writing only for themselves and (2) the code will
not live a long lifetime.  And then it can become a habit, so that
even experienced coders think/act like this.

> > Read?  Definitely not.  IMHO.
> 
> Agreed: I use multi-variable setq a lot in my init files; I think it
> reads very nicely.

I expect that we are in the minority, perhaps even a tiny minority.
But I don't know that.



^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [Emacs-diffs] emacs-25 b6d6304: Comment on last change to define-derived-mode
  2016-03-04 14:26       ` Stefan Monnier
  2016-03-04 16:10         ` Dmitry Gutov
@ 2016-03-08  4:35         ` Stefan Monnier
  2016-03-08 12:33           ` Dmitry Gutov
  1 sibling, 1 reply; 32+ messages in thread
From: Stefan Monnier @ 2016-03-08  4:35 UTC (permalink / raw)
  To: emacs-devel

FWIW, I'm really sorry to have occasioned this longwinded
bike-shedding.  My *only* point was to ask to get some concrete example
where the patch was undesirable, so that we know concretely why the
change was undone.
I did not intend to put in doubt the validity of the reversion.


        Stefan


>>> That should at least give one example where adding (indent 3) hurts.
>> define-derived-mode is available since at least emacs 22.1 without any
>> (indent N) settings. I think maybe it is better to think in the other
>> direction that is what does (indent 3) bring to the table?

> That's irrelevant to the issue of having to documenting *why* you
> revert something.


>         Stefan







^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [Emacs-diffs] emacs-25 b6d6304: Comment on last change to define-derived-mode
  2016-03-08  4:35         ` Stefan Monnier
@ 2016-03-08 12:33           ` Dmitry Gutov
  0 siblings, 0 replies; 32+ messages in thread
From: Dmitry Gutov @ 2016-03-08 12:33 UTC (permalink / raw)
  To: Stefan Monnier, emacs-devel

On 03/08/2016 06:35 AM, Stefan Monnier wrote:
> My *only* point was to ask to get some concrete example
> where the patch was undesirable, so that we know concretely why the
> change was undone.

Are we going to keep the newly added comment there, the one that doesn't 
provide the above information?



^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [Emacs-diffs] emacs-25 b6d6304: Comment on last change to define-derived-mode
  2016-03-07 16:03                           ` Drew Adams
@ 2016-03-08 15:32                             ` Thierry Volpiatto
  0 siblings, 0 replies; 32+ messages in thread
From: Thierry Volpiatto @ 2016-03-08 15:32 UTC (permalink / raw)
  To: emacs-devel

Drew Adams <drew.adams@oracle.com> writes:

> Some people prioritize writing code over reading code.  To me this
> is misguided, and multi-variable `setq' is a plus, not a minus.

1+

Please don't modify this setq feature. For readability, note that eldoc
highlighting is showing you where your cursor is (var or value), so I
don't see where the problem is.

Thanks.

-- 
Thierry




^ permalink raw reply	[flat|nested] 32+ messages in thread

end of thread, other threads:[~2016-03-08 15:32 UTC | newest]

Thread overview: 32+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <20160301035146.26012.60163@vcs.savannah.gnu.org>
     [not found] ` <E1aabLe-0006mA-65@vcs.savannah.gnu.org>
2016-03-01 14:24   ` [Emacs-diffs] emacs-25 b6d6304: Comment on last change to define-derived-mode Stefan Monnier
2016-03-03  1:36     ` Leo Liu
2016-03-03  8:19       ` Oleh Krehel
2016-03-03 14:55         ` Kaushal Modi
2016-03-04 14:26       ` Stefan Monnier
2016-03-04 16:10         ` Dmitry Gutov
2016-03-05  2:09           ` Leo Liu
2016-03-05  3:11             ` Dmitry Gutov
2016-03-05  9:48               ` Leo Liu
2016-03-05 13:32                 ` Dmitry Gutov
2016-03-05 14:41                   ` Leo Liu
2016-03-05 14:51                     ` Dmitry Gutov
     [not found]               ` <8760x16nag.fsf@oremacs.com>
2016-03-05 14:50                 ` Dmitry Gutov
2016-03-06  2:58             ` John Wiegley
2016-03-06  7:22               ` Oleh Krehel
2016-03-06 21:01                 ` John Wiegley
2016-03-07  4:10                   ` Leo Liu
2016-03-07  8:48                   ` Oleh Krehel
2016-03-07 14:51                     ` John Wiegley
2016-03-07 15:26                       ` Oleh Krehel
2016-03-07 15:43                         ` Clément Pit--Claudel
2016-03-07 15:59                           ` Oleh Krehel
2016-03-07 16:03                             ` Drew Adams
2016-03-07 16:11                               ` Clément Pit--Claudel
2016-03-07 17:00                                 ` Drew Adams
2016-03-07 16:03                           ` Drew Adams
2016-03-08 15:32                             ` Thierry Volpiatto
2016-03-07 15:44                         ` John Wiegley
2016-03-07 15:58                           ` Oleh Krehel
2016-03-07 16:01                             ` Dmitry Gutov
2016-03-08  4:35         ` Stefan Monnier
2016-03-08 12:33           ` Dmitry Gutov

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

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).