mirror of
https://github.com/sheerun/vim-polyglot.git
synced 2025-11-08 11:33:52 -05:00
Compare commits
11 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
50aa05bd72 | ||
|
|
7e2d060f88 | ||
|
|
3a298c9759 | ||
|
|
d9ec600545 | ||
|
|
33f0964d53 | ||
|
|
92cb76e33a | ||
|
|
378dcb3878 | ||
|
|
6f0c50457f | ||
|
|
06548fe617 | ||
|
|
0118088e0a | ||
|
|
17c2b630e1 |
6
Makefile
6
Makefile
@@ -1,10 +1,10 @@
|
||||
.PHONY: all test dev
|
||||
.PHONY: build test dev
|
||||
|
||||
all:
|
||||
build:
|
||||
@ scripts/build
|
||||
|
||||
test:
|
||||
@ scripts/test
|
||||
|
||||
dev:
|
||||
@ echo "packages.yaml\nheuristics.yaml\nscripts/test\nscripts/build\nscripts/test_extensions.vim" | DEV=1 entr bash -c 'make && make test'
|
||||
@ echo "packages.yaml\nheuristics.yaml\nscripts/test\nscripts/build\ntests/extensions.vim" | DEV=1 entr bash -c 'make && make test'
|
||||
|
||||
18
README.md
18
README.md
@@ -7,7 +7,7 @@ A collection of language packs for Vim.
|
||||
> One to rule them all, one to find them, one to bring them all and in the darkness bind them.
|
||||
|
||||
- It **won't affect your startup time**, as scripts are loaded only on demand\*.
|
||||
- It **installs and updates 120+ times faster** than the <!--Package Count-->196<!--/Package Count--> packages it consists of.
|
||||
- It **installs and updates 120+ times faster** than the <!--Package Count-->200<!--/Package Count--> packages it consists of.
|
||||
- It is more secure because scripts loaded for all extensions are generated by vim-polyglot (ftdetect).
|
||||
- Solid syntax and indentation support (other features skipped). Only the best language packs.
|
||||
- All unnecessary files are ignored (like enormous documentation from php support).
|
||||
@@ -81,6 +81,7 @@ If you need full functionality of any plugin, please use it directly with your p
|
||||
- [basic](https://github.com/vim/vim/tree/master/runtime)
|
||||
- [blade](https://github.com/jwalton512/vim-blade)
|
||||
- [brewfile](https://github.com/bfontaine/Brewfile.vim)
|
||||
- [bzl](https://github.com/vim/vim/tree/master/runtime)
|
||||
- [c/c++](https://github.com/vim-jp/vim-cpp)
|
||||
- [caddyfile](https://github.com/isobit/vim-caddyfile)
|
||||
- [carp](https://github.com/hellerve/carp-vim)
|
||||
@@ -88,6 +89,7 @@ If you need full functionality of any plugin, please use it directly with your p
|
||||
- [clojure](https://github.com/guns/vim-clojure-static)
|
||||
- [cmake](https://github.com/pboettch/vim-cmake-syntax)
|
||||
- [coffee-script](https://github.com/kchmck/vim-coffee-script)
|
||||
- [cpp-modern](https://github.com/bfrg/vim-cpp-modern)
|
||||
- [cql](https://github.com/elubow/cql-vim)
|
||||
- [cryptol](https://github.com/victoredwardocallaghan/cryptol.vim)
|
||||
- [crystal](https://github.com/rhysd/vim-crystal)
|
||||
@@ -177,6 +179,7 @@ If you need full functionality of any plugin, please use it directly with your p
|
||||
- [plantuml](https://github.com/aklt/plantuml-syntax)
|
||||
- [pony](https://github.com/jakwings/vim-pony)
|
||||
- [powershell](https://github.com/PProvost/vim-ps1)
|
||||
- [prolog](https://github.com/vim/vim/tree/master/runtime)
|
||||
- [protobuf](https://github.com/uarun/vim-protobuf)
|
||||
- [pug](https://github.com/digitaltoad/vim-pug)
|
||||
- [puppet](https://github.com/rodjek/vim-puppet)
|
||||
@@ -213,6 +216,7 @@ If you need full functionality of any plugin, please use it directly with your p
|
||||
- [swift](https://github.com/keith/swift.vim)
|
||||
- [sxhkd](https://github.com/baskerville/vim-sxhkdrc)
|
||||
- [systemd](https://github.com/wgwoods/vim-systemd-syntax)
|
||||
- [tads](https://github.com/vim/vim/tree/master/runtime)
|
||||
- [terraform](https://github.com/hashivim/vim-terraform)
|
||||
- [textile](https://github.com/timcharper/textile.vim)
|
||||
- [thrift](https://github.com/solarnz/thrift.vim)
|
||||
@@ -252,12 +256,20 @@ Please make sure you have `syntax on` in your `.vimrc` (or use something like [s
|
||||
Individual language packs can be disabled by setting `g:polyglot_disabled` as follows:
|
||||
|
||||
```vim
|
||||
let g:polyglot_disabled = ['css']
|
||||
let g:polyglot_disabled = ['markdown']
|
||||
```
|
||||
|
||||
The list of available languages to disable is shown above.
|
||||
|
||||
*Please declare this variable before polyglot is loaded (at the top of .vimrc)*
|
||||
|
||||
Please note that disabling a language won't make in your vim startup any faster / slower (only for specific this specific filetype). All plugins are loaded lazily, on demand.
|
||||
If you wish to use filetype detection by Vim Polyglot but you'd like to use your own syntax-highlighting plugin, you can append `.plugin` to disabled entry, like so:
|
||||
|
||||
```vim
|
||||
let g:polyglot_disabled = ['markdown.plugin']
|
||||
```
|
||||
|
||||
Please note that disabling a language won't make in your vim startup any faster / slower (only for specific this specific filetype). All plugins are lazily loaded only when they are really needed.
|
||||
|
||||
Vim Polyglot tries to automatically detect indentation settings (just like vim-sleuth). If this feature is not working for you for some reason, please file an issue and disable it temporarily with:
|
||||
|
||||
|
||||
74
after/syntax/c.vim
Normal file
74
after/syntax/c.vim
Normal file
@@ -0,0 +1,74 @@
|
||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'cpp-modern') == -1
|
||||
|
||||
" ==============================================================================
|
||||
" Vim syntax file
|
||||
" Language: C Additions
|
||||
" Original Author: Mikhail Wolfson <mywolfson@gmail.com>
|
||||
" http://www.vim.org/scripts/script.php?script_id=3064
|
||||
" Maintainer: bfrg <bfrg@users.noreply.github.com>
|
||||
" Website: https://github.com/bfrg/vim-cpp-modern
|
||||
" Last Change: Mar 14, 2020
|
||||
"
|
||||
" Extended C syntax highlighting including highlighting of user-defined
|
||||
" functions.
|
||||
"
|
||||
" This syntax file is based on:
|
||||
" https://github.com/octol/vim-cpp-enhanced-highlight
|
||||
" ==============================================================================
|
||||
|
||||
|
||||
" Highlight some additional keywords in the comments
|
||||
syn keyword cTodo contained BUG NOTE
|
||||
|
||||
|
||||
" Highlight function names
|
||||
if !get(g:, 'cpp_no_function_highlight', 0)
|
||||
syn match cUserFunction "\<\h\w*\>\(\s\|\n\)*("me=e-1 contains=cParen,cCppParen
|
||||
hi def link cUserFunction Function
|
||||
endif
|
||||
|
||||
|
||||
" Common ANSI-standard Names
|
||||
syn keyword cAnsiName
|
||||
\ PRId8 PRIi16 PRIo32 PRIu64 PRId16 PRIi32 PRIo64 PRIuLEAST8 PRId32 PRIi64 PRIoLEAST8 PRIuLEAST16 PRId64 PRIiLEAST8 PRIoLEAST16 PRIuLEAST32 PRIdLEAST8 PRIiLEAST16 PRIoLEAST32 PRIuLEAST64 PRIdLEAST16 PRIiLEAST32 PRIoLEAST64 PRIuFAST8 PRIdLEAST32 PRIiLEAST64 PRIoFAST8 PRIuFAST16 PRIdLEAST64 PRIiFAST8 PRIoFAST16 PRIuFAST32 PRIdFAST8 PRIiFAST16 PRIoFAST32 PRIuFAST64 PRIdFAST16 PRIiFAST32 PRIoFAST64 PRIuMAX PRIdFAST32 PRIiFAST64 PRIoMAX PRIuPTR PRIdFAST64 PRIiMAX PRIoPTR PRIx8 PRIdMAX PRIiPTR PRIu8 PRIx16 PRIdPTR PRIo8 PRIu16 PRIx32 PRIi8 PRIo16 PRIu32 PRIx64 PRIxLEAST8 SCNd8 SCNiFAST32 SCNuLEAST32 PRIxLEAST16 SCNd16 SCNiFAST64 SCNuLEAST64 PRIxLEAST32 SCNd32 SCNiMAX SCNuFAST8 PRIxLEAST64 SCNd64 SCNiPTR SCNuFAST16 PRIxFAST8 SCNdLEAST8 SCNo8 SCNuFAST32 PRIxFAST16 SCNdLEAST16 SCNo16 SCNuFAST64 PRIxFAST32 SCNdLEAST32 SCNo32 SCNuMAX PRIxFAST64 SCNdLEAST64 SCNo64 SCNuPTR PRIxMAX SCNdFAST8 SCNoLEAST8 SCNx8 PRIxPTR SCNdFAST16 SCNoLEAST16 SCNx16 PRIX8 SCNdFAST32 SCNoLEAST32 SCNx32 PRIX16 SCNdFAST64 SCNoLEAST64 SCNx64 PRIX32 SCNdMAX SCNoFAST8 SCNxLEAST8 PRIX64 SCNdPTR SCNoFAST16 SCNxLEAST16 PRIXLEAST8 SCNi8 SCNoFAST32 SCNxLEAST32 PRIXLEAST16 SCNi16 SCNoFAST64 SCNxLEAST64 PRIXLEAST32 SCNi32 SCNoMAX SCNxFAST8 PRIXLEAST64 SCNi64 SCNoPTR SCNxFAST16 PRIXFAST8 SCNiLEAST8 SCNu8 SCNxFAST32 PRIXFAST16 SCNiLEAST16 SCNu16 SCNxFAST64 PRIXFAST32 SCNiLEAST32 SCNu32 SCNxMAX PRIXFAST64 SCNiLEAST64 SCNu64 SCNxPTR PRIXMAX SCNiFAST8 SCNuLEAST8 PRIXPTR SCNiFAST16 SCNuLEAST16 STDC CX_LIMITED_RANGE STDC FENV_ACCESS STDC FP_CONTRACT
|
||||
\ errno environ and bitor not_eq xor and_eq compl or xor_eq bitand not or_eq
|
||||
|
||||
" Booleans
|
||||
syn keyword cBoolean true false TRUE FALSE
|
||||
|
||||
|
||||
" Default highlighting
|
||||
hi def link cBoolean Boolean
|
||||
hi def link cAnsiName Identifier
|
||||
|
||||
|
||||
" Highlight all standard C keywords as Statement
|
||||
" This is very similar to what other IDEs and editors do
|
||||
if get(g:, 'cpp_simple_highlight', 0)
|
||||
hi link cStorageClass Statement
|
||||
hi link cStructure Statement
|
||||
hi link cLabel Statement
|
||||
endif
|
||||
|
||||
|
||||
" Operators
|
||||
" syn match cOperator "\(<<\|>>\|[-+*/%&^|<>!=]\)="
|
||||
" syn match cOperator "<<\|>>\|&&\|||\|++\|--\|->"
|
||||
" syn match cOperator "[.!~*&%<>^|=,+-]"
|
||||
" syn match cOperator "/[^/*=]"me=e-1
|
||||
" syn match cOperator "/$"
|
||||
" syn match cOperator "&&\|||"
|
||||
" syn match cOperator "[][]"
|
||||
|
||||
" Preprocessor
|
||||
" syn keyword cDefined defined contained containedin=cDefine
|
||||
" hi def link cDefined cDefine
|
||||
|
||||
" Delimiters
|
||||
" syn match cDelimiter "[();\\]"
|
||||
" hi def link cDelimiter Delimiter
|
||||
" foldmethod=syntax fix, courtesy of Ivan Freitas
|
||||
" syn match cBraces display "[{}]"
|
||||
" hi def link cBraces Delimiter
|
||||
|
||||
endif
|
||||
450
after/syntax/cpp.vim
Normal file
450
after/syntax/cpp.vim
Normal file
@@ -0,0 +1,450 @@
|
||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'cpp-modern') == -1
|
||||
|
||||
" ==============================================================================
|
||||
" Vim syntax file
|
||||
" Language: C++ (Standard library including C++11/14/17/20)
|
||||
" Original Author: Jon Haggblad <https://github.com/octol>
|
||||
" Maintainer: bfrg <bfrg@users.noreply.github.com>
|
||||
" Website: https://github.com/bfrg/vim-cpp-modern
|
||||
" Last Change: Jun 23, 2020
|
||||
"
|
||||
" This syntax file is based on:
|
||||
" https://github.com/octol/vim-cpp-enhanced-highlight
|
||||
" http://www.vim.org/scripts/script.php?script_id=4293
|
||||
" ==============================================================================
|
||||
|
||||
" Standard library {{{1
|
||||
syntax keyword cppSTLconstant
|
||||
\ MB_CUR_MAX MB_LEN_MAX WCHAR_MAX WCHAR_MIN WEOF __STDC_UTF_16__ __STDC_UTF_32__
|
||||
|
||||
syntax keyword cppSTLconstant
|
||||
\ badbit digits digits10 eofbit failbit goodbit has_denorm has_denorm_loss has_infinity has_quiet_NaN has_signaling_NaN is_bounded is_exact is_iec559 is_integer is_modulo is_signed is_specialized max_exponent max_exponent10 min_exponent min_exponent10 nothrow npos radix round_style tinyness_before traps
|
||||
|
||||
syntax keyword cppSTLVariable
|
||||
\ cerr cin clog cout wcerr wcin wclog wcout
|
||||
|
||||
syntax keyword cppSTLexception
|
||||
\ bad_alloc bad_exception bad_typeid bad_cast domain_error exception failure invalid_argument length_error logic_error out_of_range overflow_error range_error runtime_error underflow_error
|
||||
|
||||
syntax keyword cppSTLfunctional
|
||||
\ binary_function binary_negate bit_and bit_not bit_or divides equal_to greater greater_equal less less_equal logical_and logical_not logical_or minus modulus multiplies negate not_equal_to plus unary_function unary_negate
|
||||
|
||||
syntax keyword cppSTLios
|
||||
\ endl ends flush resetiosflags setbase setfill setiosflags setprecision setw ws
|
||||
|
||||
syntax keyword cppSTLios
|
||||
\ boolalpha dec defaultfloat fixed hex hexfloat internal left noboolalpha noshowbase noshowpoint noshowpos noskipws nounitbuf nouppercase oct right scientific showbase showpoint showpos skipws unitbuf uppercase
|
||||
|
||||
syntax keyword cppSTLtype
|
||||
\ fmtflags iostate openmode
|
||||
|
||||
" Some of these can be highlighted as both cppSTLios and cppSTLconstant
|
||||
" syntax keyword cppSTLconstant
|
||||
" \ adjustfield app ate basefield binary floatfield in out trunc boolalpha dec fixed hex internal left oct right scientific showbase showpoint showpos skipws unitbuf uppercase
|
||||
|
||||
syntax keyword cppSTLiterator
|
||||
\ back_insert_iterator bidirectional_iterator const_iterator const_reverse_iterator forward_iterator front_insert_iterator input_iterator insert_iterator istream_iterator istreambuf_iterator iterator ostream_iterator ostreambuf_iterator output_iterator random_access_iterator raw_storage_iterator reverse_bidirectional_iterator reverse_iterator
|
||||
|
||||
syntax keyword cppSTLiterator_tag
|
||||
\ bidirectional_iterator_tag forward_iterator_tag input_iterator_tag output_iterator_tag random_access_iterator_tag
|
||||
|
||||
syntax keyword cppSTLnamespace
|
||||
\ experimental rel_ops std
|
||||
|
||||
syntax keyword cppSTLtype
|
||||
\ Init allocator auto_ptr basic_filebuf basic_fstream basic_ifstream basic_ios basic_iostream basic_istream basic_istringstream basic_ofstream basic_ostream basic_ostringstream basic_streambuf basic_string basic_stringbuf basic_stringstream binary_compose binder1st binder2nd bitset char_traits char_type const_mem_fun1_t const_mem_fun_ref1_t const_mem_fun_ref_t const_mem_fun_t const_pointer const_reference container_type deque difference_type div_t double_t event_callback filebuf first_type float_denorm_style float_round_style float_t fpos fstream gslice_array ifstream imaxdiv_t indirect_array int_type ios ios_base iostream istream istringstream istrstream iterator_category iterator_traits key_compare key_type ldiv_t list lldiv_t map mapped_type mask_array mbstate_t mem_fun1_t mem_fun_ref1_t mem_fun_ref_t mem_fun_t multimap multiset nothrow_t numeric_limits off_type ofstream ostream ostringstream ostrstream pair pointer pointer_to_binary_function pointer_to_unary_function pos_type priority_queue queue reference second_type seekdir sequence_buffer set sig_atomic_t size_type slice_array stack state_type stream streambuf streamoff streampos streamsize string stringbuf stringstream strstream strstreambuf temporary_buffer test_type time_t tm traits_type type_info u16string u32string unary_compose unary_negate valarray value_compare value_type vector wctrans_t wctype_t wfilebuf wfstream wifstream wint_t wios wiostream wistream wistringstream wofstream wostream wostringstream wstreambuf wstreampos wstring wstringbuf wstringstream
|
||||
|
||||
" locale
|
||||
syntax keyword cppSTLtype
|
||||
\ codecvt codecvt_base codecvt_byname collate collate_byname ctype ctype_base ctype_byname locale messages messages_base messages_byname money_base money_get money_put moneypunct moneypunct_byname num_get num_put numpunct numpunct_byname time_base time_get time_get_byname time_put time_put_byname
|
||||
|
||||
" template functions that are called with template parameters, like
|
||||
" std::use_facet<std::moneypunct<char, true>>(loc).curr_symbol()
|
||||
syntax keyword cppSTLfunction use_facet has_facet
|
||||
|
||||
" std::get is a template function, so when called as std::get<N>(t), we want it
|
||||
" to be highlighted as a function
|
||||
syntax keyword cppSTLfunction get
|
||||
|
||||
|
||||
" C++11 extensions {{{1
|
||||
if !exists('cpp_no_cpp11')
|
||||
syntax keyword cppType char16_t char32_t
|
||||
syntax keyword cppSTLconstant nullptr
|
||||
|
||||
" std containers
|
||||
syntax keyword cppSTLtype array
|
||||
|
||||
" atomic
|
||||
syntax keyword cppSTLconstant ATOMIC_FLAG_INIT
|
||||
syntax keyword cppSTLenum memory_order
|
||||
syntax keyword cppSTLtype
|
||||
\ atomic atomic_bool atomic_char atomic_char16_t atomic_char32_t atomic_flag atomic_int atomic_int_fast16_t atomic_int_fast32_t atomic_int_fast64_t atomic_int_fast8_t atomic_int_least16_t atomic_int_least32_t atomic_int_least64_t atomic_int_least8_t atomic_intmax_t atomic_intptr_t atomic_llong atomic_long atomic_ptrdiff_t atomic_schar atomic_short atomic_size_t atomic_uchar atomic_uint atomic_uint_fast16_t atomic_uint_fast32_t atomic_uint_fast64_t atomic_uint_fast8_t atomic_uint_least16_t atomic_uint_least32_t atomic_uint_least64_t atomic_uint_least8_t atomic_uintmax_t atomic_uintptr_t atomic_ullong atomic_ulong atomic_ushort atomic_wchar_t
|
||||
|
||||
" chrono
|
||||
syntax keyword cppSTLnamespace chrono
|
||||
syntax keyword cppSTLcast duration_cast time_point_cast
|
||||
syntax keyword cppSTLtype
|
||||
\ duration duration_values high_resolution_clock hours microseconds milliseconds minutes nanoseconds seconds steady_clock system_clock time_point treat_as_floating_point
|
||||
|
||||
" condition_variable
|
||||
syntax keyword cppSTLtype condition_variable
|
||||
|
||||
" cstddef
|
||||
syntax keyword cppSTLtype nullptr_t max_align_t
|
||||
|
||||
" exception
|
||||
syntax keyword cppSTLtype exception_ptr nested_exception
|
||||
|
||||
" functional
|
||||
syntax keyword cppSTLexception bad_function_call
|
||||
syntax keyword cppSTLfunctional function
|
||||
syntax keyword cppSTLfunction mem_fn
|
||||
syntax keyword cppSTLconstant _1 _2 _3 _4 _5 _6 _7 _8 _9
|
||||
syntax keyword cppSTLtype
|
||||
\ hash is_bind_expression is_placeholder reference_wrapper
|
||||
|
||||
" iterator
|
||||
syntax keyword cppSTLiterator move_iterator
|
||||
|
||||
" forward_list
|
||||
syntax keyword cppSTLtype forward_list
|
||||
|
||||
" future
|
||||
syntax keyword cppSTLtype future packaged_task promise shared_future
|
||||
syntax keyword cppSTLenum future_status future_errc launch
|
||||
syntax keyword cppSTLexception future_error
|
||||
|
||||
" initializer_list
|
||||
syntax keyword cppSTLtype initializer_list
|
||||
|
||||
" ios
|
||||
syntax keyword cppSTLenum io_errc
|
||||
" syntax keyword cppSTLtype is_error_code_enum
|
||||
|
||||
" limits
|
||||
syntax keyword cppSTLconstant max_digits10
|
||||
|
||||
" locale
|
||||
syntax keyword cppSTLfunction isblank
|
||||
syntax keyword cppSTLtype
|
||||
\ codecvt_mode codecvt_utf16 codecvt_utf8 codecvt_utf8_utf16 wbuffer_convert wstring_convert
|
||||
|
||||
" memory
|
||||
syntax keyword cppSTLconstant allocator_arg
|
||||
syntax keyword cppSTLexception bad_weak_ptr
|
||||
syntax keyword cppSTLfunction allocate_shared make_shared
|
||||
syntax keyword cppSTLfunction
|
||||
\ const_pointer_cast dynamic_pointer_cast static_pointer_cast
|
||||
|
||||
syntax keyword cppSTLtype
|
||||
\ allocator_arg_t allocator_traits allocator_type default_delete enable_shared_from_this is_always_equal owner_less pointer_safety pointer_traits propagate_on_container_copy_assignment propagate_on_container_move_assignment propagate_on_container_swap rebind_alloc rebind_traits shared_ptr unique_ptr uses_allocator void_pointer const_void_pointer weak_ptr
|
||||
|
||||
" mutex
|
||||
syntax keyword cppSTLenum cv_status
|
||||
syntax keyword cppSTLconstant defer_lock try_to_lock adopt_lock
|
||||
syntax keyword cppSTLtype
|
||||
\ adopt_lock_t condition_variable_any defer_lock_t lock_guard mutex once_flag recursive_mutex recursive_timed_mutex timed_mutex try_to_lock_t unique_lock
|
||||
|
||||
" new
|
||||
syntax keyword cppSTLexception bad_array_new_length
|
||||
|
||||
" numerics, cmath
|
||||
syntax keyword cppSTLconstant
|
||||
\ FLT_EVAL_METHOD FP_INFINITE FP_NAN FP_NORMAL FP_SUBNORMAL FP_ZERO HUGE_VALF HUGE_VALL INFINITY MATH_ERREXCEPT MATH_ERRNO NAN math_errhandling
|
||||
|
||||
" random
|
||||
syntax keyword cppSTLfunction generate_canonical
|
||||
syntax keyword cppSTLtype
|
||||
\ bernoulli_distribution binomial_distribution cauchy_distribution chi_squared_distribution default_random_engine discard_block_engine discrete_distribution exponential_distribution extreme_value_distribution fisher_f_distribution gamma_distribution geometric_distribution independent_bits_engine knuth_b linear_congruential_engine lognormal_distribution mersenne_twister_engine minstd_rand minstd_rand0 mt19937 mt19937_64 negative_binomial_distribution normal_distribution piecewise_constant_distribution piecewise_linear_distribution poisson_distribution random_device ranlux24 ranlux24_base ranlux48 ranlux48_base seed_seq shuffle_order_engine student_t_distribution subtract_with_carry_engine uniform_int_distribution uniform_real_distribution weibull_distribution
|
||||
|
||||
" ratio
|
||||
syntax keyword cppSTLtype
|
||||
\ atto centi deca deci exa femto giga hecto kilo mega micro milli nano peta pico ratio ratio_add ratio_divide ratio_equal ratio_greater ratio_greater_equal ratio_less ratio_less_equal ratio_multiply ratio_not_equal ratio_subtract tera yocto yotta zepto zetta
|
||||
|
||||
" regex
|
||||
syntax keyword cppSTLiterator regex_iterator regex_token_iterator
|
||||
syntax keyword cppSTLexception regex_error
|
||||
syntax keyword cppSTLtype
|
||||
\ basic_regex match_results regex_traits sub_match syntax_option_type match_flag_type error_type
|
||||
|
||||
" scoped_allocator
|
||||
syntax keyword cppSTLtype
|
||||
\ scoped_allocator_adaptor outer_allocator_type inner_allocator_type
|
||||
|
||||
" system_error
|
||||
syntax keyword cppSTLenum errc
|
||||
syntax keyword cppSTLexception system_error
|
||||
syntax keyword cppSTLtype
|
||||
\ error_code error_condition error_category is_error_code_enum is_error_condition_enum
|
||||
|
||||
" thread
|
||||
syntax keyword cppSTLnamespace this_thread
|
||||
syntax keyword cppSTLtype thread
|
||||
|
||||
" tuple
|
||||
syntax keyword cppSTLtype tuple tuple_size tuple_element
|
||||
syntax keyword cppSTLfunction forward_as_tuple make_tuple tie tuple_cat
|
||||
" Note: ignore is also a function
|
||||
" syntax keyword cppSTLVariable ignore
|
||||
|
||||
" typeindex
|
||||
syntax keyword cppSTLtype type_index
|
||||
|
||||
" type_traits
|
||||
syntax keyword cppSTLtype
|
||||
\ add_const add_cv add_lvalue_reference add_pointer add_rvalue_reference add_volatile aligned_storage aligned_union alignment_of common_type conditional decay enable_if extent false_type has_virtual_destructor integral_constant is_abstract is_arithmetic is_array is_assignable is_base_of is_class is_compound is_const is_constructible is_convertible is_copy_assignable is_copy_constructible is_default_constructible is_destructible is_empty is_enum is_floating_point is_function is_fundamental is_integral is_literal_type is_lvalue_reference is_member_function_pointer is_member_object_pointer is_member_pointer is_move_assignable is_move_constructible is_nothrow_assignable is_nothrow_constructible is_nothrow_copy_assignable is_nothrow_copy_constructible is_nothrow_default_constructible is_nothrow_destructible is_nothrow_move_assignable is_nothrow_move_constructible is_object is_pod is_pointer is_polymorphic is_reference is_rvalue_reference is_same is_scalar is_signed is_standard_layout is_trivial is_trivially_assignable is_trivially_constructible is_trivially_copy_assignable is_trivially_copy_constructible is_trivially_copyable is_trivially_default_constructible is_trivially_destructible is_trivially_move_assignable is_trivially_move_constructible is_union is_unsigned is_void is_volatile make_signed make_unsigned rank remove_all_extents remove_const remove_cv remove_extent remove_pointer remove_reference remove_volatile result_of true_type underlying_type
|
||||
|
||||
" unordered_map, unordered_set, unordered_multimap, unordered_multiset
|
||||
syntax keyword cppSTLiterator const_local_iterator local_iterator
|
||||
syntax keyword cppSTLtype
|
||||
\ hasher key_equal unordered_map unordered_multimap unordered_multiset unordered_set
|
||||
|
||||
" utility
|
||||
syntax keyword cppSTLtype piecewise_construct_t
|
||||
syntax keyword cppSTLconstant piecewise_construct
|
||||
syntax keyword cppSTLfunction declval forward move move_if_noexcept
|
||||
endif
|
||||
|
||||
|
||||
" C++14 extensions {{{1
|
||||
if !exists('cpp_no_cpp14')
|
||||
" chrono
|
||||
syntax keyword cppSTLnamespace literals chrono_literals
|
||||
|
||||
" memory
|
||||
syntax keyword cppSTLfunction make_unique
|
||||
|
||||
" utility
|
||||
syntax keyword cppSTLtype
|
||||
\ index_sequence index_sequence_for integer_sequence make_index_sequence make_integer_sequence
|
||||
|
||||
" shared_mutex
|
||||
syntax keyword cppSTLtype shared_lock shared_timed_mutex
|
||||
|
||||
" string
|
||||
syntax keyword cppSTLnamespace string_literals
|
||||
|
||||
" tuple
|
||||
syntax keyword cppSTLtype tuple_element_t
|
||||
|
||||
" type_traits
|
||||
syntax keyword cppSTLtype
|
||||
\ add_const_t add_cv_t add_lvalue_reference_t add_pointer_t add_rvalue_reference_t add_volatile_t aligned_storage_t aligned_union_t common_type_t conditional_t decay_t enable_if_t is_null_pointer make_signed_t make_unsigned_t remove_all_extents_t remove_const_t remove_cv_t remove_extent_t remove_pointer_t remove_reference_t remove_volatile_t result_of_t underlying_type_t
|
||||
endif
|
||||
|
||||
|
||||
" C++17 extensions {{{1
|
||||
if !exists('cpp_no_cpp17')
|
||||
" any
|
||||
syntax keyword cppSTLtype any
|
||||
syntax keyword cppSTLexception bad_any_cast
|
||||
syntax keyword cppSTLcast any_cast
|
||||
|
||||
" atomic
|
||||
syntax keyword cppSTLconstant is_always_lock_free
|
||||
|
||||
" chrono
|
||||
syntax keyword cppSTLbool treat_as_floating_point_v
|
||||
|
||||
" execution
|
||||
syntax keyword cppSTLnamespace execution
|
||||
syntax keyword cppSTLconstant seq par par_unseq
|
||||
syntax keyword cppSTLbool is_execution_policy_v
|
||||
syntax keyword cppSTLtype
|
||||
\ is_execution_policy parallel_policy parallel_unsequenced_policy sequenced_policy
|
||||
|
||||
" filesystem
|
||||
syntax keyword cppSTLnamespace filesystem
|
||||
syntax keyword cppSTLexception filesystem_error
|
||||
|
||||
syntax keyword cppSTLtype
|
||||
\ directory_entry directory_iterator file_status file_time_type path recursive_directory_iterator space_info
|
||||
|
||||
syntax keyword cppSTLenum
|
||||
\ copy_options directory_options file_type perm_options perms
|
||||
|
||||
" Note: There is std::filesystem::path::format and std::format() in <format>
|
||||
syntax match cppSTLenum "\<format\>(\@!"
|
||||
|
||||
syntax keyword cppSTLconstant
|
||||
\ copy_symlinks auto_format create_hard_links create_symlinks directories_only follow_directory_symlink generic_format group_all group_exec group_read group_write native_format others_all others_exec others_read others_write overwrite_existing owner_all owner_exec owner_read owner_write preferred_separator recursive set_gid set_uid skip_existing skip_permission_denied skip_symlinks sticky_bit update_existing
|
||||
|
||||
" Note: these keywords are very likely to coincide with user-defined variables
|
||||
" syntax keyword cppSTLconstant
|
||||
" \ all mask unknown replace add remove nofollow none not_found regular directory symlink block character fifo socket unknown
|
||||
|
||||
" Note: these are also functions
|
||||
" syntax keyword cppSTLconstant capacity free available
|
||||
|
||||
" functional
|
||||
syntax keyword cppSTLbool is_bind_expression_v is_placeholder_v
|
||||
syntax keyword cppSTLtype
|
||||
\ default_order default_order_t default_searcher boyer_moore_searcher boyer_moore_horspool_searcher
|
||||
|
||||
" memory
|
||||
syntax keyword cppSTLfunction reinterpret_pointer_cast
|
||||
syntax keyword cppSTLconstant uses_allocator_v
|
||||
|
||||
" memory_resource
|
||||
syntax keyword cppSTLtype
|
||||
\ memory_resource monotonic_buffer_resource polymorphic_allocator pool_options synchronized_pool_resource unsynchronized_pool_resource
|
||||
|
||||
" mutex
|
||||
syntax keyword cppSTLtype scoped_lock
|
||||
|
||||
" new
|
||||
syntax keyword cppSTLconstant
|
||||
\ hardware_destructive_interference_size hardware_constructive_interference_size
|
||||
|
||||
" optional
|
||||
syntax keyword cppSTLtype optional nullopt_t
|
||||
syntax keyword cppSTLexception bad_optional_access
|
||||
syntax keyword cppSTLconstant nullopt
|
||||
syntax keyword cppSTLfunction make_optional
|
||||
|
||||
" shared_mutex
|
||||
syntax keyword cppSTLtype shared_mutex
|
||||
|
||||
" string_view
|
||||
syntax keyword cppSTLtype
|
||||
\ basic_string_view string_view u16string_view u32string_view wstring_view
|
||||
|
||||
" system_error
|
||||
syntax keyword cppSTLbool is_error_code_enum_v is_error_condition_enum_v
|
||||
|
||||
" tuple
|
||||
syntax keyword cppSTLconstant tuple_size_v
|
||||
syntax keyword cppSTLfunction make_from_tuple
|
||||
|
||||
" type_traits
|
||||
syntax keyword cppSTLconstant alignment_of_v rank_v extent_v
|
||||
syntax keyword cppSTLbool
|
||||
\ conjunction_v disjunction_v has_unique_object_representations_v has_virtual_destructor_v is_abstract_v is_aggregate_v is_arithmetic_v is_array_v is_assignable_v is_base_of_v is_callable_v is_class_v is_compound_v is_const_v is_constructible_v is_convertible_v is_copy_assignable_v is_copy_constructible_v is_default_constructible_v is_destructible_v is_empty_v is_enum_v is_floating_point_v is_function_v is_fundamental_v is_integral_v is_invocable_r_v is_invocable_v is_literal_type_v is_lvalue_reference_v is_member_function_pointer_v is_member_object_pointer_v is_member_pointer_v is_move_assignable_v is_move_constructible_v is_nothrow_assignable_v is_nothrow_constructible_v is_nothrow_copy_assignable_v is_nothrow_copy_constructible_v is_nothrow_default_constructible_v is_nothrow_destructible_v is_nothrow_invocable_r_v is_nothrow_invocable_v is_nothrow_move_assignable_v is_nothrow_move_constructible_v is_nothrow_swappable_v is_nothrow_swappable_with_v is_nowthrow_callable_v is_null_pointer_v is_object_v is_pod_v is_pointer_v is_polymorphic_v is_reference_v is_rvalue_reference_v is_same_v is_scalar_v is_signed_v is_standard_layout_v is_swappable_v is_swappable_with_v is_trivial_v is_trivially_assignable_v is_trivially_constructible_v is_trivially_copy_assignable_v is_trivially_copy_constructible_v is_trivially_copyable_v is_trivially_default_constructible_v is_trivially_destructible_v is_trivially_move_assignable_v is_trivially_move_constructible_v is_union_v is_unsigned_v is_void_v is_volatile_v negation_v
|
||||
|
||||
syntax keyword cppSTLtype
|
||||
\ bool_constant conjunction disjunction has_unique_object_representations invoke_result invoke_result_t is_aggregate is_callable is_invocable is_invocable_r is_nothrow_invocable is_nothrow_invocable_r is_nothrow_swappable is_nothrow_swappable_with is_nowthrow_callable is_swappable is_swappable_with negation void_t
|
||||
|
||||
" unordered_map, unordered_set, unordered_multimap, unordered_multiset
|
||||
syntax keyword cppSTLtype node_type insert_return_type
|
||||
|
||||
" utility
|
||||
syntax keyword cppSTLtype
|
||||
\ in_place_tag in_place_t in_place_type_t in_place_index_t
|
||||
|
||||
" variant
|
||||
syntax keyword cppSTLconstant variant_npos variant_size_v
|
||||
syntax keyword cppSTLexception bad_variant_access
|
||||
syntax keyword cppSTLtype
|
||||
\ monostate variant variant_size variant_alternative variant_alternative_t
|
||||
endif
|
||||
|
||||
|
||||
" C++20 extensions {{{1
|
||||
if !exists('cpp_no_cpp20')
|
||||
syntax keyword cppType char8_t
|
||||
syntax keyword cppOperator co_await
|
||||
syntax keyword cppStatement consteval constinit concept requires co_yield co_return
|
||||
|
||||
" atomic
|
||||
syntax keyword cppSTLtype atomic_ref
|
||||
|
||||
" bit
|
||||
syntax keyword cppSTLtype endian
|
||||
|
||||
" compare
|
||||
syntax keyword cppSTLtype
|
||||
\ weak_ordering strong_ordering partial_ordering weak_equality strong_equality common_comparison_category common_comparison_category_t
|
||||
|
||||
" concepts
|
||||
syntax keyword cppSTLconcept
|
||||
\ assignable_from boolean common_reference_with common_with constructible_from convertible_to copy_constructible copyable default_constructible derived_from destructible equality_comparable equality_comparable_with equivalence_relation floating_point integral invocable movable move_constructible predicate regular regular_invocable relation same_as semiregular signed_integral strict_weak_order swappable swappable_with totally_ordered totally_ordered_with unsigned_integral default_initializable
|
||||
|
||||
" concepts - named requirements
|
||||
" These are concepts that haven't made it into the C++ Standard yet
|
||||
" https://en.cppreference.com/w/cpp/named_req
|
||||
" http://en.cppreference.com/w/cpp/language/constraints
|
||||
if get(g:, 'cpp_named_requirements_highlight', 0)
|
||||
syntax keyword cppSTLNamedReq
|
||||
\ Allocator AllocatorAwareContainer AssociativeContainer BasicLockable BidirectionalIterator BinaryPredicate BinaryTypeTrait BitmaskType Callable CharTraits Clock Compare ConstExprIterator Container ContiguousContainer ContiguousIterator CopyAssignable CopyInsertable CopyInsertable DefaultInsertable EmplaceConstructible Erasable FormattedInputFunction FormattedOutputFunction ForwardIterator FunctionObject Hash InputIterator Iterator LessThanComparable LiteralType Lockable MoveAssignable MoveInsertable Mutex NullablePointer NumericType OutputIterator PODType RandomAccessIterator RandomNumberDistribution RandomNumberEngine RandomNumberEngineAdaptor RegexTraits ReversibleContainer SeedSequence SequenceContainer SharedMutex SharedTimedMutex StandardLayoutType TimedLockable TimedMutex TransformationTrait TrivialClock TrivialType TriviallyCopyable UnaryTypeTrait UnformattedInputFunction UnformattedOutputFunction UniformRandomBitGenerator UnorderedAssociativeContainer ValueSwappable
|
||||
hi def link cppSTLNamedReq Typedef
|
||||
endif
|
||||
|
||||
" contract
|
||||
syntax keyword cppSTLtype contract_violation
|
||||
|
||||
" coroutines
|
||||
syntax keyword cppSTLtype
|
||||
\ coroutine_traits coroutine_handle noop_coroutine_handle noop_coroutine_promise suspend_never suspend_always
|
||||
|
||||
" memory
|
||||
syntax keyword cppSTLfunction
|
||||
\ make_unique_default_init make_shared_default_init allocate_shared_default_init uses_allocator_construction_args make_obj_using_allocator
|
||||
|
||||
" type_traits
|
||||
syntax keyword cppSTLtype
|
||||
\ remove_cvref remove_cvref_t is_bounded_array is_layout_compatible is_unbounded_array is_nothrow_convertible has_strong_structural_equality is_pointer_interconvertible_base_of unwrap_reference unwrap_reference_t unwrap_ref_decay unwrap_ref_decay_t basic_common_reference common_reference common_reference_t
|
||||
|
||||
syntax keyword cppSTLbool
|
||||
\ is_bounded_array_v is_layout_compatible_v is_unbounded_array_v is_nothrow_convertible_v has_strong_structural_equality_v is_pointer_interconvertible_base_of_v
|
||||
|
||||
syntax keyword cppSTLfunction is_corresponding_member
|
||||
|
||||
" ranges
|
||||
syntax keyword cppSTLnamespace ranges views
|
||||
|
||||
syntax keyword cppSTLconcept
|
||||
\ range sized_range view input_range output_range forward_range bidirectional_range random_access_range contiguous_range common_range viewable_range
|
||||
|
||||
syntax keyword cppSTLtype
|
||||
\ iterator_t sentinel_t dangling safe_iterator_t safe_subrange_t ref_view filter_view transform_view iota_view join_view empty_view single_view split_view common_view reverse_view view_interface
|
||||
|
||||
" span
|
||||
syntax keyword cppSTLtype span
|
||||
syntax keyword cppSTLconstant dynamic_extent
|
||||
syntax keyword cppSTLfunction subspan
|
||||
|
||||
" syncstream
|
||||
syntax keyword cppSTLtype
|
||||
\ basic_syncbuf basic_osyncstream syncbuf wsyncbuf osyncstream wosyncstream
|
||||
endif
|
||||
|
||||
" Boost {{{1
|
||||
if !exists('cpp_no_boost')
|
||||
syntax keyword cppSTLnamespace boost
|
||||
syntax keyword cppSTLcast lexical_cast
|
||||
endif
|
||||
" }}}
|
||||
|
||||
|
||||
" Default highlighting
|
||||
hi def link cppSTLbool Boolean
|
||||
hi def link cppStatement Statement
|
||||
hi def link cppSTLfunction Function
|
||||
hi def link cppSTLfunctional Typedef
|
||||
hi def link cppSTLconstant Constant
|
||||
hi def link cppSTLnamespace Constant
|
||||
hi def link cppSTLtype Typedef
|
||||
hi def link cppSTLexception Exception
|
||||
hi def link cppSTLiterator Typedef
|
||||
hi def link cppSTLiterator_tag Typedef
|
||||
hi def link cppSTLenum Typedef
|
||||
hi def link cppSTLios Function
|
||||
hi def link cppSTLcast Statement
|
||||
hi def link cppSTLconcept Typedef
|
||||
hi def link cppSTLVariable Identifier
|
||||
|
||||
" The keywords {inline, virtual, explicit, export, override, final} are
|
||||
" standard C++ keywords and NOT types!
|
||||
hi link cppModifier Statement
|
||||
|
||||
|
||||
" Highlight all standard C++ keywords as Statement
|
||||
if get(g:, 'cpp_simple_highlight', 0)
|
||||
hi link cppStructure Statement
|
||||
hi link cppExceptions Statement
|
||||
hi link cppStorageClass Statement
|
||||
hi link cppSTLexception Typedef
|
||||
endif
|
||||
|
||||
endif
|
||||
@@ -572,6 +572,10 @@ function! go#config#GoplsOptions() abort
|
||||
return get(g:, 'go_gopls_options', ['-remote=auto'])
|
||||
endfunction
|
||||
|
||||
function! go#config#FillStructMode() abort
|
||||
return get(g:, 'go_fillstruct_mode', 'fillstruct')
|
||||
endfunction
|
||||
|
||||
" Set the default value. A value of "1" is a shortcut for this, for
|
||||
" compatibility reasons.
|
||||
if exists("g:go_gorename_prefill") && g:go_gorename_prefill == 1
|
||||
|
||||
@@ -2,19 +2,11 @@
|
||||
let s:cpo_save = &cpo
|
||||
set cpo&vim
|
||||
|
||||
" We need it because scripts.vim in vim uses "set ft=" which cannot be
|
||||
" overridden with setf (and we can't use set ft= so our scripts.vim work)
|
||||
func! s:Setf(ft)
|
||||
if &filetype !~# '<'.a:ft.'>'
|
||||
let &filetype = a:ft
|
||||
endif
|
||||
endfunc
|
||||
|
||||
func! polyglot#Heuristics()
|
||||
func! polyglot#Shebang()
|
||||
" Try to detect filetype from shebang
|
||||
let l:filetype = polyglot#Shebang()
|
||||
if l:filetype != ""
|
||||
exec "setf " . l:filetype
|
||||
let ft = polyglot#ShebangFiletype()
|
||||
if ft != ""
|
||||
let &ft = ft
|
||||
return 1
|
||||
endif
|
||||
|
||||
@@ -52,6 +44,8 @@ let s:interpreters = {
|
||||
\ 'cperl': 'perl',
|
||||
\ 'perl': 'perl',
|
||||
\ 'php': 'php',
|
||||
\ 'swipl': 'prolog',
|
||||
\ 'yap': 'prolog',
|
||||
\ 'pwsh': 'ps1',
|
||||
\ 'python': 'python',
|
||||
\ 'python2': 'python',
|
||||
@@ -95,7 +89,7 @@ let s:r_hashbang = '^#!\s*\(\S\+\)\s*\(.*\)\s*'
|
||||
let s:r_envflag = '%(\S\+=\S\+\|-[iS]\|--ignore-environment\|--split-string\)'
|
||||
let s:r_env = '^\%(\' . s:r_envflag . '\s\+\)*\(\S\+\)'
|
||||
|
||||
func! polyglot#Shebang()
|
||||
func! polyglot#ShebangFiletype()
|
||||
let l:line1 = getline(1)
|
||||
|
||||
if l:line1 !~# "^#!"
|
||||
@@ -133,36 +127,36 @@ func! polyglot#Shebang()
|
||||
endfunc
|
||||
|
||||
func! polyglot#DetectInpFiletype()
|
||||
let line = getline(1)
|
||||
let line = getline(nextnonblank(1))
|
||||
if line =~# '^\*'
|
||||
call s:Setf('abaqus') | return
|
||||
set ft=abaqus | return
|
||||
endif
|
||||
for lnum in range(1, min([line("$"), 500]))
|
||||
let line = getline(lnum)
|
||||
if line =~? '^header surface data'
|
||||
call s:Setf('trasys') | return
|
||||
set ft=trasys | return
|
||||
endif
|
||||
endfor
|
||||
endfunc
|
||||
|
||||
func! polyglot#DetectAsaFiletype()
|
||||
if exists("g:filetype_asa")
|
||||
call s:Setf(g:filetype_asa) | return
|
||||
let &ft = g:filetype_asa | return
|
||||
endif
|
||||
call s:Setf('aspvbs') | return
|
||||
set ft=aspvbs | return
|
||||
endfunc
|
||||
|
||||
func! polyglot#DetectAspFiletype()
|
||||
if exists("g:filetype_asp")
|
||||
call s:Setf(g:filetype_asp) | return
|
||||
let &ft = g:filetype_asp | return
|
||||
endif
|
||||
for lnum in range(1, min([line("$"), 3]))
|
||||
let line = getline(lnum)
|
||||
if line =~? 'perlscript'
|
||||
call s:Setf('aspperl') | return
|
||||
set ft=aspperl | return
|
||||
endif
|
||||
endfor
|
||||
call s:Setf('aspvbs') | return
|
||||
set ft=aspvbs | return
|
||||
endfunc
|
||||
|
||||
func! polyglot#DetectHFiletype()
|
||||
@@ -170,18 +164,18 @@ func! polyglot#DetectHFiletype()
|
||||
let line = getline(lnum)
|
||||
if line =~# '^\s*\(@\(interface\|class\|protocol\|property\|end\|synchronised\|selector\|implementation\)\(\<\|\>\)\|#import\s\+.\+\.h[">]\)'
|
||||
if exists("g:c_syntax_for_h")
|
||||
call s:Setf('objc') | return
|
||||
set ft=objc | return
|
||||
endif
|
||||
call s:Setf('objcpp') | return
|
||||
set ft=objcpp | return
|
||||
endif
|
||||
endfor
|
||||
if exists("g:c_syntax_for_h")
|
||||
call s:Setf('c') | return
|
||||
set ft=c | return
|
||||
endif
|
||||
if exists("g:ch_syntax_for_h")
|
||||
call s:Setf('ch') | return
|
||||
set ft=ch | return
|
||||
endif
|
||||
call s:Setf('cpp') | return
|
||||
set ft=cpp | return
|
||||
endfunc
|
||||
|
||||
func! polyglot#DetectMFiletype()
|
||||
@@ -192,53 +186,53 @@ func! polyglot#DetectMFiletype()
|
||||
let saw_comment = 1
|
||||
endif
|
||||
if line =~# '^\s*\(@\(interface\|class\|protocol\|property\|end\|synchronised\|selector\|implementation\)\(\<\|\>\)\|#import\s\+.\+\.h[">]\)'
|
||||
call s:Setf('objc') | return
|
||||
set ft=objc | return
|
||||
endif
|
||||
if line =~# '^\s*%'
|
||||
call s:Setf('octave') | return
|
||||
set ft=octave | return
|
||||
endif
|
||||
if line =~# '^\s*(\*'
|
||||
call s:Setf('mma') | return
|
||||
set ft=mma | return
|
||||
endif
|
||||
if line =~? '^\s*\(\(type\|var\)\(\<\|\>\)\|--\)'
|
||||
call s:Setf('murphi') | return
|
||||
set ft=murphi | return
|
||||
endif
|
||||
endfor
|
||||
if saw_comment
|
||||
call s:Setf('objc') | return
|
||||
set ft=objc | return
|
||||
endif
|
||||
if exists("g:filetype_m")
|
||||
call s:Setf(g:filetype_m) | return
|
||||
let &ft = g:filetype_m | return
|
||||
endif
|
||||
call s:Setf('octave') | return
|
||||
set ft=octave | return
|
||||
endfunc
|
||||
|
||||
func! polyglot#DetectFsFiletype()
|
||||
for lnum in range(1, min([line("$"), 50]))
|
||||
let line = getline(lnum)
|
||||
if line =~# '^\(: \|new-device\)'
|
||||
call s:Setf('forth') | return
|
||||
set ft=forth | return
|
||||
endif
|
||||
if line =~# '^\s*\(#light\|import\|let\|module\|namespace\|open\|type\)'
|
||||
call s:Setf('fsharp') | return
|
||||
set ft=fsharp | return
|
||||
endif
|
||||
if line =~# '\s*\(#version\|precision\|uniform\|varying\|vec[234]\)'
|
||||
call s:Setf('glsl') | return
|
||||
set ft=glsl | return
|
||||
endif
|
||||
endfor
|
||||
if exists("g:filetype_fs")
|
||||
call s:Setf(g:filetype_fs) | return
|
||||
let &ft = g:filetype_fs | return
|
||||
endif
|
||||
call s:Setf('forth') | return
|
||||
set ft=forth | return
|
||||
endfunc
|
||||
|
||||
func! polyglot#DetectReFiletype()
|
||||
for lnum in range(1, min([line("$"), 50]))
|
||||
let line = getline(lnum)
|
||||
if line =~# '^\s*#\%(\%(if\|ifdef\|define\|pragma\)\s\+\w\|\s*include\s\+[<"]\|template\s*<\)'
|
||||
call s:Setf('cpp') | return
|
||||
set ft=cpp | return
|
||||
endif
|
||||
call s:Setf('reason') | return
|
||||
set ft=reason | return
|
||||
endfor
|
||||
endfunc
|
||||
|
||||
@@ -246,54 +240,143 @@ func! polyglot#DetectIdrFiletype()
|
||||
for lnum in range(1, min([line("$"), 5]))
|
||||
let line = getline(lnum)
|
||||
if line =~# '^\s*--.*[Ii]dris \=1'
|
||||
call s:Setf('idris') | return
|
||||
set ft=idris | return
|
||||
endif
|
||||
if line =~# '^\s*--.*[Ii]dris \=2'
|
||||
call s:Setf('idris2') | return
|
||||
set ft=idris2 | return
|
||||
endif
|
||||
endfor
|
||||
for lnum in range(1, min([line("$"), 30]))
|
||||
let line = getline(lnum)
|
||||
if line =~# '^pkgs =.*'
|
||||
call s:Setf('idris') | return
|
||||
set ft=idris | return
|
||||
endif
|
||||
if line =~# '^depends =.*'
|
||||
call s:Setf('idris2') | return
|
||||
set ft=idris2 | return
|
||||
endif
|
||||
if line =~# '^%language \(TypeProviders\|ElabReflection\)'
|
||||
call s:Setf('idris') | return
|
||||
set ft=idris | return
|
||||
endif
|
||||
if line =~# '^%language PostfixProjections'
|
||||
call s:Setf('idris2') | return
|
||||
set ft=idris2 | return
|
||||
endif
|
||||
if line =~# '^%access .*'
|
||||
call s:Setf('idris') | return
|
||||
endif
|
||||
if exists("g:filetype_idr")
|
||||
call s:Setf(g:filetype_idr) | return
|
||||
set ft=idris | return
|
||||
endif
|
||||
endfor
|
||||
call s:Setf('idris2') | return
|
||||
if exists("g:filetype_idr")
|
||||
let &ft = g:filetype_idr | return
|
||||
endif
|
||||
set ft=idris2 | return
|
||||
endfunc
|
||||
|
||||
func! polyglot#DetectLidrFiletype()
|
||||
for lnum in range(1, min([line("$"), 200]))
|
||||
let line = getline(lnum)
|
||||
if line =~# '^>\s*--.*[Ii]dris \=1'
|
||||
call s:Setf('lidris') | return
|
||||
set ft=lidris | return
|
||||
endif
|
||||
endfor
|
||||
call s:Setf('lidris2') | return
|
||||
set ft=lidris2 | return
|
||||
endfunc
|
||||
|
||||
func! polyglot#DetectBasFiletype()
|
||||
for lnum in range(1, min([line("$"), 5]))
|
||||
let line = getline(lnum)
|
||||
if line =~? 'VB_Name\|Begin VB\.\(Form\|MDIForm\|UserControl\)'
|
||||
call s:Setf('vb') | return
|
||||
set ft=vb | return
|
||||
endif
|
||||
endfor
|
||||
call s:Setf('basic') | return
|
||||
set ft=basic | return
|
||||
endfunc
|
||||
|
||||
func! polyglot#DetectPmFiletype()
|
||||
let line = getline(nextnonblank(1))
|
||||
if line =~# 'XPM2'
|
||||
set ft=xpm2 | return
|
||||
endif
|
||||
if line =~# 'XPM'
|
||||
set ft=xpm | return
|
||||
endif
|
||||
for lnum in range(1, min([line("$"), 50]))
|
||||
let line = getline(lnum)
|
||||
if line =~# '^\s*\%(use\s\+v6\(\<\|\>\)\|\(\<\|\>\)module\(\<\|\>\)\|\(\<\|\>\)\%(my\s\+\)\=class\(\<\|\>\)\)'
|
||||
set ft=raku | return
|
||||
endif
|
||||
if line =~# '\(\<\|\>\)use\s\+\%(strict\(\<\|\>\)\|v\=5\.\)'
|
||||
set ft=perl | return
|
||||
endif
|
||||
endfor
|
||||
if exists("g:filetype_pm")
|
||||
let &ft = g:filetype_pm | return
|
||||
endif
|
||||
set ft=perl | return
|
||||
endfunc
|
||||
|
||||
func! polyglot#DetectPlFiletype()
|
||||
let line = getline(nextnonblank(1))
|
||||
if line =~# '^[^#]*:-' || line =~# '^\s*\%(%\|/\*\)' || line =~# '\.\s*$'
|
||||
set ft=prolog | return
|
||||
endif
|
||||
for lnum in range(1, min([line("$"), 50]))
|
||||
let line = getline(lnum)
|
||||
if line =~# '^\s*\%(use\s\+v6\(\<\|\>\)\|\(\<\|\>\)module\(\<\|\>\)\|\(\<\|\>\)\%(my\s\+\)\=class\(\<\|\>\)\)'
|
||||
set ft=raku | return
|
||||
endif
|
||||
if line =~# '\(\<\|\>\)use\s\+\%(strict\(\<\|\>\)\|v\=5\.\)'
|
||||
set ft=perl | return
|
||||
endif
|
||||
endfor
|
||||
if exists("g:filetype_pl")
|
||||
let &ft = g:filetype_pl | return
|
||||
endif
|
||||
set ft=perl | return
|
||||
endfunc
|
||||
|
||||
func! polyglot#DetectTFiletype()
|
||||
for lnum in range(1, min([line("$"), 5]))
|
||||
let line = getline(lnum)
|
||||
if line =~# '^\.'
|
||||
set ft=nroff | return
|
||||
endif
|
||||
endfor
|
||||
for lnum in range(1, min([line("$"), 50]))
|
||||
let line = getline(lnum)
|
||||
if line =~# '^\s*\%(use\s\+v6\(\<\|\>\)\|\(\<\|\>\)module\(\<\|\>\)\|\(\<\|\>\)\%(my\s\+\)\=class\(\<\|\>\)\)'
|
||||
set ft=raku | return
|
||||
endif
|
||||
if line =~# '\(\<\|\>\)use\s\+\%(strict\(\<\|\>\)\|v\=5\.\)'
|
||||
set ft=perl | return
|
||||
endif
|
||||
endfor
|
||||
if exists("g:filetype_t")
|
||||
let &ft = g:filetype_t | return
|
||||
endif
|
||||
set ft=perl | return
|
||||
endfunc
|
||||
|
||||
func! polyglot#DetectTt2Filetype()
|
||||
for lnum in range(1, min([line("$"), 3]))
|
||||
let line = getline(lnum)
|
||||
if line =~? '<\%(!DOCTYPE HTML\|[%?]\|html\)'
|
||||
set ft=tt2html | return
|
||||
endif
|
||||
endfor
|
||||
set ft=tt2 | return
|
||||
endfunc
|
||||
|
||||
func! polyglot#DetectHtmlFiletype()
|
||||
let line = getline(nextnonblank(1))
|
||||
if line =~# '^\(%\|<[%&].*>\)'
|
||||
set ft=mason | return
|
||||
endif
|
||||
for lnum in range(1, min([line("$"), 50]))
|
||||
let line = getline(lnum)
|
||||
if line =~# '{{.*}}\|{%-\=\s*\(end.*\|extends\|block\|macro\|set\|if\|for\|include\|trans\)\(\<\|\>\)'
|
||||
set ft=jinja.html | return
|
||||
endif
|
||||
endfor
|
||||
set ft=html | return
|
||||
endfunc
|
||||
|
||||
" Restore 'cpoptions'
|
||||
|
||||
@@ -109,7 +109,7 @@ function! s:DeleteLines(start, end) abort
|
||||
endfunction
|
||||
|
||||
function! s:RunRustfmt(command, tmpname, from_writepre)
|
||||
mkview!
|
||||
let l:view = winsaveview()
|
||||
|
||||
let l:stderr_tmpname = tempname()
|
||||
call writefile([], l:stderr_tmpname)
|
||||
@@ -215,7 +215,7 @@ function! s:RunRustfmt(command, tmpname, from_writepre)
|
||||
lwindow
|
||||
endif
|
||||
|
||||
silent! loadview
|
||||
call winrestview(l:view)
|
||||
endfunction
|
||||
|
||||
function! rustfmt#FormatRange(line1, line2)
|
||||
|
||||
@@ -38,6 +38,7 @@ let s:globs = {
|
||||
\ 'basic': '*.basic',
|
||||
\ 'blade': '*.blade,*.blade.php',
|
||||
\ 'brewfile': 'Brewfile',
|
||||
\ 'bzl': '*.bzl,BUCK,BUILD,BUILD.bazel,Tiltfile,WORKSPACE',
|
||||
\ 'c': '*.c,*.cats,*.h,*.idc,*.qc',
|
||||
\ 'caddyfile': 'Caddyfile',
|
||||
\ 'carp': '*.carp',
|
||||
@@ -129,6 +130,7 @@ let s:globs = {
|
||||
\ 'mako': '*.mako,*.mao',
|
||||
\ 'markdown': '*.md,*.markdown,*.mdown,*.mdwn,*.mkd,*.mkdn,*.mkdown,*.ronn,*.workbook,contents.lr',
|
||||
\ 'markdown.mdx': '*.mdx',
|
||||
\ 'mason': '*.mason,*.mhtml,*.comp',
|
||||
\ 'meson': 'meson.build,meson_options.txt',
|
||||
\ 'mma': '*.mathematica,*.cdf,*.m,*.ma,*.mt,*.nb,*.nbp,*.wl,*.wlt,*.wls,*.mma',
|
||||
\ 'moon': '*.moon',
|
||||
@@ -151,7 +153,9 @@ let s:globs = {
|
||||
\ 'perl': '*.pl,*.al,*.cgi,*.fcgi,*.perl,*.ph,*.plx,*.pm,*.psgi,*.t,Makefile.PL,Rexfile,ack,cpanfile',
|
||||
\ 'php': '*.php,*.aw,*.ctp,*.fcgi,*.inc,*.php3,*.php4,*.php5,*.phps,*.phpt,Phakefile',
|
||||
\ 'plantuml': '*.puml,*.iuml,*.plantuml,*.uml,*.pu',
|
||||
\ 'pod': '*.pod',
|
||||
\ 'pony': '*.pony',
|
||||
\ 'prolog': '*.pl,*.pro,*.prolog,*.yap',
|
||||
\ 'proto': '*.proto',
|
||||
\ 'ps1': '*.ps1,*.psd1,*.psm1,*.pssc',
|
||||
\ 'ps1xml': '*.ps1xml',
|
||||
@@ -190,6 +194,7 @@ let s:globs = {
|
||||
\ 'sxhkdrc': '*.sxhkdrc,sxhkdrc',
|
||||
\ 'systemd': '*.automount,*.mount,*.path,*.service,*.socket,*.swap,*.target,*.timer',
|
||||
\ 'tablegen': '*.td',
|
||||
\ 'tads': '*.t',
|
||||
\ 'terraform': '*.hcl,*.nomad,*.tf,*.tfvars,*.workflow',
|
||||
\ 'textile': '*.textile',
|
||||
\ 'thrift': '*.thrift',
|
||||
@@ -197,6 +202,8 @@ let s:globs = {
|
||||
\ 'toml': '*.toml,Cargo.lock,Gopkg.lock,poetry.lock,Pipfile',
|
||||
\ 'tptp': '*.p,*.tptp,*.ax',
|
||||
\ 'trasys': '*.inp',
|
||||
\ 'tt2': '*.tt2',
|
||||
\ 'tt2html': '*.tt2',
|
||||
\ 'typescript': '*.ts',
|
||||
\ 'typescriptreact': '*.tsx',
|
||||
\ 'unison': '*.u,*.uu',
|
||||
@@ -211,6 +218,7 @@ let s:globs = {
|
||||
\ 'xdc': '*.xdc',
|
||||
\ 'xml': '*.xml,*.adml,*.admx,*.ant,*.axml,*.builds,*.ccproj,*.ccxml,*.clixml,*.cproject,*.cscfg,*.csdef,*.csl,*.csproj,*.ct,*.depproj,*.dita,*.ditamap,*.ditaval,*.dll.config,*.dotsettings,*.filters,*.fsproj,*.fxml,*.glade,*.gml,*.gmx,*.grxml,*.gst,*.iml,*.ivy,*.jelly,*.jsproj,*.kml,*.launch,*.mdpolicy,*.mjml,*.mm,*.mod,*.mxml,*.natvis,*.ncl,*.ndproj,*.nproj,*.nuspec,*.odd,*.osm,*.pkgproj,*.pluginspec,*.proj,*.props,*.ps1xml,*.psc1,*.pt,*.rdf,*.resx,*.rss,*.sch,*.scxml,*.sfproj,*.shproj,*.srdf,*.storyboard,*.sublime-snippet,*.targets,*.tml,*.ui,*.urdf,*.ux,*.vbproj,*.vcxproj,*.vsixmanifest,*.vssettings,*.vstemplate,*.vxml,*.wixproj,*.workflow,*.wsdl,*.wsf,*.wxi,*.wxl,*.wxs,*.x3d,*.xacro,*.xaml,*.xib,*.xlf,*.xliff,*.xmi,*.xml.dist,*.xproj,*.xsd,*.xspec,*.xul,*.zcml,*.cdxml,App.config,NuGet.config,Settings.StyleCop,Web.Debug.config,Web.Release.config,Web.config,packages.config',
|
||||
\ 'xml.twig': '*.xml.twig',
|
||||
\ 'xs': '*.xs',
|
||||
\ 'xsl': '*.xslt,*.xsl',
|
||||
\ 'yaml': '*.yml,*.mir,*.reek,*.rviz,*.sublime-syntax,*.syntax,*.yaml,*.yaml-tmlanguage,*.yaml.sed,*.yml.mysql,glide.lock,yarn.lock,fish_history,fish_read_history',
|
||||
\ 'yaml.ansible': 'playbook.y{a,}ml,site.y{a,}ml,main.y{a,}ml,local.y{a,}ml,requirements.y{a,}ml,tasks.*.y{a,}ml,roles.*.y{a,}ml,handlers.*.y{a,}ml',
|
||||
|
||||
@@ -68,6 +68,7 @@ function! terraform#commands(ArgLead, CmdLine, CursorPos) abort
|
||||
\ 'version',
|
||||
\ 'workspace',
|
||||
\ '0.12upgrade',
|
||||
\ '0.13upgrade',
|
||||
\ 'debug',
|
||||
\ 'force-unlock',
|
||||
\ 'push',
|
||||
|
||||
@@ -426,10 +426,6 @@ CTRL-t
|
||||
|
||||
If [!] is not given the first error is jumped to.
|
||||
|
||||
If using neovim `:GoTestFunc` will run in a new terminal or run
|
||||
asynchronously in the background according to |'g:go_term_enabled'|. You
|
||||
can set the mode of the new terminal with |'g:go_term_mode'|.
|
||||
|
||||
*:GoTestCompile*
|
||||
:GoTestCompile[!] [expand]
|
||||
|
||||
@@ -441,10 +437,6 @@ CTRL-t
|
||||
|
||||
If [!] is not given the first error is jumped to.
|
||||
|
||||
If using neovim `:GoTestCompile` will run in a new terminal or run
|
||||
asynchronously in the background according to |'g:go_term_enabled'|. You
|
||||
can set the mode of the new terminal with |'g:go_term_mode'|.
|
||||
|
||||
*:GoCoverage*
|
||||
:GoCoverage[!] [options]
|
||||
|
||||
@@ -1483,6 +1475,14 @@ accuracy or `godef` for its performance. Valid options are `godef`, `gopls`,
|
||||
and `guru`.
|
||||
>
|
||||
let g:go_def_mode = 'gopls'
|
||||
<
|
||||
*'g:go_fillstruct_mode'*
|
||||
|
||||
Use this option to define the command to be used for |:GoFillStruct|. By
|
||||
default `fillstruct` is used. Valid values are `fillstruct` and `gopls`. By
|
||||
default it is `fillstruct`.
|
||||
>
|
||||
let g:go_fillstruct_mode = 'fillstruct'
|
||||
<
|
||||
*'g:go_referrers_mode'*
|
||||
|
||||
@@ -1789,25 +1789,34 @@ same.
|
||||
|
||||
*'g:go_gopls_enabled'*
|
||||
|
||||
Specifies whether `gopls` can be used by vim-go. By default gopls is enabled.
|
||||
When gopls is disabled completion will not work and other configuration
|
||||
Specifies whether `gopls` can be used by vim-go.
|
||||
|
||||
Completion will not work when gopls is disabled and other configuration
|
||||
options may also need to be adjusted.
|
||||
|
||||
By default gopls is enabled.
|
||||
|
||||
>
|
||||
let g:go_gopls_enabled = 1
|
||||
<
|
||||
|
||||
*'g:go_gopls_options'*
|
||||
|
||||
The commandline arguments to pass to gopls. By default, it's `-remote=auto`.
|
||||
The commandline arguments to pass to gopls.
|
||||
|
||||
By default, it is `['-remote=auto']`.
|
||||
>
|
||||
let g:go_gopls_options = []
|
||||
let g:go_gopls_options = ['-remote=auto']
|
||||
<
|
||||
|
||||
*'g:go_gopls_analyses'*
|
||||
|
||||
The analyses settings for `gopls`. By default, it's `v:null`. Valid map values
|
||||
are `v:true` and `v:false`.
|
||||
The analyses settings for `gopls`.
|
||||
|
||||
The Expected value is either `v:null` or a dictionary. The dictionary will be
|
||||
provided to `gopls` via json-rpc, so dictionary values need to be of the
|
||||
appropriate type for Vim to convert to JSON (e.g. truthy dictionary values
|
||||
should be `v:true` or `v:false`). By default, it is `v:null`.
|
||||
>
|
||||
let g:go_gopls_analyses = v:null
|
||||
<
|
||||
@@ -1815,34 +1824,36 @@ are `v:true` and `v:false`.
|
||||
*'g:go_gopls_complete_unimported'*
|
||||
|
||||
Specifies whether `gopls` should include suggestions from unimported packages.
|
||||
When it is `v:null`, `gopls`' default will be used. By default it is
|
||||
`v:null`.
|
||||
|
||||
When it is `v:null`, `gopls`' default will be used. By default it is `v:null`.
|
||||
>
|
||||
let g:go_gopls_complete_unimported = v:null
|
||||
<
|
||||
|
||||
*'g:go_gopls_deep_completion'*
|
||||
|
||||
Specifies whether `gopls` should use deep completion. When it is `v:null`,
|
||||
`gopls`' default will be used. By default it is `v:null`.
|
||||
Specifies whether `gopls` should use deep completion.
|
||||
|
||||
When it is `v:null`, `gopls`' default will be used. By default it is `v:null`.
|
||||
>
|
||||
let g:go_gopls_deep_completion = v:null
|
||||
<
|
||||
|
||||
*'g:go_gopls_matcher'*
|
||||
|
||||
Specifies how `gopls` should match for completions. Valid values are `v:null`,
|
||||
`fuzzy`, and `caseSensitive`. When it is `v:null`, `gopls`' default will be
|
||||
used. By default it is `v:null`.
|
||||
Specifies how `gopls` should match for completions.
|
||||
|
||||
Valid values are `v:null`, `fuzzy`, and `caseSensitive`. When it is `v:null`,
|
||||
`gopls`' default will be used. By default it is `v:null`.
|
||||
>
|
||||
let g:go_gopls_matcher = v:null
|
||||
<
|
||||
|
||||
*'g:go_gopls_staticcheck'*
|
||||
|
||||
Specifies whether `gopls` should run staticcheck checks. When it is `v:null`,
|
||||
`gopls`' default will be used. By default it is `v:null`.
|
||||
Specifies whether `gopls` should run staticcheck checks.
|
||||
|
||||
When it is `v:null`, `gopls`' default will be used. By default it is `v:null`.
|
||||
>
|
||||
let g:go_gopls_staticcheck = v:null
|
||||
<
|
||||
@@ -1852,8 +1863,9 @@ Specifies whether `gopls` should run staticcheck checks. When it is `v:null`,
|
||||
Specifies whether `gopls` can provide placeholders for function parameters and
|
||||
struct fields. When set, completion items will be treated as anonymous
|
||||
snippets if UltiSnips is installed and configured to be used as
|
||||
|'g:go_snippet_engine'|. When it is `v:null`, `gopls`' default will be used.
|
||||
By default it is `v:null`.
|
||||
|'g:go_snippet_engine'|.
|
||||
|
||||
When it is `v:null`, `gopls`' default will be used. By default it is `v:null`.
|
||||
>
|
||||
let g:go_gopls_use_placeholders = v:null
|
||||
<
|
||||
@@ -1861,8 +1873,9 @@ By default it is `v:null`.
|
||||
*'g:go_gopls_temp_modfile'*
|
||||
|
||||
Specifies whether `gopls` should use a temp modfile and suggest edits rather
|
||||
than modifying the ambient go.mod file. When it is `v:null`, `gopls`' default
|
||||
will be used. By default it is `v:null`.
|
||||
than modifying the ambient go.mod file.
|
||||
|
||||
When it is `v:null`, `gopls`' default will be used. By default it is `v:null`.
|
||||
>
|
||||
let g:go_gopls_temp_modfile = v:null
|
||||
<
|
||||
@@ -1870,16 +1883,18 @@ will be used. By default it is `v:null`.
|
||||
*'g:go_gopls_local'*
|
||||
|
||||
Specifies the prefix for imports that `gopls` should consider group
|
||||
separately. When it is `v:null`, `gopls`' default will be used. By default it
|
||||
is `v:null`.
|
||||
separately.
|
||||
|
||||
When it is `v:null`, `gopls`' default will be used. By default it is `v:null`.
|
||||
>
|
||||
let g:go_gopls_local = v:null
|
||||
<
|
||||
|
||||
*'g:go_gopls_gofumpt'*
|
||||
|
||||
Specifies whether `gopls` should use `gofumpt` for formatting. When it is
|
||||
`v:null`, `gopls`' default will be used. By default it is `v:null`.
|
||||
Specifies whether `gopls` should use `gofumpt` for formatting.
|
||||
|
||||
When it is `v:null`, `gopls`' default will be used. By default it is `v:null`.
|
||||
>
|
||||
let g:go_gopls_gofumpt = v:null
|
||||
<
|
||||
@@ -1887,10 +1902,12 @@ Specifies whether `gopls` should use `gofumpt` for formatting. When it is
|
||||
*'g:go_gopls_settings'*
|
||||
|
||||
Specifies `gopls` workspace settings for `gopls` that are not yet officially
|
||||
supported by vim-go. Any value in the dictionary will be overridden by values
|
||||
provided in the specific options supported by vim-go (e.g.
|
||||
g:go_gopls_staticcheck) or settings statically configured by vim-go to ensure
|
||||
expected behavior. By default it is `v:null`.
|
||||
supported by vim-go.
|
||||
|
||||
Any value in the dictionary will be overridden by values provided in the
|
||||
specific options supported by vim-go (e.g. g:go_gopls_staticcheck) or
|
||||
settings statically configured by vim-go to ensure expected behavior. By
|
||||
default it is `v:null`.
|
||||
>
|
||||
let g:go_gopls_settings = v:null
|
||||
<
|
||||
@@ -1898,7 +1915,9 @@ expected behavior. By default it is `v:null`.
|
||||
|
||||
Specifies whether `gopls` diagnostics are enabled. Only the diagnostics for
|
||||
the current buffer will be processed when it is not set; all others will be
|
||||
ignored. By default it is disabled.
|
||||
ignored.
|
||||
|
||||
By default it is disabled.
|
||||
>
|
||||
let g:go_diagnostics_enabled = 0
|
||||
<
|
||||
@@ -2323,6 +2342,14 @@ The rest of the commands and mappings become available after executing
|
||||
Use `-test.flag` to pass flags to `go test` when debugging a test; for
|
||||
example `-test.v` or `-test.run TestFoo`
|
||||
|
||||
*:GoDebugTestFunc*
|
||||
:GoDebugTestFunc [expand]
|
||||
|
||||
Behaves the same as |:GoDebugTest| and implicitly adds `-test.run` to run
|
||||
the nearest test or example function (i.e the nearest function declaration
|
||||
that matches `func Test` or `func Example`) at or previous to the cursor.
|
||||
Search will not wrap around when at the top of the file.
|
||||
|
||||
*:GoDebugRestart*
|
||||
:GoDebugRestart
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
98
ftplugin/bzl.vim
Normal file
98
ftplugin/bzl.vim
Normal file
@@ -0,0 +1,98 @@
|
||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'bzl') == -1
|
||||
|
||||
" Vim filetype plugin file
|
||||
" Language: Bazel (http://bazel.io)
|
||||
" Maintainer: David Barnett (https://github.com/google/vim-ft-bzl)
|
||||
" Last Change: 2015 Aug 11
|
||||
|
||||
""
|
||||
" @section Introduction, intro
|
||||
" Core settings for the bzl filetype, used for BUILD and *.bzl files for the
|
||||
" Bazel build system (http://bazel.io/).
|
||||
|
||||
if exists('b:did_ftplugin')
|
||||
finish
|
||||
endif
|
||||
|
||||
|
||||
" Vim 7.4.051 has opinionated settings in ftplugin/python.vim that try to force
|
||||
" PEP8 conventions on every python file, but these conflict with Google's
|
||||
" indentation guidelines. As a workaround, we explicitly source the system
|
||||
" ftplugin, but save indentation settings beforehand and restore them after.
|
||||
let s:save_expandtab = &l:expandtab
|
||||
let s:save_shiftwidth = &l:shiftwidth
|
||||
let s:save_softtabstop = &l:softtabstop
|
||||
let s:save_tabstop = &l:tabstop
|
||||
|
||||
" NOTE: Vim versions before 7.3.511 had a ftplugin/python.vim that was broken
|
||||
" for compatible mode.
|
||||
let s:save_cpo = &cpo
|
||||
set cpo&vim
|
||||
|
||||
" Load base python ftplugin (also defines b:did_ftplugin).
|
||||
source $VIMRUNTIME/ftplugin/python.vim
|
||||
|
||||
" NOTE: Vim versions before 7.4.104 and later set this in ftplugin/python.vim.
|
||||
setlocal comments=b:#,fb:-
|
||||
|
||||
" Restore pre-existing indentation settings.
|
||||
let &l:expandtab = s:save_expandtab
|
||||
let &l:shiftwidth = s:save_shiftwidth
|
||||
let &l:softtabstop = s:save_softtabstop
|
||||
let &l:tabstop = s:save_tabstop
|
||||
|
||||
setlocal formatoptions-=t
|
||||
|
||||
" Make gf work with imports in BUILD files.
|
||||
setlocal includeexpr=substitute(v:fname,'//','','')
|
||||
|
||||
" Enable syntax-based folding, if specified.
|
||||
if get(g:, 'ft_bzl_fold', 0)
|
||||
setlocal foldmethod=syntax
|
||||
setlocal foldtext=BzlFoldText()
|
||||
endif
|
||||
|
||||
if exists('*BzlFoldText')
|
||||
finish
|
||||
endif
|
||||
|
||||
function BzlFoldText() abort
|
||||
let l:start_num = nextnonblank(v:foldstart)
|
||||
let l:end_num = prevnonblank(v:foldend)
|
||||
|
||||
if l:end_num <= l:start_num + 1
|
||||
" If the fold is empty, don't print anything for the contents.
|
||||
let l:content = ''
|
||||
else
|
||||
" Otherwise look for something matching the content regex.
|
||||
" And if nothing matches, print an ellipsis.
|
||||
let l:content = '...'
|
||||
for l:line in getline(l:start_num + 1, l:end_num - 1)
|
||||
let l:content_match = matchstr(l:line, '\m\C^\s*name = \zs.*\ze,$')
|
||||
if !empty(l:content_match)
|
||||
let l:content = l:content_match
|
||||
break
|
||||
endif
|
||||
endfor
|
||||
endif
|
||||
|
||||
" Enclose content with start and end
|
||||
let l:start_text = getline(l:start_num)
|
||||
let l:end_text = substitute(getline(l:end_num), '^\s*', '', '')
|
||||
let l:text = l:start_text . ' ' . l:content . ' ' . l:end_text
|
||||
|
||||
" Compute the available width for the displayed text.
|
||||
let l:width = winwidth(0) - &foldcolumn - (&number ? &numberwidth : 0)
|
||||
let l:lines_folded = ' ' . string(1 + v:foldend - v:foldstart) . ' lines'
|
||||
|
||||
" Expand tabs, truncate, pad, and concatenate
|
||||
let l:text = substitute(l:text, '\t', repeat(' ', &tabstop), 'g')
|
||||
let l:text = strpart(l:text, 0, l:width - len(l:lines_folded))
|
||||
let l:padding = repeat(' ', l:width - len(l:lines_folded) - len(l:text))
|
||||
return l:text . l:padding . l:lines_folded
|
||||
endfunction
|
||||
|
||||
let &cpo = s:save_cpo
|
||||
unlet s:save_cpo
|
||||
|
||||
endif
|
||||
24
ftplugin/prolog.vim
Normal file
24
ftplugin/prolog.vim
Normal file
@@ -0,0 +1,24 @@
|
||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'prolog') == -1
|
||||
|
||||
" Vim filetype plugin file
|
||||
" Language: Prolog
|
||||
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
|
||||
" Latest Revision: 2008-07-09
|
||||
|
||||
if exists("b:did_ftplugin")
|
||||
finish
|
||||
endif
|
||||
let b:did_ftplugin = 1
|
||||
|
||||
let s:cpo_save = &cpo
|
||||
set cpo&vim
|
||||
|
||||
let b:undo_ftplugin = "setl com< cms< fo<"
|
||||
|
||||
setlocal comments=s1:/*,mb:*,ex:*/,:% commentstring=%\ %s
|
||||
setlocal formatoptions-=t formatoptions+=croql
|
||||
|
||||
let &cpo = s:cpo_save
|
||||
unlet s:cpo_save
|
||||
|
||||
endif
|
||||
@@ -21,24 +21,31 @@ setlocal formatoptions-=t formatoptions+=croql
|
||||
setlocal suffixesadd=.zig,.zir
|
||||
setlocal makeprg=zig\ build
|
||||
|
||||
if has("comments")
|
||||
if has('comments')
|
||||
setlocal comments=:///,://!,://,:\\\\
|
||||
setlocal commentstring=//\ %s
|
||||
endif
|
||||
|
||||
if has('find_in_path')
|
||||
let &l:includeexpr='substitute(v:fname, "^([^.])$", "\1.zig", "")'
|
||||
let &l:include='\v(\@import>|\@cInclude>|^\s*\#\s*include)'
|
||||
let &l:define='\v(<fn>|<const>|<var>|^\s*\#\s*define)'
|
||||
let &l:includeexpr='substitute(v:fname, "^([^.])$", "\1.zig", "")'
|
||||
let &l:include='\v(\@import>|\@cInclude>|^\s*\#\s*include)'
|
||||
endif
|
||||
|
||||
if has('eval')
|
||||
execute 'setlocal path+=' . json_decode(system('zig env'))['std_dir']
|
||||
let &l:define='\v(<fn>|<const>|<var>|^\s*\#\s*define)'
|
||||
|
||||
if exists("*json_decode") && executable('zig')
|
||||
silent let s:env = system('zig env')
|
||||
if v:shell_error == 0
|
||||
let &l:path=json_decode(s:env)['std_dir'] . ',' . &l:path
|
||||
endif
|
||||
unlet! s:env
|
||||
endif
|
||||
|
||||
let b:undo_ftplugin = "setl et< ts< sts< sw< fo< sua< mp< com< cms<"
|
||||
let b:undo_ftplugin =
|
||||
\ 'setl et< ts< sts< sw< fo< sua< mp< com< cms< inex< inc< pa<'
|
||||
|
||||
let &cpo = s:cpo_orig
|
||||
unlet s:cpo_orig
|
||||
" vim: tabstop=8 shiftwidth=4 softtabstop=4 expandtab
|
||||
|
||||
endif
|
||||
|
||||
@@ -11,12 +11,12 @@ rules:
|
||||
---
|
||||
extensions: [asa]
|
||||
rules:
|
||||
- override: "g:filetype_asa"
|
||||
- override: true
|
||||
- filetype: aspvbs
|
||||
---
|
||||
extensions: [asp]
|
||||
rules:
|
||||
- override: "g:filetype_asp"
|
||||
- override: true
|
||||
- lines: 3
|
||||
pattern: 'perlscript'
|
||||
ignore_case: true
|
||||
@@ -54,7 +54,7 @@ rules:
|
||||
filetype: murphi
|
||||
- if_set: "saw_comment"
|
||||
filetype: objc
|
||||
- override: "g:filetype_m"
|
||||
- override: true
|
||||
- filetype: octave
|
||||
---
|
||||
extensions: [fs]
|
||||
@@ -67,7 +67,7 @@ rules:
|
||||
filetype: fsharp
|
||||
- pattern: '\s*(#version|precision|uniform|varying|vec[234])'
|
||||
filetype: glsl
|
||||
- override: "g:filetype_fs"
|
||||
- override: true
|
||||
- filetype: forth
|
||||
---
|
||||
extensions: [re]
|
||||
@@ -98,7 +98,7 @@ rules:
|
||||
filetype: idris2
|
||||
- pattern: '^%access .*'
|
||||
filetype: idris
|
||||
- override: 'g:filetype_idr'
|
||||
- override: true
|
||||
- filetype: idris2
|
||||
---
|
||||
extensions: [lidr]
|
||||
@@ -115,3 +115,73 @@ rules:
|
||||
filetype: vb
|
||||
ignore_case: true
|
||||
- filetype: basic
|
||||
---
|
||||
extensions: [pm]
|
||||
rules:
|
||||
- lines: 1
|
||||
rules:
|
||||
- pattern: 'XPM2'
|
||||
filetype: xpm2
|
||||
- pattern: 'XPM'
|
||||
filetype: xpm
|
||||
- lines: 50
|
||||
rules:
|
||||
- pattern: '^\s*(?:use\s+v6\b|\bmodule\b|\b(?:my\s+)?class\b)'
|
||||
filetype: raku
|
||||
- pattern: '\buse\s+(?:strict\b|v?5\.)'
|
||||
filetype: perl
|
||||
- override: true
|
||||
- filetype: perl
|
||||
---
|
||||
extensions: [pl]
|
||||
rules:
|
||||
- lines: 1
|
||||
or:
|
||||
- pattern: '^[^#]*:-'
|
||||
- pattern: '^\s*(?:%|/\*)'
|
||||
- pattern: '\.\s*$'
|
||||
filetype: prolog
|
||||
- lines: 50
|
||||
rules:
|
||||
- pattern: '^\s*(?:use\s+v6\b|\bmodule\b|\b(?:my\s+)?class\b)'
|
||||
filetype: raku
|
||||
- pattern: '\buse\s+(?:strict\b|v?5\.)'
|
||||
filetype: perl
|
||||
- override: true
|
||||
- filetype: perl
|
||||
---
|
||||
extensions: [t]
|
||||
rules:
|
||||
- lines: 5
|
||||
pattern: '^\.'
|
||||
filetype: nroff
|
||||
- lines: 50
|
||||
rules:
|
||||
- pattern: '^\s*(?:use\s+v6\b|\bmodule\b|\b(?:my\s+)?class\b)'
|
||||
filetype: raku
|
||||
- pattern: '\buse\s+(?:strict\b|v?5\.)'
|
||||
filetype: perl
|
||||
## I haven't found turing syntax for vim...
|
||||
# - pattern: '^\s*%[ \t]+|^\s*var\s+\w+(\s*:\s*\w+)?\s*:=\s*\w+'
|
||||
# filetype: turing
|
||||
- override: true
|
||||
- filetype: perl
|
||||
---
|
||||
extensions: [tt2]
|
||||
rules:
|
||||
- lines: 3
|
||||
pattern: '<(?:!DOCTYPE HTML|[%?]|html)'
|
||||
ignore_case: true
|
||||
filetype: tt2html
|
||||
- filetype: tt2
|
||||
---
|
||||
extensions: [html]
|
||||
rules:
|
||||
- lines: 1
|
||||
pattern: '^(%|<[%&].*>)'
|
||||
filetype: mason
|
||||
- lines: 50
|
||||
pattern: '{{.*}}|{%-?\s*(end.*|extends|block|macro|set|if|for|include|trans)\b'
|
||||
filetype: jinja.html
|
||||
- filetype: html
|
||||
|
||||
|
||||
98
indent/bzl.vim
Normal file
98
indent/bzl.vim
Normal file
@@ -0,0 +1,98 @@
|
||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'bzl') == -1
|
||||
|
||||
" Vim indent file
|
||||
" Language: Bazel (http://bazel.io)
|
||||
" Maintainer: David Barnett (https://github.com/google/vim-ft-bzl)
|
||||
" Last Change: 2017 Jun 13
|
||||
|
||||
if exists('b:did_indent')
|
||||
finish
|
||||
endif
|
||||
|
||||
" Load base python indent.
|
||||
if !exists('*GetPythonIndent')
|
||||
runtime! indent/python.vim
|
||||
endif
|
||||
|
||||
let b:did_indent = 1
|
||||
|
||||
" Only enable bzl google indent if python google indent is enabled.
|
||||
if !get(g:, 'no_google_python_indent')
|
||||
setlocal indentexpr=GetBzlIndent(v:lnum)
|
||||
endif
|
||||
|
||||
if exists('*GetBzlIndent')
|
||||
finish
|
||||
endif
|
||||
|
||||
let s:save_cpo = &cpo
|
||||
set cpo-=C
|
||||
|
||||
" Maximum number of lines to look backwards.
|
||||
let s:maxoff = 50
|
||||
|
||||
""
|
||||
" Determine the correct indent level given an {lnum} in the current buffer.
|
||||
function GetBzlIndent(lnum) abort
|
||||
let l:use_recursive_indent = !get(g:, 'no_google_python_recursive_indent')
|
||||
if l:use_recursive_indent
|
||||
" Backup and override indent setting variables.
|
||||
if exists('g:pyindent_nested_paren')
|
||||
let l:pyindent_nested_paren = g:pyindent_nested_paren
|
||||
endif
|
||||
if exists('g:pyindent_open_paren')
|
||||
let l:pyindent_open_paren = g:pyindent_open_paren
|
||||
endif
|
||||
let g:pyindent_nested_paren = 'shiftwidth() * 2'
|
||||
let g:pyindent_open_paren = 'shiftwidth() * 2'
|
||||
endif
|
||||
|
||||
let l:indent = -1
|
||||
|
||||
" Indent inside parens.
|
||||
" Align with the open paren unless it is at the end of the line.
|
||||
" E.g.
|
||||
" open_paren_not_at_EOL(100,
|
||||
" (200,
|
||||
" 300),
|
||||
" 400)
|
||||
" open_paren_at_EOL(
|
||||
" 100, 200, 300, 400)
|
||||
call cursor(a:lnum, 1)
|
||||
let [l:par_line, l:par_col] = searchpairpos('(\|{\|\[', '', ')\|}\|\]', 'bW',
|
||||
\ "line('.') < " . (a:lnum - s:maxoff) . " ? dummy :" .
|
||||
\ " synIDattr(synID(line('.'), col('.'), 1), 'name')" .
|
||||
\ " =~ '\\(Comment\\|String\\)$'")
|
||||
if l:par_line > 0
|
||||
call cursor(l:par_line, 1)
|
||||
if l:par_col != col('$') - 1
|
||||
let l:indent = l:par_col
|
||||
endif
|
||||
endif
|
||||
|
||||
" Delegate the rest to the original function.
|
||||
if l:indent == -1
|
||||
let l:indent = GetPythonIndent(a:lnum)
|
||||
endif
|
||||
|
||||
if l:use_recursive_indent
|
||||
" Restore global variables.
|
||||
if exists('l:pyindent_nested_paren')
|
||||
let g:pyindent_nested_paren = l:pyindent_nested_paren
|
||||
else
|
||||
unlet g:pyindent_nested_paren
|
||||
endif
|
||||
if exists('l:pyindent_open_paren')
|
||||
let g:pyindent_open_paren = l:pyindent_open_paren
|
||||
else
|
||||
unlet g:pyindent_open_paren
|
||||
endif
|
||||
endif
|
||||
|
||||
return l:indent
|
||||
endfunction
|
||||
|
||||
let &cpo = s:save_cpo
|
||||
unlet s:save_cpo
|
||||
|
||||
endif
|
||||
71
indent/prolog.vim
Normal file
71
indent/prolog.vim
Normal file
@@ -0,0 +1,71 @@
|
||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'prolog') == -1
|
||||
|
||||
" vim: set sw=4 sts=4:
|
||||
" Maintainer : Gergely Kontra <kgergely@mcl.hu>
|
||||
" Revised on : 2002.02.18. 23:34:05
|
||||
" Language : Prolog
|
||||
" Last change by: Takuya Fujiwara, 2018 Sep 23
|
||||
|
||||
" TODO:
|
||||
" checking with respect to syntax highlighting
|
||||
" ignoring multiline comments
|
||||
" detecting multiline strings
|
||||
|
||||
" Only load this indent file when no other was loaded.
|
||||
if exists("b:did_indent")
|
||||
finish
|
||||
endif
|
||||
|
||||
let b:did_indent = 1
|
||||
|
||||
setlocal indentexpr=GetPrologIndent()
|
||||
setlocal indentkeys-=:,0#
|
||||
setlocal indentkeys+=0%,-,0;,>,0)
|
||||
|
||||
" Only define the function once.
|
||||
"if exists("*GetPrologIndent")
|
||||
" finish
|
||||
"endif
|
||||
|
||||
function! GetPrologIndent()
|
||||
" Find a non-blank line above the current line.
|
||||
let pnum = prevnonblank(v:lnum - 1)
|
||||
" Hit the start of the file, use zero indent.
|
||||
if pnum == 0
|
||||
return 0
|
||||
endif
|
||||
let line = getline(v:lnum)
|
||||
let pline = getline(pnum)
|
||||
|
||||
let ind = indent(pnum)
|
||||
" Previous line was comment -> use previous line's indent
|
||||
if pline =~ '^\s*%'
|
||||
return ind
|
||||
endif
|
||||
" Previous line was the start of block comment -> +1 after '/*' comment
|
||||
if pline =~ '^\s*/\*'
|
||||
return ind + 1
|
||||
endif
|
||||
" Previous line was the end of block comment -> -1 after '*/' comment
|
||||
if pline =~ '^\s*\*/'
|
||||
return ind - 1
|
||||
endif
|
||||
" Check for clause head on previous line
|
||||
if pline =~ '\%(:-\|-->\)\s*\(%.*\)\?$'
|
||||
let ind = ind + shiftwidth()
|
||||
" Check for end of clause on previous line
|
||||
elseif pline =~ '\.\s*\(%.*\)\?$'
|
||||
let ind = ind - shiftwidth()
|
||||
endif
|
||||
" Check for opening conditional on previous line
|
||||
if pline =~ '^\s*\([(;]\|->\)'
|
||||
let ind = ind + shiftwidth()
|
||||
endif
|
||||
" Check for closing an unclosed paren, or middle ; or ->
|
||||
if line =~ '^\s*\([);]\|->\)'
|
||||
let ind = ind - shiftwidth()
|
||||
endif
|
||||
return ind
|
||||
endfunction
|
||||
|
||||
endif
|
||||
@@ -10,11 +10,11 @@ let s:cpo_save = &cpoptions
|
||||
set cpoptions&vim
|
||||
|
||||
setlocal nolisp
|
||||
setlocal autoindent shiftwidth=2 tabstop=2 softtabstop=2
|
||||
setlocal autoindent shiftwidth=2 tabstop=2 softtabstop=2 expandtab
|
||||
setlocal indentexpr=TerraformIndent(v:lnum)
|
||||
setlocal indentkeys+=<:>,0=},0=)
|
||||
let b:undo_indent = 'setlocal lisp< autoindent< shiftwidth< tabstop< softtabstop<'
|
||||
\ . ' indentexpr< indentkeys<'
|
||||
\ . ' expandtab< indentexpr< indentkeys<'
|
||||
|
||||
let &cpoptions = s:cpo_save
|
||||
unlet s:cpo_save
|
||||
|
||||
@@ -345,6 +345,11 @@ filetypes:
|
||||
filenames:
|
||||
- Caddyfile
|
||||
---
|
||||
name: cpp-modern
|
||||
remote: bfrg/vim-cpp-modern
|
||||
after: c/c++
|
||||
filetypes: []
|
||||
---
|
||||
name: carp
|
||||
remote: hellerve/carp-vim
|
||||
filetypes:
|
||||
@@ -1175,6 +1180,23 @@ remote: vim-perl/vim-perl
|
||||
filetypes:
|
||||
- name: perl
|
||||
linguist: Perl
|
||||
- name: pod
|
||||
extensions:
|
||||
- pod
|
||||
- name: mason
|
||||
extensions:
|
||||
- mason
|
||||
- mhtml
|
||||
- comp
|
||||
- name: tt2
|
||||
extensions:
|
||||
- tt2
|
||||
- name: tt2html
|
||||
extensions:
|
||||
- tt2
|
||||
- name: xs
|
||||
extensions:
|
||||
- xs
|
||||
---
|
||||
name: pgsql
|
||||
remote: lifepillar/pgsql.vim
|
||||
@@ -1834,3 +1856,25 @@ remote: Tetralux/odin.vim
|
||||
filetypes:
|
||||
- name: odin
|
||||
linguist: Odin
|
||||
---
|
||||
name: bzl
|
||||
remote: vim/vim:runtime
|
||||
glob: '**/bzl.vim'
|
||||
filetypes:
|
||||
- name: bzl
|
||||
linguist: Starlark
|
||||
---
|
||||
name: prolog
|
||||
remote: vim/vim:runtime
|
||||
glob: '**/prolog.vim'
|
||||
filetypes:
|
||||
- name: prolog
|
||||
linguist: Prolog
|
||||
---
|
||||
name: tads
|
||||
remote: vim/vim:runtime
|
||||
glob: '**/tads.vim'
|
||||
filetypes:
|
||||
- name: tads
|
||||
extensions:
|
||||
- t
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
source "https://rubygems.org"
|
||||
|
||||
gem "jasherai-oniguruma"
|
||||
@@ -30,7 +30,7 @@ def load_data()
|
||||
deps = Hash.new { |h, k| h[k] = [] }
|
||||
|
||||
each_node = lambda {|&b| packages.keys.each(&b) }
|
||||
each_child = lambda {|n, &b| [packages[n].fetch("after", [])].flatten.each(&b) }
|
||||
each_child = lambda {|n, &b| [packages[n]["after"] || []].flatten.each(&b) }
|
||||
|
||||
languages = load_languages
|
||||
|
||||
@@ -257,13 +257,15 @@ def rules_to_code(rules)
|
||||
end
|
||||
|
||||
output << rule_to_code(rules)
|
||||
|
||||
output
|
||||
end
|
||||
|
||||
def rule_to_code(rule)
|
||||
if rule.has_key?("lines")
|
||||
if rule["lines"] == 1
|
||||
return <<~EOS
|
||||
let line = getline(1)
|
||||
let line = getline(nextnonblank(1))
|
||||
|
||||
#{indent(rule_to_code(except(rule, "lines")), 0)}
|
||||
EOS
|
||||
@@ -287,7 +289,9 @@ def rule_to_code(rule)
|
||||
end
|
||||
|
||||
if rule.has_key?("rules")
|
||||
return rule["rules"].map { |r| indent(rule_to_code(r), 0) }.join("\n")
|
||||
return rule["rules"].map do |r|
|
||||
indent(rule_to_code({ "extensions" => rule["extensions"] }.merge(r)), 0)
|
||||
end.join("\n")
|
||||
end
|
||||
|
||||
if rule.has_key?("if_set")
|
||||
@@ -313,20 +317,29 @@ def rule_to_code(rule)
|
||||
EOS
|
||||
end
|
||||
|
||||
if (rule.keys - ["filetype", "override", "set"]).size > 0
|
||||
if (rule.keys - ["filetype", "override", "set", "extensions"]).size > 0
|
||||
raise "Unknown rule: #{JSON.generate(rule)}"
|
||||
end
|
||||
|
||||
if rule.has_key?("override")
|
||||
variable = "g:filetype_#{rule["extensions"].first}"
|
||||
return <<~EOS
|
||||
if exists("#{rule["override"]}")
|
||||
call s:Setf(#{rule["override"]}) | return
|
||||
if exists("#{variable}")
|
||||
let &ft = #{variable} | return
|
||||
endif
|
||||
EOS
|
||||
end
|
||||
|
||||
if rule.has_key?("filetype")
|
||||
return "call s:Setf('#{rule["filetype"]}') | return"
|
||||
return "set ft=#{rule["filetype"]} | return"
|
||||
end
|
||||
|
||||
if rule.has_key?("filetype")
|
||||
return "set ft=#{rule["filetype"]} | return"
|
||||
end
|
||||
|
||||
if rule.has_key?("extensions")
|
||||
return ""
|
||||
end
|
||||
|
||||
return ""
|
||||
@@ -423,6 +436,7 @@ def generate_ftdetect(packages, heuristics)
|
||||
expected_filetypes = expected_filetypes.select { |e| filetype_names.include?(e["name"]) }
|
||||
|
||||
native_extensions = Set.new(native_filetypes.flat_map { |f| f["extensions"] || [] })
|
||||
native_filenames = Set.new(native_filetypes.flat_map { |f| f["filenames"] || [] })
|
||||
|
||||
for package in packages
|
||||
name = package.fetch("name")
|
||||
@@ -435,6 +449,12 @@ def generate_ftdetect(packages, heuristics)
|
||||
to_disable << "*." + extension
|
||||
end
|
||||
end
|
||||
|
||||
for filename in filetype["filenames"]
|
||||
if native_filenames.include?(filename)
|
||||
to_disable << filename
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if to_disable.size > 0
|
||||
@@ -454,10 +474,10 @@ def generate_ftdetect(packages, heuristics)
|
||||
name = filetype.fetch("name")
|
||||
syntax = filetype["syntax"] ? " | set syntax=#{filetype["syntax"]}" : ""
|
||||
|
||||
set_command = "call s:Setf('#{name}')"
|
||||
set_command = "set ft=#{name}"
|
||||
|
||||
if filetype["syntax"]
|
||||
set_command = "if !did_filetype() | set ft=#{name} syntax=#{filetype["syntax"]} | endif"
|
||||
set_command = "set ft=#{name} syntax=#{filetype["syntax"]}"
|
||||
end
|
||||
|
||||
if filetype["custom_set"]
|
||||
@@ -488,7 +508,7 @@ def generate_ftdetect(packages, heuristics)
|
||||
|
||||
for filename in filenames.sort
|
||||
if filename[0] == "."
|
||||
filename = "{.,}" + filename[1..]
|
||||
filename = "{.,}" + filename[1..-1]
|
||||
end
|
||||
if filename[-1] == "*"
|
||||
autocommands << " au BufNewFile,BufRead #{filename} call s:StarSetf('#{name}')\n"
|
||||
@@ -536,19 +556,11 @@ def generate_ftdetect(packages, heuristics)
|
||||
let s:cpo_save = &cpo
|
||||
set cpo&vim
|
||||
|
||||
" We need it because scripts.vim in vim uses "set ft=" which cannot be
|
||||
" overridden with setf (and we can't use set ft= so our scripts.vim work)
|
||||
func! s:Setf(ft)
|
||||
if &filetype !~# '\<'.a:ft.'\>'
|
||||
let &filetype = a:ft
|
||||
endif
|
||||
endfunc
|
||||
|
||||
func! polyglot#Heuristics()
|
||||
func! polyglot#Shebang()
|
||||
" Try to detect filetype from shebang
|
||||
let l:filetype = polyglot#Shebang()
|
||||
if l:filetype != ""
|
||||
exec "setf " . l:filetype
|
||||
let ft = polyglot#ShebangFiletype()
|
||||
if ft != ""
|
||||
let &ft = ft
|
||||
return 1
|
||||
endif
|
||||
|
||||
@@ -571,7 +583,7 @@ def generate_ftdetect(packages, heuristics)
|
||||
let s:r_envflag = '%(\\S\\+=\\S\\+\\|-[iS]\\|--ignore-environment\\|--split-string\\)'
|
||||
let s:r_env = '^\\%(\\' . s:r_envflag . '\\s\\+\\)*\\(\\S\\+\\)'
|
||||
|
||||
func! polyglot#Shebang()
|
||||
func! polyglot#ShebangFiletype()
|
||||
let l:line1 = getline(1)
|
||||
|
||||
if l:line1 !~# "^#!"
|
||||
@@ -631,15 +643,10 @@ end
|
||||
def generate_tests(packages)
|
||||
output = <<~EOS
|
||||
function! TestFiletype(filetype)
|
||||
try
|
||||
enew
|
||||
exec 'set ft=' . a:filetype
|
||||
catch
|
||||
echo 'Error loading filetype ' . a:filetype . ':'
|
||||
echo v:exception
|
||||
echo v:throwpoint
|
||||
exec ':cq!'
|
||||
endtry
|
||||
call Log('Loading ' . a:filetype . ' filetype...')
|
||||
|
||||
enew
|
||||
exec 'set ft=' . a:filetype
|
||||
endfunction
|
||||
|
||||
EOS
|
||||
@@ -650,7 +657,7 @@ def generate_tests(packages)
|
||||
end
|
||||
end
|
||||
|
||||
File.write('scripts/test_filetypes.vim', output)
|
||||
File.write('tests/filetypes.vim', output)
|
||||
|
||||
|
||||
end
|
||||
@@ -722,7 +729,7 @@ def detect_filetypes(glob)
|
||||
end.group_by { |a, b| a }.map { |a, b| [a, b.map { |c, d| d }] }.map { |a, b|
|
||||
{
|
||||
"name" => a,
|
||||
"extensions" => b.select { |x| x.match(/^\*\.[^\/]+$/) }.map { |a| a.strip[2..] },
|
||||
"extensions" => b.select { |x| x.match(/^\*\.[^\/]+$/) }.map { |a| a.strip[2..-1] },
|
||||
"filenames" => expand_all(b.select { |x| !x.match(/^\*\.[^\/]+$/) })
|
||||
}
|
||||
}
|
||||
|
||||
70
scripts/test
70
scripts/test
@@ -1,16 +1,60 @@
|
||||
#!/bin/bash
|
||||
#!/usr/bin/env ruby
|
||||
|
||||
set -e
|
||||
def run_script(src)
|
||||
system("bash", "-c", src)
|
||||
end
|
||||
|
||||
vim --clean -N -u <(echo "
|
||||
let &rtp='$PWD,'.&rtp
|
||||
let g:polyglot_test = 1
|
||||
source scripts/test_extensions.vim
|
||||
source scripts/test_filetypes.vim
|
||||
qa!
|
||||
")
|
||||
def run_vimscript(src)
|
||||
wrapper = <<~EOF
|
||||
vim --clean --not-a-term -u <(cat <<- "EOM"
|
||||
let g:polyglot_test = 1
|
||||
let &rtp='$PWD,' . &rtp
|
||||
runtime filetype.vim
|
||||
set t_ti= t_te=
|
||||
set shortmess+=F
|
||||
set noswapfile
|
||||
set nocp
|
||||
set nomore
|
||||
func! Log(msg)
|
||||
if $DEV != '1'
|
||||
echo a:msg
|
||||
else
|
||||
echon '.'
|
||||
endif
|
||||
endfunc
|
||||
EOM
|
||||
) -S <(cat <<- "EOM"
|
||||
try
|
||||
#{src}
|
||||
catch
|
||||
echo v:exception
|
||||
echo v:throwpoint
|
||||
endtry
|
||||
qa!
|
||||
EOM
|
||||
) | perl -pe 's/\e\[[0-9;]*[a-zA-Z]//g'
|
||||
EOF
|
||||
|
||||
if ! expect -c 'set timeout 1' -c 'spawn vim -N --clean -c "set nomore | :helptags ./doc | q"' -c 'expect "ENTER" { exit 1 }' > /dev/null; then
|
||||
echo "Please ensure ':helptags ./doc' works properly"
|
||||
exit 1
|
||||
fi
|
||||
run_script(wrapper)
|
||||
end
|
||||
|
||||
test_helptags = <<~EOF
|
||||
if ! expect -c 'set timeout 1' -c 'spawn vim -N --clean -c "set nomore | :helptags ./doc | q"' -c 'expect "ENTER" { exit 1 }' > /dev/null; then
|
||||
echo "Please ensure ':helptags ./doc' works properly"
|
||||
exit 1
|
||||
fi
|
||||
EOF
|
||||
|
||||
run_vimscript('source tests/filetypes.vim')
|
||||
run_vimscript('source tests/extensions.vim')
|
||||
run_script(test_helptags)
|
||||
|
||||
# run_vimscript("
|
||||
# func! TestIndent(file)
|
||||
# :e a:file
|
||||
# echo 'ok'
|
||||
# echo &filetype
|
||||
# endfunc
|
||||
#
|
||||
# #{Dir['tests/indent/**/test.*'].map { |f| "call TestIndent(\"#{f}\")"}.join("\n")}
|
||||
# ")
|
||||
|
||||
20
syntax/bzl.vim
Normal file
20
syntax/bzl.vim
Normal file
@@ -0,0 +1,20 @@
|
||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'bzl') == -1
|
||||
|
||||
" Vim syntax file
|
||||
" Language: Bazel (http://bazel.io)
|
||||
" Maintainer: David Barnett (https://github.com/google/vim-ft-bzl)
|
||||
" Last Change: 2015 Aug 11
|
||||
|
||||
if exists('b:current_syntax')
|
||||
finish
|
||||
endif
|
||||
|
||||
|
||||
runtime! syntax/python.vim
|
||||
|
||||
let b:current_syntax = 'bzl'
|
||||
|
||||
syn region bzlRule start='^\w\+($' end='^)\n*' transparent fold
|
||||
syn region bzlList start='\[' end='\]' transparent fold
|
||||
|
||||
endif
|
||||
@@ -30,6 +30,9 @@ syntax keyword odinTypeIdOf typeid_of
|
||||
syntax keyword odinTypeOf type_of
|
||||
syntax keyword odinAlignOf align_of
|
||||
|
||||
syntax keyword odinInline inline
|
||||
syntax keyword odinNoInline no_inline
|
||||
|
||||
syntax match odinTodo "TODO"
|
||||
syntax match odinNote "NOTE"
|
||||
syntax match odinXXX "XXX"
|
||||
@@ -37,7 +40,7 @@ syntax match odinFixMe "FIXME"
|
||||
syntax match odinNoCheckin "NOCHECKIN"
|
||||
syntax match odinHack "HACK"
|
||||
|
||||
syntax keyword odinDataType string cstring bool b8 b16 b32 b64 rune any rawptr f32 f64 f32le f32be f64le f64be u8 u16 u32 u64 u128 u16le u32le u64le u128le u16be u32be u64be u128be uint i8 i16 i32 i64 i128 i16le i32le i64le i128le i16be i32be i64be i128be int
|
||||
syntax keyword odinDataType string cstring bool b8 b16 b32 b64 rune any rawptr f32 f64 f32le f32be f64le f64be u8 u16 u32 u64 u128 u16le u32le u64le u128le u16be u32be u64be u128be uint uintptr i8 i16 i32 i64 i128 i16le i32le i64le i128le i16be i32be i64be i128be int
|
||||
syntax keyword odinBool true false
|
||||
syntax keyword odinNull nil
|
||||
syntax keyword odinDynamic dynamic
|
||||
@@ -105,6 +108,9 @@ highlight link odinTypeIdOf Keyword
|
||||
highlight link odinAlignOf Keyword
|
||||
highlight link odinPackage Keyword
|
||||
|
||||
highlight link odinInline Keyword
|
||||
highlight link odinNoInline Keyword
|
||||
|
||||
highlight link odinImport Keyword
|
||||
highlight link odinExport Keyword
|
||||
highlight link odinForeign Keyword
|
||||
|
||||
122
syntax/prolog.vim
Normal file
122
syntax/prolog.vim
Normal file
@@ -0,0 +1,122 @@
|
||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'prolog') == -1
|
||||
|
||||
" Vim syntax file
|
||||
" Language: PROLOG
|
||||
" Maintainer: Anton Kochkov <anton.kochkov@gmail.com>
|
||||
" Last Change: 2019 Aug 29
|
||||
|
||||
" There are two sets of highlighting in here:
|
||||
" If the "prolog_highlighting_clean" variable exists, it is rather sparse.
|
||||
" Otherwise you get more highlighting.
|
||||
"
|
||||
" You can also set the "prolog_highlighting_no_keyword" variable. If set,
|
||||
" keywords will not be highlighted.
|
||||
|
||||
" quit when a syntax file was already loaded
|
||||
if exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
|
||||
" Prolog is case sensitive.
|
||||
syn case match
|
||||
|
||||
" Very simple highlighting for comments, clause heads and
|
||||
" character codes. It respects prolog strings and atoms.
|
||||
|
||||
syn region prologCComment start=+/\*+ end=+\*/+
|
||||
syn match prologComment +%.*+
|
||||
|
||||
if !exists("prolog_highlighting_no_keyword")
|
||||
syn keyword prologKeyword module meta_predicate multifile dynamic
|
||||
endif
|
||||
syn match prologCharCode +0'\\\=.+
|
||||
syn region prologString start=+"+ skip=+\\\\\|\\"+ end=+"+
|
||||
syn region prologAtom start=+'+ skip=+\\\\\|\\'+ end=+'+
|
||||
syn region prologClause matchgroup=prologClauseHead start=+^\s*[a-z]\w*+ matchgroup=Normal end=+\.\s\|\.$+ contains=ALLBUT,prologClause
|
||||
|
||||
if !exists("prolog_highlighting_clean")
|
||||
|
||||
" some keywords
|
||||
" some common predicates are also highlighted as keywords
|
||||
" is there a better solution?
|
||||
if !exists("prolog_highlighting_no_keyword")
|
||||
syn keyword prologKeyword abolish current_output peek_code
|
||||
syn keyword prologKeyword append current_predicate put_byte
|
||||
syn keyword prologKeyword arg current_prolog_flag put_char
|
||||
syn keyword prologKeyword asserta fail put_code
|
||||
syn keyword prologKeyword assertz findall read
|
||||
syn keyword prologKeyword at_end_of_stream float read_term
|
||||
syn keyword prologKeyword atom flush_output repeat
|
||||
syn keyword prologKeyword atom_chars functor retract
|
||||
syn keyword prologKeyword atom_codes get_byte set_input
|
||||
syn keyword prologKeyword atom_concat get_char set_output
|
||||
syn keyword prologKeyword atom_length get_code set_prolog_flag
|
||||
syn keyword prologKeyword atomic halt set_stream_position
|
||||
syn keyword prologKeyword bagof integer setof
|
||||
syn keyword prologKeyword call is stream_property
|
||||
syn keyword prologKeyword catch nl sub_atom
|
||||
syn keyword prologKeyword char_code nonvar throw
|
||||
syn keyword prologKeyword char_conversion number true
|
||||
syn keyword prologKeyword clause number_chars unify_with_occurs_check
|
||||
syn keyword prologKeyword close number_codes var
|
||||
syn keyword prologKeyword compound once write
|
||||
syn keyword prologKeyword copy_term op write_canonical
|
||||
syn keyword prologKeyword current_char_conversion open write_term
|
||||
syn keyword prologKeyword current_input peek_byte writeq
|
||||
syn keyword prologKeyword current_op peek_char
|
||||
endif
|
||||
|
||||
syn match prologOperator "=\\=\|=:=\|\\==\|=<\|==\|>=\|\\=\|\\+\|=\.\.\|<\|>\|="
|
||||
syn match prologAsIs "===\|\\===\|<=\|=>"
|
||||
|
||||
syn match prologNumber "\<\d*\>'\@!"
|
||||
syn match prologNumber "\<0[xX]\x*\>'\@!"
|
||||
syn match prologCommentError "\*/"
|
||||
syn match prologSpecialCharacter ";"
|
||||
syn match prologSpecialCharacter "!"
|
||||
syn match prologSpecialCharacter ":-"
|
||||
syn match prologSpecialCharacter "-->"
|
||||
syn match prologQuestion "?-.*\." contains=prologNumber
|
||||
|
||||
|
||||
endif
|
||||
|
||||
syn sync maxlines=50
|
||||
|
||||
|
||||
" Define the default highlighting.
|
||||
" Only when an item doesn't have highlighting yet
|
||||
|
||||
" The default highlighting.
|
||||
hi def link prologComment Comment
|
||||
hi def link prologCComment Comment
|
||||
hi def link prologCharCode Special
|
||||
|
||||
if exists ("prolog_highlighting_clean")
|
||||
|
||||
hi def link prologKeyword Statement
|
||||
hi def link prologClauseHead Statement
|
||||
hi def link prologClause Normal
|
||||
|
||||
else
|
||||
|
||||
hi def link prologKeyword Keyword
|
||||
hi def link prologClauseHead Constant
|
||||
hi def link prologClause Normal
|
||||
hi def link prologQuestion PreProc
|
||||
hi def link prologSpecialCharacter Special
|
||||
hi def link prologNumber Number
|
||||
hi def link prologAsIs Normal
|
||||
hi def link prologCommentError Error
|
||||
hi def link prologAtom String
|
||||
hi def link prologString String
|
||||
hi def link prologOperator Operator
|
||||
|
||||
endif
|
||||
|
||||
|
||||
let b:current_syntax = "prolog"
|
||||
|
||||
" vim: ts=8
|
||||
|
||||
endif
|
||||
175
syntax/tads.vim
Normal file
175
syntax/tads.vim
Normal file
@@ -0,0 +1,175 @@
|
||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'tads') == -1
|
||||
|
||||
" Vim syntax file
|
||||
" Language: TADS
|
||||
" Maintainer: Amir Karger <karger@post.harvard.edu>
|
||||
" $Date: 2004/06/13 19:28:45 $
|
||||
" $Revision: 1.1 $
|
||||
" Stolen from: Bram Moolenaar's C language file
|
||||
" Newest version at: http://www.hec.utah.edu/~karger/vim/syntax/tads.vim
|
||||
" History info at the bottom of the file
|
||||
|
||||
" TODO lots more keywords
|
||||
" global, self, etc. are special *objects*, not functions. They should
|
||||
" probably be a different color than the special functions
|
||||
" Actually, should cvtstr etc. be functions?! (change tadsFunction)
|
||||
" Make global etc. into Identifiers, since we don't have regular variables?
|
||||
|
||||
" quit when a syntax file was already loaded
|
||||
if exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
|
||||
" A bunch of useful keywords
|
||||
syn keyword tadsStatement goto break return continue pass
|
||||
syn keyword tadsLabel case default
|
||||
syn keyword tadsConditional if else switch
|
||||
syn keyword tadsRepeat while for do
|
||||
syn keyword tadsStorageClass local compoundWord formatstring specialWords
|
||||
syn keyword tadsBoolean nil true
|
||||
|
||||
" TADS keywords
|
||||
syn keyword tadsKeyword replace modify
|
||||
syn keyword tadsKeyword global self inherited
|
||||
" builtin functions
|
||||
syn keyword tadsKeyword cvtstr cvtnum caps lower upper substr
|
||||
syn keyword tadsKeyword say length
|
||||
syn keyword tadsKeyword setit setscore
|
||||
syn keyword tadsKeyword datatype proptype
|
||||
syn keyword tadsKeyword car cdr
|
||||
syn keyword tadsKeyword defined isclass
|
||||
syn keyword tadsKeyword find firstobj nextobj
|
||||
syn keyword tadsKeyword getarg argcount
|
||||
syn keyword tadsKeyword input yorn askfile
|
||||
syn keyword tadsKeyword rand randomize
|
||||
syn keyword tadsKeyword restart restore quit save undo
|
||||
syn keyword tadsException abort exit exitobj
|
||||
|
||||
syn keyword tadsTodo contained TODO FIXME XXX
|
||||
|
||||
" String and Character constants
|
||||
" Highlight special characters (those which have a backslash) differently
|
||||
syn match tadsSpecial contained "\\."
|
||||
syn region tadsDoubleString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=tadsSpecial,tadsEmbedded
|
||||
syn region tadsSingleString start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=tadsSpecial
|
||||
" Embedded expressions in strings
|
||||
syn region tadsEmbedded contained start="<<" end=">>" contains=tadsKeyword
|
||||
|
||||
" TADS doesn't have \xxx, right?
|
||||
"syn match cSpecial contained "\\[0-7][0-7][0-7]\=\|\\."
|
||||
"syn match cSpecialCharacter "'\\[0-7][0-7]'"
|
||||
"syn match cSpecialCharacter "'\\[0-7][0-7][0-7]'"
|
||||
|
||||
"catch errors caused by wrong parenthesis
|
||||
"syn region cParen transparent start='(' end=')' contains=ALLBUT,cParenError,cIncluded,cSpecial,cTodo,cUserCont,cUserLabel
|
||||
"syn match cParenError ")"
|
||||
"syn match cInParen contained "[{}]"
|
||||
syn region tadsBrace transparent start='{' end='}' contains=ALLBUT,tadsBraceError,tadsIncluded,tadsSpecial,tadsTodo
|
||||
syn match tadsBraceError "}"
|
||||
|
||||
"integer number (TADS has no floating point numbers)
|
||||
syn case ignore
|
||||
syn match tadsNumber "\<[0-9]\+\>"
|
||||
"hex number
|
||||
syn match tadsNumber "\<0x[0-9a-f]\+\>"
|
||||
syn match tadsIdentifier "\<[a-z][a-z0-9_$]*\>"
|
||||
syn case match
|
||||
" flag an octal number with wrong digits
|
||||
syn match tadsOctalError "\<0[0-7]*[89]"
|
||||
|
||||
" Removed complicated c_comment_strings
|
||||
syn region tadsComment start="/\*" end="\*/" contains=tadsTodo
|
||||
syn match tadsComment "//.*" contains=tadsTodo
|
||||
syntax match tadsCommentError "\*/"
|
||||
|
||||
syn region tadsPreCondit start="^\s*#\s*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=tadsComment,tadsString,tadsNumber,tadsCommentError
|
||||
syn region tadsIncluded contained start=+"+ skip=+\\\\\|\\"+ end=+"+
|
||||
syn match tadsIncluded contained "<[^>]*>"
|
||||
syn match tadsInclude "^\s*#\s*include\>\s*["<]" contains=tadsIncluded
|
||||
syn region tadsDefine start="^\s*#\s*\(define\>\|undef\>\)" skip="\\$" end="$" contains=ALLBUT,tadsPreCondit,tadsIncluded,tadsInclude,tadsDefine,tadsInBrace,tadsIdentifier
|
||||
|
||||
syn region tadsPreProc start="^\s*#\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" contains=ALLBUT,tadsPreCondit,tadsIncluded,tadsInclude,tadsDefine,tadsInParen,tadsIdentifier
|
||||
|
||||
" Highlight User Labels
|
||||
" TODO labels for gotos?
|
||||
"syn region cMulti transparent start='?' end=':' contains=ALLBUT,cIncluded,cSpecial,cTodo,cUserCont,cUserLabel,cBitField
|
||||
" Avoid matching foo::bar() in C++ by requiring that the next char is not ':'
|
||||
"syn match cUserCont "^\s*\I\i*\s*:$" contains=cUserLabel
|
||||
"syn match cUserCont ";\s*\I\i*\s*:$" contains=cUserLabel
|
||||
"syn match cUserCont "^\s*\I\i*\s*:[^:]" contains=cUserLabel
|
||||
"syn match cUserCont ";\s*\I\i*\s*:[^:]" contains=cUserLabel
|
||||
|
||||
"syn match cUserLabel "\I\i*" contained
|
||||
|
||||
" identifier: class-name [, class-name [...]] [property-list] ;
|
||||
" Don't highlight comment in class def
|
||||
syn match tadsClassDef "\<class\>[^/]*" contains=tadsObjectDef,tadsClass
|
||||
syn match tadsClass contained "\<class\>"
|
||||
syn match tadsObjectDef "\<[a-zA-Z][a-zA-Z0-9_$]*\s*:\s*[a-zA-Z0-9_$]\+\(\s*,\s*[a-zA-Z][a-zA-Z0-9_$]*\)*\(\s*;\)\="
|
||||
syn keyword tadsFunction contained function
|
||||
syn match tadsFunctionDef "\<[a-zA-Z][a-zA-Z0-9_$]*\s*:\s*function[^{]*" contains=tadsFunction
|
||||
"syn region tadsObject transparent start = '[a-zA-Z][\i$]\s*:\s*' end=";" contains=tadsBrace,tadsObjectDef
|
||||
|
||||
" How far back do we go to find matching groups
|
||||
if !exists("tads_minlines")
|
||||
let tads_minlines = 15
|
||||
endif
|
||||
exec "syn sync ccomment tadsComment minlines=" . tads_minlines
|
||||
if !exists("tads_sync_dist")
|
||||
let tads_sync_dist = 100
|
||||
endif
|
||||
execute "syn sync maxlines=" . tads_sync_dist
|
||||
|
||||
" Define the default highlighting.
|
||||
" Only when an item doesn't have highlighting yet
|
||||
|
||||
" The default methods for highlighting. Can be overridden later
|
||||
hi def link tadsFunctionDef Function
|
||||
hi def link tadsFunction Structure
|
||||
hi def link tadsClass Structure
|
||||
hi def link tadsClassDef Identifier
|
||||
hi def link tadsObjectDef Identifier
|
||||
" no highlight for tadsEmbedded, so it prints as normal text w/in the string
|
||||
|
||||
hi def link tadsOperator Operator
|
||||
hi def link tadsStructure Structure
|
||||
hi def link tadsTodo Todo
|
||||
hi def link tadsLabel Label
|
||||
hi def link tadsConditional Conditional
|
||||
hi def link tadsRepeat Repeat
|
||||
hi def link tadsException Exception
|
||||
hi def link tadsStatement Statement
|
||||
hi def link tadsStorageClass StorageClass
|
||||
hi def link tadsKeyWord Keyword
|
||||
hi def link tadsSpecial SpecialChar
|
||||
hi def link tadsNumber Number
|
||||
hi def link tadsBoolean Boolean
|
||||
hi def link tadsDoubleString tadsString
|
||||
hi def link tadsSingleString tadsString
|
||||
|
||||
hi def link tadsOctalError tadsError
|
||||
hi def link tadsCommentError tadsError
|
||||
hi def link tadsBraceError tadsError
|
||||
hi def link tadsInBrace tadsError
|
||||
hi def link tadsError Error
|
||||
|
||||
hi def link tadsInclude Include
|
||||
hi def link tadsPreProc PreProc
|
||||
hi def link tadsDefine Macro
|
||||
hi def link tadsIncluded tadsString
|
||||
hi def link tadsPreCondit PreCondit
|
||||
|
||||
hi def link tadsString String
|
||||
hi def link tadsComment Comment
|
||||
|
||||
|
||||
|
||||
let b:current_syntax = "tads"
|
||||
|
||||
" Changes:
|
||||
" 11/18/99 Added a bunch of TADS functions, tadsException
|
||||
" 10/22/99 Misspelled Moolenaar (sorry!), c_minlines to tads_minlines
|
||||
"
|
||||
" vim: ts=8
|
||||
|
||||
endif
|
||||
@@ -97,6 +97,7 @@ endif
|
||||
syn match uLineComment "---*\([^-!#$%&\*\+./<=>\?@\\^|~].*\)\?$"
|
||||
syn region uBlockComment start="{-" end="-}" contains=uBlockComment
|
||||
syn region uPragma start="{-#" end="#-}"
|
||||
syn region uBelowFold start="^---" skip="." end="." contains=uBelowFold
|
||||
|
||||
" Docs
|
||||
syn region uDocBlock start="\[:" end=":]" contains=uLink,uDocDirective
|
||||
@@ -134,6 +135,7 @@ if version >= 508 || !exists("did_u_syntax_inits")
|
||||
HiLink uBlockComment uComment
|
||||
HiLink uLineComment uComment
|
||||
HiLink uComment Comment
|
||||
HiLink uBelowFold Comment
|
||||
HiLink uDocBlock String
|
||||
HiLink uLink uType
|
||||
HiLink uDocDirective uImport
|
||||
@@ -148,6 +150,7 @@ if version >= 508 || !exists("did_u_syntax_inits")
|
||||
delcommand HiLink
|
||||
endif
|
||||
|
||||
|
||||
let b:current_syntax = "unison"
|
||||
|
||||
" Options for vi: ts=8 sw=2 sts=2 nowrap noexpandtab ft=vim
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
function! TestExtension(filetype, filename, content)
|
||||
call Log('Detecting ' . a:filetype . ' filetype (' . a:filename . ')...')
|
||||
|
||||
try
|
||||
let g:message = ""
|
||||
exec "noautocmd n " . a:filename
|
||||
put =a:content
|
||||
silent put =a:content
|
||||
1delete _
|
||||
filetype detect
|
||||
exec "if &filetype != '" . a:filetype . "' \nthrow &filetype\nendif"
|
||||
@@ -15,6 +17,12 @@ function! TestExtension(filetype, filename, content)
|
||||
endtry
|
||||
endfunction
|
||||
|
||||
" make sure native vim scripts.vim is respected
|
||||
call TestExtension("rib", "renderman", "##RenderMan")
|
||||
|
||||
" make sure case of file does matter when recognizing file
|
||||
call TestExtension("ruby", "scripts/build", "#!/usr/bin/env ruby")
|
||||
|
||||
call TestExtension("sh", "bash1", "#!/bin/bash")
|
||||
call TestExtension("sh", "bash2", "#! /bin/bash")
|
||||
call TestExtension("sh", "bash3", "#! /bin/bash2.3")
|
||||
@@ -279,3 +287,75 @@ call TestExtension("c", "foo.h", "")
|
||||
unlet g:c_syntax_for_h
|
||||
let g:ch_syntax_for_h = 1
|
||||
call TestExtension("ch", "foo.h", "")
|
||||
|
||||
" perl
|
||||
call TestExtension("perl", "empty.plx", "")
|
||||
call TestExtension("perl", "empty.al", "")
|
||||
call TestExtension("perl", "empty.psgi", "")
|
||||
call TestExtension("pod", "empty.pod", "")
|
||||
|
||||
" raku
|
||||
call TestExtension("raku", "empty.p6", "")
|
||||
call TestExtension("raku", "empty.pm6", "")
|
||||
call TestExtension("raku", "empty.pl6", "")
|
||||
call TestExtension("raku", "empty.raku", "")
|
||||
call TestExtension("raku", "empty.rakumod", "")
|
||||
call TestExtension("raku", "empty.pod6", "")
|
||||
call TestExtension("raku", "empty.rakudoc", "")
|
||||
call TestExtension("raku", "empty.rakutest", "")
|
||||
call TestExtension("raku", "empty.t6", "")
|
||||
|
||||
|
||||
" .pm extension
|
||||
call TestExtension("perl", "empty.pm", "")
|
||||
call TestExtension("perl", "strict.pm", " use strict hello;")
|
||||
call TestExtension("perl", "use5.pm", " use 5;")
|
||||
call TestExtension("perl", "usev5.pm", " use v5;")
|
||||
call TestExtension("raku", "script.pm", "#!/usr/bin/env perl6\nprint('Hello world')")
|
||||
call TestExtension("raku", "class.pm", " class Class {}")
|
||||
call TestExtension("raku", "module.pm", " module foobar")
|
||||
call TestExtension("xpm", "xpm.pm", "/* XPM */")
|
||||
call TestExtension("xpm2", "xpm2.pm", "/* XPM2 */")
|
||||
let g:filetype_pm = "fizfuz"
|
||||
call TestExtension("fizfuz", "fizfuz.pm", "")
|
||||
|
||||
" .pl extension
|
||||
call TestExtension("perl", "empty.pl", "")
|
||||
call TestExtension("prolog", "comment.pl", "% hello world")
|
||||
call TestExtension("prolog", "comment2.pl", "/* hello world */")
|
||||
call TestExtension("prolog", "statement.pl", "happy(vincent). ")
|
||||
call TestExtension("prolog", "statement2.pl", "nearbychk(X,Y) :- Y is X-1.")
|
||||
call TestExtension("perl", "strict.pl", " use strict hello;")
|
||||
call TestExtension("perl", "use5.pl", " use 5;")
|
||||
call TestExtension("perl", "usev5.pl", " use v5;")
|
||||
call TestExtension("raku", "script.pl", "#!/usr/bin/env perl6\nprint('Hello world')")
|
||||
call TestExtension("raku", "class.pl", " class Class {}")
|
||||
call TestExtension("raku", "module.pl", " module foobar")
|
||||
let g:filetype_pl = "fizfuz"
|
||||
call TestExtension("fizfuz", "fizfuz.pl", "")
|
||||
|
||||
" .t extension
|
||||
call TestExtension("perl", "empty.t", "")
|
||||
call TestExtension("perl", "strict.t", " use strict hello;")
|
||||
call TestExtension("perl", "use5.t", " use 5;")
|
||||
call TestExtension("perl", "usev5.t", " use v5;")
|
||||
call TestExtension("raku", "script.t", "#!/usr/bin/env perl6\nprint('Hello world')")
|
||||
call TestExtension("raku", "class.t", " class Class {}")
|
||||
call TestExtension("raku", "module.t", " module foobar")
|
||||
call TestExtension("nroff", "module.t", ".nf\n101 Main Street")
|
||||
let g:filetype_t = "fizfuz"
|
||||
call TestExtension("fizfuz", "fizfuz.t", "")
|
||||
|
||||
" .tt2 extension
|
||||
call TestExtension("tt2", "empty.tt2", "")
|
||||
call TestExtension("tt2html", "doctype.tt2", "<!DOCTYPE HTML>")
|
||||
call TestExtension("tt2html", "percent.tt2", "<%filter>")
|
||||
call TestExtension("tt2html", "html.tt2", "<html>")
|
||||
|
||||
" .html extension
|
||||
call TestExtension("html", "empty.html", "")
|
||||
call TestExtension("mason", "mason1.html", "% my $planet = 42;")
|
||||
call TestExtension("mason", "mason2.html", "<%filter></%filter>")
|
||||
call TestExtension("jinja.html", "jinja.html", "{{ item.href }}")
|
||||
call TestExtension("jinja.html", "jinja.html", "{% for item in navigation %}{% endfor %}")
|
||||
call TestExtension("jinja.html", "jinja.html", "{% block head %}")
|
||||
@@ -1,13 +1,8 @@
|
||||
function! TestFiletype(filetype)
|
||||
try
|
||||
enew
|
||||
exec 'set ft=' . a:filetype
|
||||
catch
|
||||
echo 'Error loading filetype ' . a:filetype . ':'
|
||||
echo v:exception
|
||||
echo v:throwpoint
|
||||
exec ':cq!'
|
||||
endtry
|
||||
call Log('Loading ' . a:filetype . ' filetype...')
|
||||
|
||||
enew
|
||||
exec 'set ft=' . a:filetype
|
||||
endfunction
|
||||
|
||||
call TestFiletype('8th')
|
||||
@@ -154,6 +149,11 @@ call TestFiletype('sexplib')
|
||||
call TestFiletype('octave')
|
||||
call TestFiletype('opencl')
|
||||
call TestFiletype('perl')
|
||||
call TestFiletype('pod')
|
||||
call TestFiletype('mason')
|
||||
call TestFiletype('tt2')
|
||||
call TestFiletype('tt2html')
|
||||
call TestFiletype('xs')
|
||||
call TestFiletype('sql')
|
||||
call TestFiletype('cql')
|
||||
call TestFiletype('php')
|
||||
@@ -232,3 +232,6 @@ call TestFiletype('basic')
|
||||
call TestFiletype('vb')
|
||||
call TestFiletype('dosini')
|
||||
call TestFiletype('odin')
|
||||
call TestFiletype('bzl')
|
||||
call TestFiletype('prolog')
|
||||
call TestFiletype('tads')
|
||||
10
tests/indent/2.1/test.js
Normal file
10
tests/indent/2.1/test.js
Normal file
@@ -0,0 +1,10 @@
|
||||
// File with 2-spaces indentation
|
||||
function foobar() {
|
||||
foo = bar
|
||||
while (true) {
|
||||
fizfuz()
|
||||
fizfuz()
|
||||
fizfuz()
|
||||
fizfuz()
|
||||
}
|
||||
}
|
||||
10
tests/indent/4.1/test.js
Normal file
10
tests/indent/4.1/test.js
Normal file
@@ -0,0 +1,10 @@
|
||||
// File with 4-spaces indentation
|
||||
function foobar() {
|
||||
foo = bar
|
||||
while (true) {
|
||||
fizfuz()
|
||||
fizfuz()
|
||||
fizfuz()
|
||||
fizfuz()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user