The fast version is a filetype.vim script in my ~/. vim. If there is a cost
to these settings, why does it show up with ftdetect but not a local
filetype.vim?

Also most machines are not on vim 8, and thus still think .md is modula 2.

-- 
Sent from a telephone. Pardon my brevity.

On May 23, 2017 1:52 AM, "Bram Moolenaar" <b...@moolenaar.net> wrote:

>
> Frew Schmidt wrote:
>
> > I recently discovered that using ftdetect is absurdly slower than
> filetype.vim.  To reproduce, try this:
> >
> >      mkdir -p ~/.vim/ftdetect
> >      echo 'autocmd BufNew,BufNewFile,BufRead *.md :set
> filetype=markdown' >  ~/.vim/ftdetect/markdown.vim
> >      mkdir testing
> >      cd testing
> >      touch {1..500}.md
> >      vim
> >      :args *
>
> What do you compare this with?  Filetype detection already has this rule
> for markdown, thus the extra markdown.vim file isn't needed.
>
> Perhaps you can get some more information by setting 'verbose' to a
> non-zero number, e.g. ten.
>
> From your logs it looks like one run detects the filetype only for the
> one file that is loaded, while the other does it for every file in the
> argiument list.  Looks like something causes loading of every file.
>
> > Here's vim --version:
> >
> >      VIM - Vi IMproved 8.0 (2016 Sep 12, compiled Mar 17 2017 12:13:35)
> >      Included patches: 1-95
> >      Modified by pkg-vim-maintain...@lists.alioth.debian.org
> >      Compiled by pkg-vim-maintain...@lists.alioth.debian.org
> >      Huge version with GTK3 GUI.  Features included (+) or not (-):
> >      +acl             +file_in_path    +mouse_sgr       +tag_old_static
> >      +arabic          +find_in_path    -mouse_sysmouse  -tag_any_white
> >      +autocmd         +float           +mouse_urxvt     +tcl
> >      +balloon_eval    +folding         +mouse_xterm     +termguicolors
> >      +browse          -footer          +multi_byte      +terminfo
> >      ++builtin_terms  +fork()          +multi_lang      +termresponse
> >      +byte_offset     +gettext         -mzscheme        +textobjects
> >      +channel         -hangul_input    +netbeans_intg   +timers
> >      +cindent         +iconv           +num64           +title
> >      +clientserver    +insert_expand   +packages        +toolbar
> >      +clipboard       +job             +path_extra      +user_commands
> >      +cmdline_compl   +jumplist        +perl            +vertsplit
> >      +cmdline_hist    +keymap          +persistent_undo +virtualedit
> >      +cmdline_info    +lambda          +postscript      +visual
> >      +comments        +langmap         +printer         +visualextra
> >      +conceal         +libcall         +profile         +viminfo
> >      +cryptv          +linebreak       -python          +vreplace
> >      +cscope          +lispindent      +python3         +wildignore
> >      +cursorbind      +listcmds        +quickfix        +wildmenu
> >      +cursorshape     +localmap        +reltime         +windows
> >      +dialog_con_gui  +lua             +rightleft       +writebackup
> >      +diff            +menu            +ruby            +X11
> >      +digraphs        +mksession       +scrollbind      -xfontset
> >      +dnd             +modify_fname    +signs           +xim
> >      -ebcdic          +mouse           +smartindent     +xpm
> >      +emacs_tags      +mouseshape      +startuptime     +xsmp_interact
> >      +eval            +mouse_dec       +statusline      +xterm_clipboard
> >      +ex_extra        +mouse_gpm       -sun_workshop    -xterm_save
> >      +extra_search    -mouse_jsbterm   +syntax
> >      +farsi           +mouse_netterm   +tag_binary
> >         system vimrc file: "$VIM/vimrc"
> >           user vimrc file: "$HOME/.vimrc"
> >       2nd user vimrc file: "~/.vim/vimrc"
> >            user exrc file: "$HOME/.exrc"
> >        system gvimrc file: "$VIM/gvimrc"
> >          user gvimrc file: "$HOME/.gvimrc"
> >      2nd user gvimrc file: "~/.vim/gvimrc"
> >             defaults file: "$VIMRUNTIME/defaults.vim"
> >          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/gtk-3.0 -I/usr/include/at-spi2-atk/2.0
> -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0
> -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/gtk-3.0
> -I/usr/include/gio-unix-2.0/ -I/usr/include/mirclient
> -I/usr/include/mircore -I/usr/include/mircookie -I/usr/include/cairo
> -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0
> -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1
> -I/usr/include/freetype2 -I/usr/include/libpng16
> -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16
> -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include
> -Wdate-time  -g -O2 -fdebug-prefix-map=/build/vim-8krYYf/vim-8.0.0095=.
> -fPIE -fstack-protector-strong -Wformat -Werror=format-security
> -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1
> >      Linking: gcc   -L. -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now
> -fstack-protector -rdynamic -Wl,-export-dynamic -Wl,-E
> -Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now -Wl,--as-needed
> -o vim   -lgtk-3 -lgdk-3 -lpangocairo-1.0 -lpango-1.0 -latk-1.0
> -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0
> -lSM -lICE -lXpm -lXt -lX11 -lXdmcp -lSM -lICE  -lm -ltinfo -lnsl
> -lselinux  -lacl -lattr -lgpm -ldl  -L/usr/lib -llua5.2 -Wl,-E
> -fstack-protector-strong -L/usr/local/lib  
> -L/usr/lib/x86_64-linux-gnu/perl/5.24/CORE
> -lperl -ldl -lm -lpthread -lcrypt  
> -L/usr/lib/python3.5/config-3.5m-x86_64-linux-gnu
> -lpython3.5m -lpthread -ldl -lutil -lm -L/usr/lib/x86_64-linux-gnu -ltcl8.6
> -ldl -lz -lpthread -lieee -lm -lruby-2.3 -lpthread -lgmp -ldl -lcrypt -lm
> >
> > The docs *do* say that if you are detecting files based purely on names
> you should instead use an autload group in a filetype.vim file, but it's
> pretty far down in the docs and a *lot* of people seem to have made this
> mistake: https://github.com/search?p=4&q=%22set+ft%3Dmarkdown%22+
> language%3Avim&type=Code&utf8=%E2%9C%93
> >
> > I would like to know why this is slower, but more, if filetype.vim needs
> to be used for filename based filetype detection, and functions need to be
> defined in scripts.vim for content detection, what good is ftdetect anyway?
>
> Each sourced file has overhead, the more files you add that are sourced
> when opening a file the slower Vim gets.
>
> The ftdetect files are good when you want to just drop a file in a
> directory.  Installing a package is simpler that way.  Otherwise
> installing a package for a file type would require editing
> the filetype.vim script.
>
> --
> SOLDIER: What?  Ridden on a horse?
> ARTHUR:  Yes!
> SOLDIER: You're using coconuts!
>                  "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES
> LTD
>
>  /// Bram Moolenaar -- b...@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+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to