caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: "Matej Košík" <mail@matej-kosik.net>
To: caml-list@inria.fr
Subject: Re: [Caml-list] What is the right way to configure Tuareg to get the same indentation as in Batteries Included?
Date: Thu, 23 Nov 2017 10:53:43 +0100	[thread overview]
Message-ID: <3b5de67c-859b-27f6-9408-49cdb6285712@matej-kosik.net> (raw)
In-Reply-To: <jwvk1yjpfo8.fsf-monnier+Inbox@gnu.org>


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

Hi Stefan,

On 11/21/17 20:59, Stefan Monnier wrote:
>>   match BatEnum.peek enum with
>>   | None -> {re; im = multiplier}
>>   | Some (Kwd ".")
>>   | Some (Kwd "*") ->
>>     BatEnum.junk enum;
>>     parse_im ~multiplier re
>>   | Some _token ->
>>     parse_im ~multiplier re
>>
>> However, Tuareg, in my currenct configuration does instead this:
>>
>>   match BatEnum.peek enum with
>>   | None -> {re; im = multiplier}
>>   | Some (Kwd ".")
>>     | Some (Kwd "*") ->
>>      BatEnum.junk enum;
>>      parse_im ~multiplier re
>>   | Some _token ->
>>      parse_im ~multiplier re
> 
> Here's how you can do it:
> - Go to the first line that Tuareg indents wrong (i.e. `| Some (Kwd "*") ->`)
> - Change its indentation to match your expectation
> - run `M-x smie-config-set-indent RET`
> - this should suggest to set (:before "|-or") to 0, which you can accept.
> - go to the next line (that Tuareg indents wrong)
> - Change its indentation to match your expectation
> - run `M-x smie-config-set-indent RET`
> - this time it asks you which rule you want to change (because 2 rules
>   are used to determine this indentation): either (after "->") or
>   (before "->") depending on whether you want to also change
> 
>      | Some (Kwd "*")
>        -> BatEnum.junk enum;
> 
>   or not.
> 
> - once that is done, you should be able to do `M-x smie-config-save
>   RET`.  To save the result into your Customize settings.

So far so good.
After following the above instructions, I was able to tweak the Emacs behavior in the desired way.
Thank you!

What puzzled me was that once I restart Eamcs, I get the old behavior.

I am guessing that this is because I need to "save" the configuration somehow, which I failed to figure out.

So, first, one must "save SMIE configuration" to "customize setting".

And then one must "save customize settings" to ~/.emacs

QUESTION: Is that right?

MY ASSUMPTION WAS: Yes.

I have tried two things (and I failed in both cases);

the 1-st attempt:
-----------------

  After doing "M-x smie-config-save", I have tried to use "M-x customize-save-variable smie-config".
  Emacs responded:

    Wrote /home/mkosik/.emacs

  This sounded like a progress.

  After I looked at ~/.emacs, I can see this:

    (load "/home/mkosik/.opam/4.06.0/share/emacs/site-lisp/tuareg-site-file")
    (custom-set-variables
     ;; custom-set-variables was added by Custom.
     ;; If you edit it by hand, you could mess it up, so be careful.
     ;; Your init file should contain only one such instance.
     ;; If there is more than one, they won't work right.
     '(inhibit-startup-screen t)
     '(smie-config nil))
    (custom-set-faces
     ;; custom-set-faces was added by Custom.
     ;; If you edit it by hand, you could mess it up, so be careful.
     ;; Your init file should contain only one such instance.
     ;; If there is more than one, they won't work right.
     )

  This does not seem currect, does it?
  (At least I would expect "smie-config" variable to be set to something interesting, not "nil".)

  To confirm, I restarted Emacs and I can confirm, that the Emacs behaves again in the original undesired way
  (defined in my first email)

  FAIL

the 2-nd attempt

  After repreating your helpful instructions and doing "M-x smie-config-save",
  I tried to use "M-x customize-save-customized"
  Emacs responded:

    Wrote /home/mkosik/.emacs

  That file changed in the following way:

    (load "/home/mkosik/.opam/4.06.0/share/emacs/site-lisp/tuareg-site-file")
    (custom-set-variables
     ;; custom-set-variables was added by Custom.
     ;; If you edit it by hand, you could mess it up, so be careful.
     ;; Your init file should contain only one such instance.
     ;; If there is more than one, they won't work right.
     '(inhibit-startup-screen t)
     '(smie-config
       (quote
        ((tuareg-mode
          (2 :after "->" 1)
          (0 :before "|-or" nil))))))
    (custom-set-faces
     ;; custom-set-faces was added by Custom.
     ;; If you edit it by hand, you could mess it up, so be careful.
     ;; Your init file should contain only one such instance.
     ;; If there is more than one, they won't work right.
     )

  This is more like it (I thought).
  I optimistically restarted Emacs and again, unfortunatelly, Emacs behaves again in the original undesired way
  (defined in my first email).
  I find this strange because "M: (print smie-config)" gives me:

    (tuareg-mode (2 :after "->" 1) (0 :before "|-or" nil)))
    (tuareg-mode (2 :after "->" 1) (0 :before "|-or" nil)))

  FAIL

Is this a bug?
Is this the expected behavior and I merely do not understadn SMIE and should read some more documentation? If yes, then which one?

I haven't noticed many questions about Ocaml indentation in Emacs, so I am guessing that this works for everyone perfectly.
Is that the case?


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

  reply	other threads:[~2017-11-23  9:53 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-10-30 10:08 Matej Košík
2017-11-21 19:59 ` Stefan Monnier
2017-11-23  9:53   ` Matej Košík [this message]
2017-11-24  2:20     ` Stefan Monnier

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=3b5de67c-859b-27f6-9408-49cdb6285712@matej-kosik.net \
    --to=mail@matej-kosik.net \
    --cc=caml-list@inria.fr \
    /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 NNTP newsgroup(s).