Monday, June 27, 2011

Re: Indentation of perl scripts with the key word 'when' are not correct

Reply to message «Indentation of perl scripts with the key word 'when' are not
correct»,
sent 06:10:16 28 June 2011, Tuesday
by Peng Yu:

> It seem that default perl indentation in vim is not correct with
> 'when' (see example at the end of email). Could anybody let me know
> how to fix the problem?
I guess it is not `when`, but `\`. It was a known issue arised because in
collection `[\[]' there are two characters: `\` and `\[`, not one `[` which is
weird (but described in POSIX). I have wrote a patch for this, but sended it
only to vim-dev mailing list, not to all maintainers of all scripts that have
this error (there were way too many scripts and too many maintainers).

Original message:
> Hi,
>
> It seem that default perl indentation in vim is not correct with
> 'when' (see example at the end of email). Could anybody let me know
> how to fix the problem?
>
> $ vim --version
> VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Mar 24 2011 07:07:34)
> Included patches: 1-35
> Modified by pkg-vim-maintainers@lists.alioth.debian.org
> Compiled by buildd@
> Huge version with GTK2-GNOME GUI. Features included (+) or not (-):
> +arabic +autocmd +balloon_eval +browse ++builtin_terms +byte_offset
> +cindent
> +clientserver +clipboard +cmdline_compl +cmdline_hist +cmdline_info
> +comments
> +conceal +cryptv +cscope +cursorbind +cursorshape +dialog_con_gui
> +diff
> +digraphs +dnd -ebcdic +emacs_tags +eval +ex_extra +extra_search
> +farsi
> +file_in_path +find_in_path +float +folding -footer +fork() +gettext
> -hangul_input +iconv +insert_expand +jumplist +keymap +langmap
> +libcall
> +linebreak +lispindent +listcmds +localmap +lua/dyn +menu +mksession
> +modify_fname +mouse +mouseshape +mouse_dec +mouse_gpm -mouse_jsbterm
> +mouse_netterm -mouse_sysmouse +mouse_xterm +multi_byte +multi_lang -
> mzscheme
> +netbeans_intg -osfiletype +path_extra +perl/dyn +persistent_undo
> +postscript
> +printer +profile +python/dyn +python3/dyn +quickfix +reltime
> +rightleft +ruby
> +scrollbind +signs +smartindent -sniff +startuptime +statusline -
> sun_workshop
> +syntax +tag_binary +tag_old_static -tag_any_white +tcl +terminfo
> +termresponse
> +textobjects +title +toolbar +user_commands +vertsplit +virtualedit
> +visual
> +visualextra +viminfo +vreplace +wildignore +wildmenu +windows
> +writebackup
> +X11 -xfontset +xim +xsmp_interact +xterm_clipboard -xterm_save
> system vimrc file: "$VIM/vimrc"
> user vimrc file: "$HOME/.vimrc"
> user exrc file: "$HOME/.exrc"
> system gvimrc file: "$VIM/gvimrc"
> user gvimrc file: "$HOME/.gvimrc"
> system menu file: "$VIMRUNTIME/menu.vim"
> fall-back for $VIM: "/usr/share/vim"
> Compilation: gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK -
> pthread -I/usr/include/atk-1.0 -I/usr/include/pango-1.0 -I/usr/include/
> gio-unix-2.0/ -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/
> glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng12 -I/
> usr/include/libdrm -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -
> I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/
> pixman-1 -pthread -DORBIT2=1 -D_REENTRANT -I/usr/include/glib-2.0 -I/
> usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/pango-1.0 -I/
> usr/include/freetype2 -I/usr/include/atk-1.0 -I/usr/include/gio-
> unix-2.0/ -I/usr/include/libpng12 -I/usr/include/libdrm -I/usr/include/
> libgnomeui-2.0 -I/usr/include/libart-2.0 -I/usr/include/gconf/2 -I/usr/
> include/gnome-keyring-1 -I/usr/include/libgnome-2.0 -I/usr/include/
> libbonoboui-2.0 -I/usr/include/libgnomecanvas-2.0 -I/usr/include/
> gtk-2.0 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/gnome-vfs-2.0 -I/
> usr/lib/gnome-vfs-2.0/include -I/usr/include/orbit-2.0 -I/usr/include/
> libbonobo-2.0 -I/usr/include/bonobo-activation-2.0 -I/usr/include/
> libxml2 -I/usr/include/gail-1.0 -I/usr/lib/gtk-2.0/include -I/usr/
> include/cairo -I/usr/include/pixman-1 -Wall -g -O2 -
> D_FORTIFY_SOURCE=1 -I/usr/include/tcl8.4 -D_REENTRANT=1 -
> D_THREAD_SAFE=1 -D_LARGEFILE64_SOURCE=1 -I/usr/lib/ruby/1.8/x86_64-
> linux -DRUBY_VERSION=18
> Linking: gcc -L/usr/lib/x86_64-linux-gnu -L. -Wl,-Bsymbolic-
> functions -rdynamic -Wl,-export-dynamic -Wl,-E -Wl,--as-needed -o
> vim -pthread -L/usr/lib/x86_64-linux-gnu -lgtk-x11-2.0 -lgdk-x11-2.0
> -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -
> lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0
> -lgthread-2.0 -lrt -lglib-2.0 -L/usr/lib/x86_64-linux-gnu -
> lgnomeui-2 -lbonoboui-2 -lgnomevfs-2 -lgnomecanvas-2 -lgnome-2 -lpopt -
> lbonobo-2 -lbonobo-activation -lORBit-2 -lart_lgpl_2 -lgtk-x11-2.0 -
> lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -
> lgdk_pixbuf-2.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgconf-2 -
> lgmodule-2.0 -lgobject-2.0 -lgthread-2.0 -lrt -lglib-2.0 -lXt -
> lncurses -lselinux -lacl -lgpm -Wl,-E -fstack-protector -L/usr/
> local/lib -L/usr/lib/perl/5.10/CORE -L/usr/lib -ltcl8.4 -lieee -
> lruby1.8 -lrt -lm
>
>
> Regard,
> Peng
>
>
> $ cat main.pl
> #!/usr/bin/env perl
>
> use strict;
> use warnings;
>
> #use feature ":5.10";
> use feature "switch";
>
> sub test_given {
> my ($foo)=@_;
> given($foo) {
> when (undef) {
> print '$foo is undefined';
> }
> when ("foo") {
> print '$foo is the string "foo"';
> }
> when ([1,3,5,7,9]) {
> print '$foo is an odd digit';
> continue; # Fall through
> }
> when ($_ < 100) {
> print '$foo is numerically less than 100';
> }
> when (\&complicated_check) {
> print 'a complicated check for $foo is true';
> }
> default {
> die q(I don't know what to do with $foo);
> }
> }
> }
>
>
> test_given('foo')

No comments: