guile-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Indentation with inline comments in Emacs


From: Zelphir Kaltstahl
Subject: Re: Indentation with inline comments in Emacs
Date: Sun, 17 Apr 2022 11:06:51 +0000

Hello Taylan!

On 4/17/22 05:03, Taylan Kammer wrote:
On 16.04.2022 14:12, Zelphir Kaltstahl wrote:
Hello Guile users!

The subject might not be only Guile related, but I figure, that many on this 
mailing list are using Emacs for writing Guile code. I wonder, if anyone has 
some trick for fixing the following indentation issue:

Sometimes I want to put inline comments with #||# in things like lists, 
arguments for function calls or vectors. For example I want to write the name 
of the month next to the number of days of that month, in a vector creation. 
Here is the example:

~~~~
(define DAYS-IN-MONTH
   #(#|January|# 31
                 #|February|# 28
                              #|March|# 31 #|April|# 30 #|May|# 31 #|June|# 30 
#|July|# 31 #|August|# 30
                               30 30))
~~~~

As you can see, the indentation is adjusted each line according to the non-comment thing 
on the previous line, when I press TAB or whatever other key binding one has for 
indentation. However, in this case I would rather want it to adjust indentation. Is there 
a quick fix for this? Or some way to make Emacs understand this as a separate case and 
have it indent "correctly"? Does anyone have a solution?

Regards,
Zelphir

To be honest, the easiest thing to do here is probably use a different comment 
style.

In this particular example I would probably just go full vertical:

   (define DAYS-IN-MONTH
     #(31 ;january
       28 ;february
       31 ;march
       30 ;april
       31 ;may
       ;; ...
     )

I know it doesn't fulfill your requirement, but usually I find it wise to use 
the
"path of least resistance" when it comes to how an editor/IDE wants to format 
code
and just go with the rules it has.  Makes life easier for others who might not 
have
whatever custom configuration you add to your editor to bend it to your will.
Good point! For some reason I always shun the single semi-colon comments. I think that is, because I usually start writing such a comment and then notice, that the comment will make the line very long, so I want to break it. However, to break it, it makes more sense to have the comment above the line and use double semi-colon. In this case however, the single semi-colon does actually seem like a good alternative.
Tangential:

I've also tried out a "columns" variant with multiple numbers per row and a 
comment
above each row identifying the numbers, but Emacs seems to insist on 
special-casing
the first column in that case, regardless of comments, like this:

   (define days
     #(31      28       31
               30       31          30
               xx       yy          zz
               ;; ...
               ))

That's already ugly without comments, and IMO a significant issue.

Maybe it would be good to teach Emacs to indent lists/vectors that don't 
represent
a function/macro call.  This indentation clearly assumes that the leading "31" 
in
the vector is the operator, and the rest of the vector operands.

It should probably not assume that for vectors #(...) and quoted lists '(...).

I never understood, why Emacs indented that way, but now I understand. First argument is seen as special, as the function/procedure that is being called – aha! I do not know, whether the syntax for vector creation #(...) is the same in all Scheme dialects, which have vectors, in general. Perhaps it would require a specific GNU Guile mode for Emacs, if it is not the same in all Scheme dialects.

Best regards,
Zelphir

--
repositories: https://notabug.org/ZelphirKaltstahl




reply via email to

[Prev in Thread] Current Thread [Next in Thread]