Thanks for the clarification!

I might spend some time working on changing the behavior in vim (particularly for indenting single lines) if other people are also interested.

On Sun, Feb 17, 2013 at 1:05 PM, Raphael Proust <raphlalou@gmail.com> wrote:
On Sat, Feb 16, 2013 at 8:34 PM, Niki Yoshiuchi <aplusbi@gmail.com> wrote:
> I've started using this with vim and I've noticed a few things.  I'm not
> sure if it's by design or if they are bugs.
>
> First, I have vim setup to use 4 spaces for indentation.  When editing an
> OCaml file, it continues to respect the 4 space indent while writing code.
> In other words, while writing code I'll end up with something like this
> (dots represent spaces):
>
> let my_fun f =
> . . . . let nested_fun g =
> . . . . . . . . (* content *)
>
> However if I then select the text and and hit "=" it re-indents it using two
> spaces per nesting level.

This is not a bug in either vim nor ocp-indent. It is a bug in your
configurations (they are not in sync). You can either setup ocp-indent
to use 4 spaces or vim to use 2. See `ocp-indent --config help` for
the former, and `:h tabstop` and `:h softtabstop` for the latter.

>
> The second thing I've noticed is that "=" indents only relative to the
> selected text.  In other words, if I have
>
>
> let my_fun f =
> . . let nested_fun g =
> . . . . (* content *)
> . . . . (* more content *)
>
> and I hit "=" while the cursor is on the third line I end up with:
>
> let my_fun f =
> . . let nested_fun g =
> (* content *)
> . . . . (* more content *)
>
> Doing something like "ggVG=" will properly indent the text.

This is the expected behaviour. ocp-indent is only given the selected
text and thus can only work correctly when receiving complete blocks.
(Indentation is relative to the first line of the chunk that is
passed.)

You can pass a full paragraph using `=ap` ("ap" stands for "a
paragraph", see `:h ap` for help). You can also use blocks. For more
information on these, see `:h text-objects`.

Note that you can do `gg=G` (move, action, move) instead of `ggvG=`
(move, mode, move, action). It is only marginally shorter but, more
importantly, it will preserve your `'<` and `'>` marks (see, `:h '>`
for more explanations). (And dually, you can replace `=ap` (action,
object) by `vap=` (mode, object, action).)

>
> Thanks for the great work on making OCaml more usable!  My code has never
> looked cleaner.
>
> -Niki Yoshiuchi
>
>
> On Fri, Feb 15, 2013 at 8:57 AM, Louis Gesbert <louis.gesbert@ocamlpro.com>
> wrote:
>>
>> Thanks for all the feedback and few bug reports during the past  week of
>> beta-
>> test.
>>
>> We can now announce the 1.0.0 release of ocp-indent, available on opam.
>>
>> Enjoy!
>>
>> --
>> Louis, OCamlPro
>>
>> Le vendredi 8 février 2013 16:25:29, Louis Gesbert a écrit :
>> > OCamlPro is proud to announce the beta-release of ocp-indent.
>> >
>> > Ocp-indent is a simple tool, entirely written in OCaml, which sole
>> > purpose
>> > is to indent OCaml code. It can plug-in seamlessly into emacs' tuareg
>> > mode, or be run from vim.
>> >
>> > You can try it now with:
>> >
>> > $ opam install ocp-indent
>> >
>> > $ INSTDIR="$(opam config var prefix)/share/typerex/ocp-indent"
>> >
>> > $ echo '(load-file "'"$INSTDIR/ocp-indent.el"'")' >>~/.emacs
>> >
>> > $ echo 'autocmd FileType ocaml source '"$INSTDIR"'/ocp-indent.vim'
>> > >>~/.vimrc
>> >
>> >
>> > Or check it out at https://github.com/OCamlPro/ocp-indent
>> >
>> >
>> >
>> > It presents many improvements over the tuareg indentation engine, a much
>> > better understanding of the syntax, linear complexity, specific handling
>> > for many cases. Also, it was intentionally provided with much less
>> > customisation options.
>> >
>> > Feel free to submit any code snippet that is not indented to your taste,
>> > to
>> > help us improve ocp-indent further.
>> >
>> >
>> > Some comparison with tuareg on a few big OCaml projects can be seen at
>> > http://htmlpreview.github.com/?https://github.com/AltGr/ocp-indent-
>> > tests/blob/master/status.html
>> >
>> >
>> > --
>> > Louis Gesbert, OCamlPro
>>
>> --
>> Caml-list mailing list.  Subscription management and archives:
>> https://sympa.inria.fr/sympa/arc/caml-list
>> Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
>> Bug reports: http://caml.inria.fr/bin/caml-bugs
>
>



--
______________
Raphaël Proust