Wednesday, November 14, 2018

Re: About using vartabstop

Christian Brabandt wrote:

> > On Mi, 29 Aug 2018, Lifepillar wrote:
> >
> > > There's a meme (if it may be called so) circulating on Twitter
> > > about using Fibonacci sequences for indentation. Just for fun,
> > > I wanted to see if it could be implemented using the vartabs
> > > feature. I thought that this would do it (for C files):
> > >
> > > set shiftwidth=0
> > > set noexpandtab
> > > set vartabstop=1,1,2,3,5,8,13,21,34
> > > set autoindent
> > > set smartindent
> > > set ft=c
> > >
> > > With the above settings, it appears that the value of tabstop
> > > is used. This seems to agree with shiftwidth's documentation:
> > > "When [shiftwidth is] zero the 'ts' value will be used", but
> > > not with tabstop's help: "the value of 'tabstop' will be
> > > ignored while 'vartabstop' is set". Putting together the two,
> > > I would expect the above to use vartabstop.
> > >
> > > Am I missing something?
> >
> > I am not sure. It might be, that the functionality of using the tabstop
> > setting when shiftwidth is zero is indeed missing from vartabstop,
> > because this was done some time after the vartab patch has been created
> > and that feature has than not made it back into the vartabs patch.
> >
> > I'll have a look at it in more detail later.
>
> Indeed, that's the problem. The vartab option is not taken into account
> when the shiftwidth option is set to zero.
>
> Attached is a patch, that fixes the issue.
>
> However, it currently fails test86.in with the following error:
> --- test86.ok 2018-11-14 13:32:51.652857566 +0100
> +++ test86.failed 2018-11-14 16:48:10.638090709 +0100
> @@ -297,6 +297,9 @@
> wopts2! KeyError
> wopts3! KeyError
> p/bopts1: 8
> + inv: 3! error
> + bopts1! error
> + bopts2! error
> G: 8
> W: 1:0 2:2 3:8 4:1
> B: 1:0 2:2 3:8 4:1
>
> I don't understand the python code in there to know what this does. Sorry.

When compiled with the "abort on internal error" flag, I see an ml_get() error:

#2 0x000055555582ad8f in iemsgn (s=0x555555843628 "E315: ml_get: invalid lnum:
%ld", n=2009) at message.c:802
#3 0x000055555566a294 in ml_get_buf (buf=0x555555e88c30, lnum=2009, will_change
=0) at memline.c:2500
#4 0x000055555581de5a in getvcol (wp=0x555555b02dc0, pos=0x555555b02df8, start=
0x0, cursor=0x555555b02ea0, end=0x0) at charset.c:1303
#5 0x000055555581e461 in getvvcol (wp=0x555555b02dc0, pos=0x555555b02df8, start
=0x0, cursor=0x555555b02ea0, end=0x0) at charset.c:1500
#6 0x00005555556912df in validate_virtcol_win (wp=0x555555b02dc0) at move.c:822
#7 0x0000555555691286 in validate_virtcol () at move.c:810
#8 0x00005555555bd958 in get_nolist_virtcol () at edit.c:10690
#9 0x00005555556d055d in get_sw_value (buf=0x555555e88c30) at option.c:13089
#10 0x000055555567fbd2 in parse_cino (buf=0x555555e88c30) at misc1.c:7132
#11 0x00005555556c7f6a in set_num_option (opt_idx=294, varp=0x555555e8a578 "\003
", value=3, errbuf=0x0, errbuflen=0, opt_flags=4) at option.c:9126
#12 0x00005555556c984c in set_option_value (name=0x7fffee5f96e4 "shiftwidth", nu
mber=3, string=0x0, opt_flags=4) at option.c:9954
#13 0x00005555557e3539 in set_option_value_err (key=0x7fffee5f96e4 "shiftwidth",
numval=3, stringval=0x0, opt_flags=4) at if_py_both.h:3464
#14 0x00005555557e36c7 in set_option_value_for (key=0x7fffee5f96e4 "shiftwidth",
numval=3, stringval=0x0, opt_flags=4, opt_type=2, from=0x555555e88c30) at if_py
_both.h:3506
#15 0x00005555557e3af5 in OptionsAssItem (self=0x7fffee65fb90, keyObject=0x7fffe
e5f96c0, valObject=0x7ffff7f4ec50) at if_py_both.h:3597
#16 0x00007ffff16b2739 in PyEval_EvalFrameEx () from /usr/lib/x86_64-linux-gnu/l
ibpython2.7.so.1.0

--
5 out of 4 people have trouble with fractions.

/// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///

--
--
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

---
You received this message because you are subscribed to the Google Groups "vim_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email to vim_use+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

No comments: