diff options
author | Adam Stankiewicz <sheerun@sher.pl> | 2022-02-21 00:04:43 +0100 |
---|---|---|
committer | Adam Stankiewicz <sheerun@sher.pl> | 2022-02-21 00:07:11 +0100 |
commit | 83422e0a1fcfc88f3475104b0e0674e8dbe3130e (patch) | |
tree | 94b9af10f5801fb3711088ee4f879e6995ae73c9 /autoload | |
parent | b77c5f11070ecb2ff343aa18b4ea859e6168f16c (diff) | |
download | vim-polyglot-83422e0a1fcfc88f3475104b0e0674e8dbe3130e.tar.gz vim-polyglot-83422e0a1fcfc88f3475104b0e0674e8dbe3130e.zip |
Use old version of vim repository, fixes #779
closes #780
Diffstat (limited to 'autoload')
-rw-r--r-- | autoload/julia_latex_symbols.vim | 421 | ||||
-rw-r--r-- | autoload/polyglot/ft.vim | 739 | ||||
-rw-r--r-- | autoload/unison.vim | 2 |
3 files changed, 767 insertions, 395 deletions
diff --git a/autoload/julia_latex_symbols.vim b/autoload/julia_latex_symbols.vim index 5fb5821a..05d1fb6a 100644 --- a/autoload/julia_latex_symbols.vim +++ b/autoload/julia_latex_symbols.vim @@ -3,7 +3,7 @@ if polyglot#init#is_disabled(expand('<sfile>:p'), 'julia', 'autoload/julia_latex endif " This file is autogenerated from the script 'generate_latex_symbols_table.jl' -" The symbols are based on Julia version 1.5.0-DEV.67 +" The symbols are based on Julia version 1.9.0-DEV.16 scriptencoding utf-8 @@ -267,7 +267,7 @@ function! julia_latex_symbols#get_dict() \ '\^c': 'ᶜ', \ '\^f': 'ᶠ', \ '\^iota': 'ᶥ', - \ '\^Phi': 'ᶲ', + \ '\^ltphi': 'ᶲ', \ '\^z': 'ᶻ', \ '\^theta': 'ᶿ', \ '\enspace': ' ', @@ -281,8 +281,8 @@ function! julia_latex_symbols#get_dict() \ '\lq': '‘', \ '\rq': '’', \ '\reapos': '‛', - \ '\quotedblleft': '“', - \ '\quotedblright': '”', + \ '\ldq': '“', + \ '\rdq': '”', \ '\dagger': '†', \ '\ddagger': '‡', \ '\bullet': '•', @@ -374,10 +374,12 @@ function! julia_latex_symbols#get_dict() \ '\scrH': 'ℋ', \ '\frakH': 'ℌ', \ '\bbH': 'ℍ', + \ '\ith': 'ℎ', \ '\planck': 'ℎ', \ '\hslash': 'ℏ', \ '\scrI': 'ℐ', \ '\Im': 'ℑ', + \ '\frakI': 'ℑ', \ '\scrL': 'ℒ', \ '\ell': 'ℓ', \ '\bbN': 'ℕ', @@ -387,6 +389,7 @@ function! julia_latex_symbols#get_dict() \ '\bbQ': 'ℚ', \ '\scrR': 'ℛ', \ '\Re': 'ℜ', + \ '\frakR': 'ℜ', \ '\bbR': 'ℝ', \ '\xrat': '℞', \ '\trademark': '™', @@ -759,7 +762,9 @@ function! julia_latex_symbols#get_dict() \ '\veebar': '⊻', \ '\xor': '⊻', \ '\barwedge': '⊼', + \ '\nand': '⊼', \ '\barvee': '⊽', + \ '\nor': '⊽', \ '\rightanglearc': '⊾', \ '\varlrtriangle': '⊿', \ '\bigwedge': '⋀', @@ -1009,6 +1014,7 @@ function! julia_latex_symbols#get_dict() \ '\astrosun': '☉', \ '\:phone:': '☎', \ '\:ballot_box_with_check:': '☑', + \ '\:umbrella_with_rain_drops:': '☔', \ '\:umbrella:': '☔', \ '\:coffee:': '☕', \ '\:point_up:': '☝', @@ -1097,6 +1103,7 @@ function! julia_latex_symbols#get_dict() \ '\:soccer:': '⚽', \ '\:baseball:': '⚾', \ '\:snowman:': '⛄', + \ '\:snowman_without_snow:': '⛄', \ '\:partly_sunny:': '⛅', \ '\:ophiuchus:': '⛎', \ '\:no_entry:': '⛔', @@ -1352,8 +1359,8 @@ function! julia_latex_symbols#get_dict() \ '\intcup': '⨚', \ '\upint': '⨛', \ '\lowint': '⨜', - \ '\Join': '⨝', \ '\join': '⨝', + \ '\bbsemi': '⨟', \ '\ringplus': '⨢', \ '\plushat': '⨣', \ '\simplus': '⨤', @@ -1541,6 +1548,11 @@ function! julia_latex_symbols#get_dict() \ '\forksnot': '⫝', \ '\dashV': '⫣', \ '\Dashv': '⫤', + \ '\Top': '⫪', + \ '\downvDash': '⫪', + \ '\upvDash': '⫫', + \ '\Bot': '⫫', + \ '\indep': '⫫', \ '\interleave': '⫴', \ '\tdcol': '⫶', \ '\lllnest': '⫷', @@ -1625,6 +1637,9 @@ function! julia_latex_symbols#get_dict() \ '\:part_alternation_mark:': '〽', \ '\:congratulations:': '㊗', \ '\:secret:': '㊙', + \ '\^uparrow': 'ꜛ', + \ '\^downarrow': 'ꜜ', + \ '\^!': 'ꜝ', \ '\bfA': '𝐀', \ '\bfB': '𝐁', \ '\bfC': '𝐂', @@ -2309,7 +2324,7 @@ function! julia_latex_symbols#get_dict() \ '\bfbeta': '𝛃', \ '\bfgamma': '𝛄', \ '\bfdelta': '𝛅', - \ '\bfepsilon': '𝛆', + \ '\bfvarepsilon': '𝛆', \ '\bfzeta': '𝛇', \ '\bfeta': '𝛈', \ '\bftheta': '𝛉', @@ -2331,7 +2346,7 @@ function! julia_latex_symbols#get_dict() \ '\bfpsi': '𝛙', \ '\bfomega': '𝛚', \ '\bfpartial': '𝛛', - \ '\bfvarepsilon': '𝛜', + \ '\bfepsilon': '𝛜', \ '\bfvartheta': '𝛝', \ '\bfvarkappa': '𝛞', \ '\bfphi': '𝛟', @@ -2367,7 +2382,7 @@ function! julia_latex_symbols#get_dict() \ '\itbeta': '𝛽', \ '\itgamma': '𝛾', \ '\itdelta': '𝛿', - \ '\itepsilon': '𝜀', + \ '\itvarepsilon': '𝜀', \ '\itzeta': '𝜁', \ '\iteta': '𝜂', \ '\ittheta': '𝜃', @@ -2384,15 +2399,15 @@ function! julia_latex_symbols#get_dict() \ '\itsigma': '𝜎', \ '\ittau': '𝜏', \ '\itupsilon': '𝜐', - \ '\itphi': '𝜑', + \ '\itvarphi': '𝜑', \ '\itchi': '𝜒', \ '\itpsi': '𝜓', \ '\itomega': '𝜔', \ '\itpartial': '𝜕', - \ '\itvarepsilon': '𝜖', + \ '\itepsilon': '𝜖', \ '\itvartheta': '𝜗', \ '\itvarkappa': '𝜘', - \ '\itvarphi': '𝜙', + \ '\itphi': '𝜙', \ '\itvarrho': '𝜚', \ '\itvarpi': '𝜛', \ '\biAlpha': '𝜜', @@ -2425,7 +2440,7 @@ function! julia_latex_symbols#get_dict() \ '\bibeta': '𝜷', \ '\bigamma': '𝜸', \ '\bidelta': '𝜹', - \ '\biepsilon': '𝜺', + \ '\bivarepsilon': '𝜺', \ '\bizeta': '𝜻', \ '\bieta': '𝜼', \ '\bitheta': '𝜽', @@ -2442,15 +2457,15 @@ function! julia_latex_symbols#get_dict() \ '\bisigma': '𝝈', \ '\bitau': '𝝉', \ '\biupsilon': '𝝊', - \ '\biphi': '𝝋', + \ '\bivarphi': '𝝋', \ '\bichi': '𝝌', \ '\bipsi': '𝝍', \ '\biomega': '𝝎', \ '\bipartial': '𝝏', - \ '\bivarepsilon': '𝝐', + \ '\biepsilon': '𝝐', \ '\bivartheta': '𝝑', \ '\bivarkappa': '𝝒', - \ '\bivarphi': '𝝓', + \ '\biphi': '𝝓', \ '\bivarrho': '𝝔', \ '\bivarpi': '𝝕', \ '\bsansAlpha': '𝝖', @@ -2483,7 +2498,7 @@ function! julia_latex_symbols#get_dict() \ '\bsansbeta': '𝝱', \ '\bsansgamma': '𝝲', \ '\bsansdelta': '𝝳', - \ '\bsansepsilon': '𝝴', + \ '\bsansvarepsilon': '𝝴', \ '\bsanszeta': '𝝵', \ '\bsanseta': '𝝶', \ '\bsanstheta': '𝝷', @@ -2500,15 +2515,15 @@ function! julia_latex_symbols#get_dict() \ '\bsanssigma': '𝞂', \ '\bsanstau': '𝞃', \ '\bsansupsilon': '𝞄', - \ '\bsansphi': '𝞅', + \ '\bsansvarphi': '𝞅', \ '\bsanschi': '𝞆', \ '\bsanspsi': '𝞇', \ '\bsansomega': '𝞈', \ '\bsanspartial': '𝞉', - \ '\bsansvarepsilon': '𝞊', + \ '\bsansepsilon': '𝞊', \ '\bsansvartheta': '𝞋', \ '\bsansvarkappa': '𝞌', - \ '\bsansvarphi': '𝞍', + \ '\bsansphi': '𝞍', \ '\bsansvarrho': '𝞎', \ '\bsansvarpi': '𝞏', \ '\bisansAlpha': '𝞐', @@ -2541,7 +2556,7 @@ function! julia_latex_symbols#get_dict() \ '\bisansbeta': '𝞫', \ '\bisansgamma': '𝞬', \ '\bisansdelta': '𝞭', - \ '\bisansepsilon': '𝞮', + \ '\bisansvarepsilon': '𝞮', \ '\bisanszeta': '𝞯', \ '\bisanseta': '𝞰', \ '\bisanstheta': '𝞱', @@ -2558,15 +2573,15 @@ function! julia_latex_symbols#get_dict() \ '\bisanssigma': '𝞼', \ '\bisanstau': '𝞽', \ '\bisansupsilon': '𝞾', - \ '\bisansphi': '𝞿', + \ '\bisansvarphi': '𝞿', \ '\bisanschi': '𝟀', \ '\bisanspsi': '𝟁', \ '\bisansomega': '𝟂', \ '\bisanspartial': '𝟃', - \ '\bisansvarepsilon': '𝟄', + \ '\bisansepsilon': '𝟄', \ '\bisansvartheta': '𝟅', \ '\bisansvarkappa': '𝟆', - \ '\bisansvarphi': '𝟇', + \ '\bisansphi': '𝟇', \ '\bisansvarrho': '𝟈', \ '\bisansvarpi': '𝟉', \ '\bfDigamma': '𝟊', @@ -2686,6 +2701,9 @@ function! julia_latex_symbols#get_dict() \ '\:sun_with_face:': '🌞', \ '\:star2:': '🌟', \ '\:stars:': '🌠', + \ '\:hotdog:': '🌭', + \ '\:taco:': '🌮', + \ '\:burrito:': '🌯', \ '\:chestnut:': '🌰', \ '\:seedling:': '🌱', \ '\:evergreen_tree:': '🌲', @@ -2752,7 +2770,7 @@ function! julia_latex_symbols#get_dict() \ '\:cake:': '🍰', \ '\:bento:': '🍱', \ '\:stew:': '🍲', - \ '\:egg:': '🍳', + \ '\:fried_egg:': '🍳', \ '\:fork_and_knife:': '🍴', \ '\:tea:': '🍵', \ '\:sake:': '🍶', @@ -2762,6 +2780,8 @@ function! julia_latex_symbols#get_dict() \ '\:beer:': '🍺', \ '\:beers:': '🍻', \ '\:baby_bottle:': '🍼', + \ '\:champagne:': '🍾', + \ '\:popcorn:': '🍿', \ '\:ribbon:': '🎀', \ '\:gift:': '🎁', \ '\:birthday:': '🎂', @@ -2819,11 +2839,17 @@ function! julia_latex_symbols#get_dict() \ '\:snowboarder:': '🏂', \ '\:runner:': '🏃', \ '\:surfer:': '🏄', + \ '\:sports_medal:': '🏅', \ '\:trophy:': '🏆', \ '\:horse_racing:': '🏇', \ '\:football:': '🏈', \ '\:rugby_football:': '🏉', \ '\:swimmer:': '🏊', + \ '\:cricket_bat_and_ball:': '🏏', + \ '\:volleyball:': '🏐', + \ '\:field_hockey_stick_and_ball:': '🏑', + \ '\:ice_hockey_stick_and_puck:': '🏒', + \ '\:table_tennis_paddle_and_ball:': '🏓', \ '\:house:': '🏠', \ '\:house_with_garden:': '🏡', \ '\:office:': '🏢', @@ -2841,6 +2867,10 @@ function! julia_latex_symbols#get_dict() \ '\:izakaya_lantern:': '🏮', \ '\:japanese_castle:': '🏯', \ '\:european_castle:': '🏰', + \ '\:waving_black_flag:': '🏴', + \ '\:badminton_racquet_and_shuttlecock:': '🏸', + \ '\:bow_and_arrow:': '🏹', + \ '\:amphora:': '🏺', \ '\:skin-tone-2:': '🏻', \ '\:skin-tone-3:': '🏼', \ '\:skin-tone-4:': '🏽', @@ -2876,7 +2906,7 @@ function! julia_latex_symbols#get_dict() \ '\:bug:': '🐛', \ '\:ant:': '🐜', \ '\:bee:': '🐝', - \ '\:beetle:': '🐞', + \ '\:ladybug:': '🐞', \ '\:fish:': '🐟', \ '\:tropical_fish:': '🐠', \ '\:blowfish:': '🐡', @@ -2952,6 +2982,7 @@ function! julia_latex_symbols#get_dict() \ '\:woman:': '👩', \ '\:family:': '👪', \ '\:couple:': '👫', + \ '\:man_and_woman_holding_hands:': '👫', \ '\:two_men_holding_hands:': '👬', \ '\:two_women_holding_hands:': '👭', \ '\:cop:': '👮', @@ -3070,6 +3101,7 @@ function! julia_latex_symbols#get_dict() \ '\:pager:': '📟', \ '\:fax:': '📠', \ '\:satellite:': '📡', + \ '\:satellite_antenna:': '📡', \ '\:loudspeaker:': '📢', \ '\:mega:': '📣', \ '\:outbox_tray:': '📤', @@ -3092,10 +3124,12 @@ function! julia_latex_symbols#get_dict() \ '\:no_mobile_phones:': '📵', \ '\:signal_strength:': '📶', \ '\:camera:': '📷', + \ '\:camera_with_flash:': '📸', \ '\:video_camera:': '📹', \ '\:tv:': '📺', \ '\:radio:': '📻', \ '\:vhs:': '📼', + \ '\:prayer_beads:': '📿', \ '\:twisted_rightwards_arrows:': '🔀', \ '\:repeat:': '🔁', \ '\:repeat_one:': '🔂', @@ -3158,6 +3192,10 @@ function! julia_latex_symbols#get_dict() \ '\:small_red_triangle_down:': '🔻', \ '\:arrow_up_small:': '🔼', \ '\:arrow_down_small:': '🔽', + \ '\:kaaba:': '🕋', + \ '\:mosque:': '🕌', + \ '\:synagogue:': '🕍', + \ '\:menorah_with_nine_branches:': '🕎', \ '\:clock1:': '🕐', \ '\:clock2:': '🕑', \ '\:clock3:': '🕒', @@ -3182,6 +3220,10 @@ function! julia_latex_symbols#get_dict() \ '\:clock1030:': '🕥', \ '\:clock1130:': '🕦', \ '\:clock1230:': '🕧', + \ '\:man_dancing:': '🕺', + \ '\:middle_finger:': '🖕', + \ '\:spock-hand:': '🖖', + \ '\:black_heart:': '🖤', \ '\:mount_fuji:': '🗻', \ '\:tokyo_tower:': '🗼', \ '\:statue_of_liberty:': '🗽', @@ -3252,6 +3294,10 @@ function! julia_latex_symbols#get_dict() \ '\:pouting_cat:': '😾', \ '\:crying_cat_face:': '😿', \ '\:scream_cat:': '🙀', + \ '\:slightly_frowning_face:': '🙁', + \ '\:slightly_smiling_face:': '🙂', + \ '\:upside_down_face:': '🙃', + \ '\:face_with_rolling_eyes:': '🙄', \ '\:no_good:': '🙅', \ '\:ok_woman:': '🙆', \ '\:bow:': '🙇', @@ -3332,5 +3378,328 @@ function! julia_latex_symbols#get_dict() \ '\:passport_control:': '🛂', \ '\:customs:': '🛃', \ '\:baggage_claim:': '🛄', - \ '\:left_luggage:': '🛅'} + \ '\:left_luggage:': '🛅', + \ '\:sleeping_accommodation:': '🛌', + \ '\:place_of_worship:': '🛐', + \ '\:octagonal_sign:': '🛑', + \ '\:shopping_trolley:': '🛒', + \ '\:hindu_temple:': '🛕', + \ '\:hut:': '🛖', + \ '\:elevator:': '🛗', + \ '\:airplane_departure:': '🛫', + \ '\:airplane_arriving:': '🛬', + \ '\:scooter:': '🛴', + \ '\:motor_scooter:': '🛵', + \ '\:canoe:': '🛶', + \ '\:sled:': '🛷', + \ '\:flying_saucer:': '🛸', + \ '\:skateboard:': '🛹', + \ '\:auto_rickshaw:': '🛺', + \ '\:pickup_truck:': '🛻', + \ '\:roller_skate:': '🛼', + \ '\:large_orange_circle:': '🟠', + \ '\:large_yellow_circle:': '🟡', + \ '\:large_green_circle:': '🟢', + \ '\:large_purple_circle:': '🟣', + \ '\:large_brown_circle:': '🟤', + \ '\:large_red_square:': '🟥', + \ '\:large_blue_square:': '🟦', + \ '\:large_orange_square:': '🟧', + \ '\:large_yellow_square:': '🟨', + \ '\:large_green_square:': '🟩', + \ '\:large_purple_square:': '🟪', + \ '\:large_brown_square:': '🟫', + \ '\:pinched_fingers:': '🤌', + \ '\:white_heart:': '🤍', + \ '\:brown_heart:': '🤎', + \ '\:pinching_hand:': '🤏', + \ '\:zipper_mouth_face:': '🤐', + \ '\:money_mouth_face:': '🤑', + \ '\:face_with_thermometer:': '🤒', + \ '\:nerd_face:': '🤓', + \ '\:thinking_face:': '🤔', + \ '\:face_with_head_bandage:': '🤕', + \ '\:robot_face:': '🤖', + \ '\:hugging_face:': '🤗', + \ '\:the_horns:': '🤘', + \ '\:call_me_hand:': '🤙', + \ '\:raised_back_of_hand:': '🤚', + \ '\:left-facing_fist:': '🤛', + \ '\:right-facing_fist:': '🤜', + \ '\:handshake:': '🤝', + \ '\:crossed_fingers:': '🤞', + \ '\:i_love_you_hand_sign:': '🤟', + \ '\:face_with_cowboy_hat:': '🤠', + \ '\:clown_face:': '🤡', + \ '\:nauseated_face:': '🤢', + \ '\:rolling_on_the_floor_laughing:': '🤣', + \ '\:drooling_face:': '🤤', + \ '\:lying_face:': '🤥', + \ '\:face_palm:': '🤦', + \ '\:sneezing_face:': '🤧', + \ '\:face_with_raised_eyebrow:': '🤨', + \ '\:star-struck:': '🤩', + \ '\:zany_face:': '🤪', + \ '\:shushing_face:': '🤫', + \ '\:face_with_symbols_on_mouth:': '🤬', + \ '\:face_with_hand_over_mouth:': '🤭', + \ '\:face_vomiting:': '🤮', + \ '\:exploding_head:': '🤯', + \ '\:pregnant_woman:': '🤰', + \ '\:breast-feeding:': '🤱', + \ '\:palms_up_together:': '🤲', + \ '\:selfie:': '🤳', + \ '\:prince:': '🤴', + \ '\:person_in_tuxedo:': '🤵', + \ '\:mrs_claus:': '🤶', + \ '\:shrug:': '🤷', + \ '\:person_doing_cartwheel:': '🤸', + \ '\:juggling:': '🤹', + \ '\:fencer:': '🤺', + \ '\:wrestlers:': '🤼', + \ '\:water_polo:': '🤽', + \ '\:handball:': '🤾', + \ '\:diving_mask:': '🤿', + \ '\:wilted_flower:': '🥀', + \ '\:drum_with_drumsticks:': '🥁', + \ '\:clinking_glasses:': '🥂', + \ '\:tumbler_glass:': '🥃', + \ '\:spoon:': '🥄', + \ '\:goal_net:': '🥅', + \ '\:first_place_medal:': '🥇', + \ '\:second_place_medal:': '🥈', + \ '\:third_place_medal:': '🥉', + \ '\:boxing_glove:': '🥊', + \ '\:martial_arts_uniform:': '🥋', + \ '\:curling_stone:': '🥌', + \ '\:lacrosse:': '🥍', + \ '\:softball:': '🥎', + \ '\:flying_disc:': '🥏', + \ '\:croissant:': '🥐', + \ '\:avocado:': '🥑', + \ '\:cucumber:': '🥒', + \ '\:bacon:': '🥓', + \ '\:potato:': '🥔', + \ '\:carrot:': '🥕', + \ '\:baguette_bread:': '🥖', + \ '\:green_salad:': '🥗', + \ '\:shallow_pan_of_food:': '🥘', + \ '\:stuffed_flatbread:': '🥙', + \ '\:egg:': '🥚', + \ '\:glass_of_milk:': '🥛', + \ '\:peanuts:': '🥜', + \ '\:kiwifruit:': '🥝', + \ '\:pancakes:': '🥞', + \ '\:dumpling:': '🥟', + \ '\:fortune_cookie:': '🥠', + \ '\:takeout_box:': '🥡', + \ '\:chopsticks:': '🥢', + \ '\:bowl_with_spoon:': '🥣', + \ '\:cup_with_straw:': '🥤', + \ '\:coconut:': '🥥', + \ '\:broccoli:': '🥦', + \ '\:pie:': '🥧', + \ '\:pretzel:': '🥨', + \ '\:cut_of_meat:': '🥩', + \ '\:sandwich:': '🥪', + \ '\:canned_food:': '🥫', + \ '\:leafy_green:': '🥬', + \ '\:mango:': '🥭', + \ '\:moon_cake:': '🥮', + \ '\:bagel:': '🥯', + \ '\:smiling_face_with_3_hearts:': '🥰', + \ '\:yawning_face:': '🥱', + \ '\:smiling_face_with_tear:': '🥲', + \ '\:partying_face:': '🥳', + \ '\:woozy_face:': '🥴', + \ '\:hot_face:': '🥵', + \ '\:cold_face:': '🥶', + \ '\:ninja:': '🥷', + \ '\:disguised_face:': '🥸', + \ '\:pleading_face:': '🥺', + \ '\:sari:': '🥻', + \ '\:lab_coat:': '🥼', + \ '\:goggles:': '🥽', + \ '\:hiking_boot:': '🥾', + \ '\:womans_flat_shoe:': '🥿', + \ '\:crab:': '🦀', + \ '\:lion_face:': '🦁', + \ '\:scorpion:': '🦂', + \ '\:turkey:': '🦃', + \ '\:unicorn_face:': '🦄', + \ '\:eagle:': '🦅', + \ '\:duck:': '🦆', + \ '\:bat:': '🦇', + \ '\:shark:': '🦈', + \ '\:owl:': '🦉', + \ '\:fox_face:': '🦊', + \ '\:butterfly:': '🦋', + \ '\:deer:': '🦌', + \ '\:gorilla:': '🦍', + \ '\:lizard:': '🦎', + \ '\:rhinoceros:': '🦏', + \ '\:shrimp:': '🦐', + \ '\:squid:': '🦑', + \ '\:giraffe_face:': '🦒', + \ '\:zebra_face:': '🦓', + \ '\:hedgehog:': '🦔', + \ '\:sauropod:': '🦕', + \ '\:t-rex:': '🦖', + \ '\:cricket:': '🦗', + \ '\:kangaroo:': '🦘', + \ '\:llama:': '🦙', + \ '\:peacock:': '🦚', + \ '\:hippopotamus:': '🦛', + \ '\:parrot:': '🦜', + \ '\:raccoon:': '🦝', + \ '\:lobster:': '🦞', + \ '\:mosquito:': '🦟', + \ '\:microbe:': '🦠', + \ '\:badger:': '🦡', + \ '\:swan:': '🦢', + \ '\:mammoth:': '🦣', + \ '\:dodo:': '🦤', + \ '\:sloth:': '🦥', + \ '\:otter:': '🦦', + \ '\:orangutan:': '🦧', + \ '\:skunk:': '🦨', + \ '\:flamingo:': '🦩', + \ '\:oyster:': '🦪', + \ '\:beaver:': '🦫', + \ '\:bison:': '🦬', + \ '\:seal:': '🦭', + \ '\:guide_dog:': '🦮', + \ '\:probing_cane:': '🦯', + \ '\:bone:': '🦴', + \ '\:leg:': '🦵', + \ '\:foot:': '🦶', + \ '\:tooth:': '🦷', + \ '\:superhero:': '🦸', + \ '\:supervillain:': '🦹', + \ '\:safety_vest:': '🦺', + \ '\:ear_with_hearing_aid:': '🦻', + \ '\:motorized_wheelchair:': '🦼', + \ '\:manual_wheelchair:': '🦽', + \ '\:mechanical_arm:': '🦾', + \ '\:mechanical_leg:': '🦿', + \ '\:cheese_wedge:': '🧀', + \ '\:cupcake:': '🧁', + \ '\:salt:': '🧂', + \ '\:beverage_box:': '🧃', + \ '\:garlic:': '🧄', + \ '\:onion:': '🧅', + \ '\:falafel:': '🧆', + \ '\:waffle:': '🧇', + \ '\:butter:': '🧈', + \ '\:mate_drink:': '🧉', + \ '\:ice_cube:': '🧊', + \ '\:bubble_tea:': '🧋', + \ '\:standing_person:': '🧍', + \ '\:kneeling_person:': '🧎', + \ '\:deaf_person:': '🧏', + \ '\:face_with_monocle:': '🧐', + \ '\:adult:': '🧑', + \ '\:child:': '🧒', + \ '\:older_adult:': '🧓', + \ '\:bearded_person:': '🧔', + \ '\:person_with_headscarf:': '🧕', + \ '\:person_in_steamy_room:': '🧖', + \ '\:person_climbing:': '🧗', + \ '\:person_in_lotus_position:': '🧘', + \ '\:mage:': '🧙', + \ '\:fairy:': '🧚', + \ '\:vampire:': '🧛', + \ '\:merperson:': '🧜', + \ '\:elf:': '🧝', + \ '\:genie:': '🧞', + \ '\:zombie:': '🧟', + \ '\:brain:': '🧠', + \ '\:orange_heart:': '🧡', + \ '\:billed_cap:': '🧢', + \ '\:scarf:': '🧣', + \ '\:gloves:': '🧤', + \ '\:coat:': '🧥', + \ '\:socks:': '🧦', + \ '\:red_envelope:': '🧧', + \ '\:firecracker:': '🧨', + \ '\:jigsaw:': '🧩', + \ '\:test_tube:': '🧪', + \ '\:petri_dish:': '🧫', + \ '\:dna:': '🧬', + \ '\:compass:': '🧭', + \ '\:abacus:': '🧮', + \ '\:fire_extinguisher:': '🧯', + \ '\:toolbox:': '🧰', + \ '\:bricks:': '🧱', + \ '\:magnet:': '🧲', + \ '\:luggage:': '🧳', + \ '\:lotion_bottle:': '🧴', + \ '\:thread:': '🧵', + \ '\:yarn:': '🧶', + \ '\:safety_pin:': '🧷', + \ '\:teddy_bear:': '🧸', + \ '\:broom:': '🧹', + \ '\:basket:': '🧺', + \ '\:roll_of_paper:': '🧻', + \ '\:soap:': '🧼', + \ '\:sponge:': '🧽', + \ '\:receipt:': '🧾', + \ '\:nazar_amulet:': '🧿', + \ '\:ballet_shoes:': '🩰', + \ '\:one-piece_swimsuit:': '🩱', + \ '\:briefs:': '🩲', + \ '\:shorts:': '🩳', + \ '\:thong_sandal:': '🩴', + \ '\:drop_of_blood:': '🩸', + \ '\:adhesive_bandage:': '🩹', + \ '\:stethoscope:': '🩺', + \ '\:yo-yo:': '🪀', + \ '\:kite:': '🪁', + \ '\:parachute:': '🪂', + \ '\:boomerang:': '🪃', + \ '\:magic_wand:': '🪄', + \ '\:pinata:': '🪅', + \ '\:nesting_dolls:': '🪆', + \ '\:ringed_planet:': '🪐', + \ '\:chair:': '🪑', + \ '\:razor:': '🪒', + \ '\:axe:': '🪓', + \ '\:diya_lamp:': '🪔', + \ '\:banjo:': '🪕', + \ '\:military_helmet:': '🪖', + \ '\:accordion:': '🪗', + \ '\:long_drum:': '🪘', + \ '\:coin:': '🪙', + \ '\:carpentry_saw:': '🪚', + \ '\:screwdriver:': '🪛', + \ '\:ladder:': '🪜', + \ '\:hook:': '🪝', + \ '\:mirror:': '🪞', + \ '\:window:': '🪟', + \ '\:plunger:': '🪠', + \ '\:sewing_needle:': '🪡', + \ '\:knot:': '🪢', + \ '\:bucket:': '🪣', + \ '\:mouse_trap:': '🪤', + \ '\:toothbrush:': '🪥', + \ '\:headstone:': '🪦', + \ '\:placard:': '🪧', + \ '\:rock:': '🪨', + \ '\:fly:': '🪰', + \ '\:worm:': '🪱', + \ '\:beetle:': '🪲', + \ '\:cockroach:': '🪳', + \ '\:potted_plant:': '🪴', + \ '\:wood:': '🪵', + \ '\:feather:': '🪶', + \ '\:anatomical_heart:': '🫀', + \ '\:lungs:': '🫁', + \ '\:people_hugging:': '🫂', + \ '\:blueberries:': '🫐', + \ '\:bell_pepper:': '🫑', + \ '\:olive:': '🫒', + \ '\:flatbread:': '🫓', + \ '\:tamale:': '🫔', + \ '\:fondue:': '🫕', + \ '\:teapot:': '🫖'} endfunction diff --git a/autoload/polyglot/ft.vim b/autoload/polyglot/ft.vim index a8ca9008..92c65ac1 100644 --- a/autoload/polyglot/ft.vim +++ b/autoload/polyglot/ft.vim @@ -1,83 +1,89 @@ -vim9script +" Vim functions for file type detection +" +" Maintainer: Bram Moolenaar <Bram@vim.org> +" Last Change: 2022 Jan 31 -# Vim functions for file type detection -# -# Maintainer: Bram Moolenaar <Bram@vim.org> -# Last Change: 2022 Feb 05 +" These functions are moved here from runtime/filetype.vim to make startup +" faster. -# These functions are moved here from runtime/filetype.vim to make startup -# faster. +" Line continuation is used here, remove 'C' from 'cpoptions' +let s:cpo_save = &cpo +set cpo&vim -export def Check_inp() +func polyglot#ft#Check_inp() if getline(1) =~ '^\*' setf abaqus else - var n = 1 - var nmax = line("$") > 500 ? 500 : line("$") + let n = 1 + if line("$") > 500 + let nmax = 500 + else + let nmax = line("$") + endif while n <= nmax if getline(n) =~? "^header surface data" setf trasys break endif - n += 1 + let n = n + 1 endwhile endif -enddef +endfunc -# This function checks for the kind of assembly that is wanted by the user, or -# can be detected from the first five lines of the file. -export def FTasm() - # make sure b:asmsyntax exists +" This function checks for the kind of assembly that is wanted by the user, or +" can be detected from the first five lines of the file. +func polyglot#ft#FTasm() + " make sure b:asmsyntax exists if !exists("b:asmsyntax") - b:asmsyntax = "" + let b:asmsyntax = "" endif if b:asmsyntax == "" - FTasmsyntax() + call polyglot#ft#FTasmsyntax() endif - # if b:asmsyntax still isn't set, default to asmsyntax or GNU + " if b:asmsyntax still isn't set, default to asmsyntax or GNU if b:asmsyntax == "" if exists("g:asmsyntax") - b:asmsyntax = g:asmsyntax + let b:asmsyntax = g:asmsyntax else - b:asmsyntax = "asm" + let b:asmsyntax = "asm" endif endif - exe "setf " .. fnameescape(b:asmsyntax) -enddef + exe "setf " . fnameescape(b:asmsyntax) +endfunc -export def FTasmsyntax() - # see if the file contains any asmsyntax=foo overrides. If so, change - # b:asmsyntax appropriately - var head = " " .. getline(1) .. " " .. getline(2) .. " " - .. getline(3) .. " " .. getline(4) .. " " .. getline(5) .. " " - var match = matchstr(head, '\sasmsyntax=\zs[a-zA-Z0-9]\+\ze\s') +func polyglot#ft#FTasmsyntax() + " see if file contains any asmsyntax=foo overrides. If so, change + " b:asmsyntax appropriately + let head = " ".getline(1)." ".getline(2)." ".getline(3)." ".getline(4). + \" ".getline(5)." " + let match = matchstr(head, '\sasmsyntax=\zs[a-zA-Z0-9]\+\ze\s') if match != '' - b:asmsyntax = match + let b:asmsyntax = match elseif ((head =~? '\.title') || (head =~? '\.ident') || (head =~? '\.macro') || (head =~? '\.subtitle') || (head =~? '\.library')) - b:asmsyntax = "vmasm" + let b:asmsyntax = "vmasm" endif -enddef +endfunc -var ft_visual_basic_content = '\cVB_Name\|Begin VB\.\(Form\|MDIForm\|UserControl\)' +let s:ft_visual_basic_content = '\cVB_Name\|Begin VB\.\(Form\|MDIForm\|UserControl\)' -# See FTfrm() for Visual Basic form file detection -export def FTbas() +" See FTfrm() for Visual Basic form file detection +func polyglot#ft#FTbas() if exists("g:filetype_bas") - exe "setf " .. g:filetype_bas + exe "setf " . g:filetype_bas return endif - # most frequent FreeBASIC-specific keywords in distro files - var fb_keywords = '\c^\s*\%(extern\|var\|enum\|private\|scope\|union\|byref\|operator\|constructor\|delete\|namespace\|public\|property\|with\|destructor\|using\)\>\%(\s*[:=(]\)\@!' - var fb_preproc = '\c^\s*\%(#\a\+\|option\s\+\%(byval\|dynamic\|escape\|\%(no\)\=gosub\|nokeyword\|private\|static\)\>\)' - var fb_comment = "^\\s*/'" - # OPTION EXPLICIT, without the leading underscore, is common to many dialects - var qb64_preproc = '\c^\s*\%($\a\+\|option\s\+\%(_explicit\|_\=explicitarray\)\>\)' + " most frequent FreeBASIC-specific keywords in distro files + let fb_keywords = '\c^\s*\%(extern\|var\|enum\|private\|scope\|union\|byref\|operator\|constructor\|delete\|namespace\|public\|property\|with\|destructor\|using\)\>\%(\s*[:=(]\)\@!' + let fb_preproc = '\c^\s*\%(#\a\+\|option\s\+\%(byval\|dynamic\|escape\|\%(no\)\=gosub\|nokeyword\|private\|static\)\>\)' + let fb_comment = "^\\s*/'" + " OPTION EXPLICIT, without the leading underscore, is common to many dialects + let qb64_preproc = '\c^\s*\%($\a\+\|option\s\+\%(_explicit\|_\=explicitarray\)\>\)' - var lines = getline(1, min([line("$"), 100])) + let lines = getline(1, min([line("$"), 100])) if match(lines, fb_preproc) > -1 || match(lines, fb_comment) > -1 || match(lines, fb_keywords) > -1 setf freebasic @@ -88,40 +94,39 @@ export def FTbas() else setf basic endif -enddef +endfunc -export def FTbtm() +func polyglot#ft#FTbtm() if exists("g:dosbatch_syntax_for_btm") && g:dosbatch_syntax_for_btm setf dosbatch else setf btm endif -enddef +endfunc -export def BindzoneCheck(default = '') - if getline(1) .. getline(2) .. getline(3) .. getline(4) - =~ '^; <<>> DiG [0-9.]\+.* <<>>\|$ORIGIN\|$TTL\|IN\s\+SOA' +func polyglot#ft#BindzoneCheck(default) + if getline(1).getline(2).getline(3).getline(4) =~ '^; <<>> DiG [0-9.]\+.* <<>>\|$ORIGIN\|$TTL\|IN\s\+SOA' setf bindzone - elseif default != '' - exe 'setf ' .. default + elseif a:default != '' + exe 'setf ' . a:default endif -enddef +endfunc -export def FTlpc() +func polyglot#ft#FTlpc() if exists("g:lpc_syntax_for_c") - var lnum = 1 + let lnum = 1 while lnum <= 12 if getline(lnum) =~# '^\(//\|inherit\|private\|protected\|nosave\|string\|object\|mapping\|mixed\)' setf lpc return endif - lnum += 1 + let lnum = lnum + 1 endwhile endif setf c -enddef +endfunc -export def FTheader() +func polyglot#ft#FTheader() if match(getline(1, min([line("$"), 200])), '^@\(interface\|end\|class\)') > -1 if exists("g:c_syntax_for_h") setf objc @@ -135,15 +140,15 @@ export def FTheader() else setf cpp endif -enddef +endfunc -# This function checks if one of the first ten lines start with a '@'. In -# that case it is probably a change file. -# If the first line starts with # or ! it's probably a ch file. -# If a line has "main", "include", "//" or "/*" it's probably ch. -# Otherwise CHILL is assumed. -export def FTchange() - var lnum = 1 +" This function checks if one of the first ten lines start with a '@'. In +" that case it is probably a change file. +" If the first line starts with # or ! it's probably a ch file. +" If a line has "main", "include", "//" or "/*" it's probably ch. +" Otherwise CHILL is assumed. +func polyglot#ft#FTchange() + let lnum = 1 while lnum <= 10 if getline(lnum)[0] == '@' setf change @@ -161,101 +166,101 @@ export def FTchange() setf ch return endif - lnum += 1 + let lnum = lnum + 1 endwhile setf chill -enddef +endfunc -export def FTent() - # This function checks for valid cl syntax in the first five lines. - # Look for either an opening comment, '#', or a block start, '{". - # If not found, assume SGML. - var lnum = 1 +func polyglot#ft#FTent() + " This function checks for valid cl syntax in the first five lines. + " Look for either an opening comment, '#', or a block start, '{". + " If not found, assume SGML. + let lnum = 1 while lnum < 6 - var line = getline(lnum) + let line = getline(lnum) if line =~ '^\s*[#{]' setf cl return elseif line !~ '^\s*$' - # Not a blank line, not a comment, and not a block start, - # so doesn't look like valid cl code. + " Not a blank line, not a comment, and not a block start, + " so doesn't look like valid cl code. break endif - lnum += 1 + let lnum = lnum + 1 endw setf dtd -enddef +endfunc -export def ExCheck() - var lines = getline(1, min([line("$"), 100])) +func polyglot#ft#ExCheck() + let lines = getline(1, min([line("$"), 100])) if exists('g:filetype_euphoria') - exe 'setf ' .. g:filetype_euphoria + exe 'setf ' . g:filetype_euphoria elseif match(lines, '^--\|^ifdef\>\|^include\>') > -1 setf euphoria3 else setf elixir endif -enddef +endfunc -export def EuphoriaCheck() +func polyglot#ft#EuphoriaCheck() if exists('g:filetype_euphoria') - exe 'setf ' .. g:filetype_euphoria + exe 'setf ' . g:filetype_euphoria else setf euphoria3 endif -enddef +endfunc -export def DtraceCheck() - var lines = getline(1, min([line("$"), 100])) +func polyglot#ft#DtraceCheck() + let lines = getline(1, min([line("$"), 100])) if match(lines, '^module\>\|^import\>') > -1 - # D files often start with a module and/or import statement. + " D files often start with a module and/or import statement. setf d elseif match(lines, '^#!\S\+dtrace\|#pragma\s\+D\s\+option\|:\S\{-}:\S\{-}:') > -1 setf dtrace else setf d endif -enddef +endfunc -export def FTe() +func polyglot#ft#FTe() if exists('g:filetype_euphoria') - exe 'setf ' .. g:filetype_euphoria + exe 'setf ' . g:filetype_euphoria else - var n = 1 + let n = 1 while n < 100 && n <= line("$") if getline(n) =~ "^\\s*\\(<'\\|'>\\)\\s*$" setf specman return endif - n += 1 + let n = n + 1 endwhile setf eiffel endif -enddef +endfunc -export def FTfrm() +func polyglot#ft#FTfrm() if exists("g:filetype_frm") - exe "setf " .. g:filetype_frm + exe "setf " . g:filetype_frm return endif - var lines = getline(1, min([line("$"), 5])) + let lines = getline(1, min([line("$"), 5])) if match(lines, s:ft_visual_basic_content) > -1 setf vb else setf form endif -enddef +endfunc -# Distinguish between Forth and F#. -# Provided by Doug Kearns. -export def FTfs() +" Distinguish between Forth and F#. +" Provided by Doug Kearns. +func polyglot#ft#FTfs() if exists("g:filetype_fs") - exe "setf " .. g:filetype_fs + exe "setf " . g:filetype_fs else - var line = getline(nextnonblank(1)) - # comments and colon definitions + let line = getline(nextnonblank(1)) + " comments and colon definitions if line =~ '^\s*\.\=( ' || line =~ '^\s*\\G\= ' || line =~ '^\\$' \ || line =~ '^\s*: \S' setf forth @@ -263,11 +268,11 @@ export def FTfs() setf fsharp endif endif -enddef +endfunc -# Distinguish between HTML, XHTML and Django -export def FThtml() - var n = 1 +" Distinguish between HTML, XHTML and Django +func polyglot#ft#FThtml() + let n = 1 while n < 10 && n <= line("$") if getline(n) =~ '\<DTD\s\+XHTML\s' setf xhtml @@ -277,58 +282,58 @@ export def FThtml() setf htmldjango return endif - n += 1 + let n = n + 1 endwhile setf FALLBACK html -enddef +endfunc -# Distinguish between standard IDL and MS-IDL -export def FTidl() - var n = 1 +" Distinguish between standard IDL and MS-IDL +func polyglot#ft#FTidl() + let n = 1 while n < 50 && n <= line("$") if getline(n) =~ '^\s*import\s\+"\(unknwn\|objidl\)\.idl"' setf msidl return endif - n += 1 + let n = n + 1 endwhile setf idl -enddef - -# Distinguish between "default" and Cproto prototype file. */ -export def ProtoCheck(default: string) - # Cproto files have a comment in the first line and a function prototype in - # the second line, it always ends in ";". Indent files may also have - # comments, thus we can't match comments to see the difference. - # IDL files can have a single ';' in the second line, require at least one - # chacter before the ';'. +endfunc + +" Distinguish between "default" and Cproto prototype file. */ +func polyglot#ft#ProtoCheck(default) + " Cproto files have a comment in the first line and a function prototype in + " the second line, it always ends in ";". Indent files may also have + " comments, thus we can't match comments to see the difference. + " IDL files can have a single ';' in the second line, require at least one + " chacter before the ';'. if getline(2) =~ '.;$' setf cpp else - exe 'setf ' .. default + exe 'setf ' . a:default endif -enddef +endfunc -export def FTm() +func polyglot#ft#FTm() if exists("g:filetype_m") - exe "setf " .. g:filetype_m + exe "setf " . g:filetype_m return endif - # excluding end(for|function|if|switch|while) common to Murphi - var octave_block_terminators = '\<end\%(_try_catch\|classdef\|enumeration\|events\|methods\|parfor\|properties\)\>' + " excluding end(for|function|if|switch|while) common to Murphi + let octave_block_terminators = '\<end\%(_try_catch\|classdef\|enumeration\|events\|methods\|parfor\|properties\)\>' - var objc_preprocessor = '^\s*#\s*\%(import\|include\|define\|if\|ifn\=def\|undef\|line\|error\|pragma\)\>' + let objc_preprocessor = '^\s*#\s*\%(import\|include\|define\|if\|ifn\=def\|undef\|line\|error\|pragma\)\>' - var n = 1 - var saw_comment = 0 # Whether we've seen a multiline comment leader. + let n = 1 + let saw_comment = 0 " Whether we've seen a multiline comment leader. while n < 100 - var line = getline(n) + let line = getline(n) if line =~ '^\s*/\*' - # /* ... */ is a comment in Objective C and Murphi, so we can't conclude - # it's either of them yet, but track this as a hint in case we don't see - # anything more definitive. - saw_comment = 1 + " /* ... */ is a comment in Objective C and Murphi, so we can't conclude + " it's either of them yet, but track this as a hint in case we don't see + " anything more definitive. + let saw_comment = 1 endif if line =~ '^\s*//' || line =~ '^\s*@import\>' || line =~ objc_preprocessor setf objc @@ -339,7 +344,7 @@ export def FTm() setf octave return endif - # TODO: could be Matlab or Octave + " TODO: could be Matlab or Octave if line =~ '^\s*%' setf matlab return @@ -352,24 +357,24 @@ export def FTm() setf murphi return endif - n += 1 + let n = n + 1 endwhile if saw_comment - # We didn't see anything definitive, but this looks like either Objective C - # or Murphi based on the comment leader. Assume the former as it is more - # common. + " We didn't see anything definitive, but this looks like either Objective C + " or Murphi based on the comment leader. Assume the former as it is more + " common. setf objc else - # Default is Matlab + " Default is Matlab setf matlab endif -enddef +endfunc -export def FTmms() - var n = 1 +func polyglot#ft#FTmms() + let n = 1 while n < 20 - var line = getline(n) + let line = getline(n) if line =~ '^\s*\(%\|//\)' || line =~ '^\*' setf mmix return @@ -378,78 +383,78 @@ export def FTmms() setf make return endif - n += 1 + let n = n + 1 endwhile setf mmix -enddef +endfunc -# This function checks if one of the first five lines start with a dot. In -# that case it is probably an nroff file: 'filetype' is set and 1 is returned. -export def FTnroff(): number - if getline(1)[0] .. getline(2)[0] .. getline(3)[0] - .. getline(4)[0] .. getline(5)[0] =~ '\.' +" This function checks if one of the first five lines start with a dot. In +" that case it is probably an nroff file: 'filetype' is set and 1 is returned. +func polyglot#ft#FTnroff() + if getline(1)[0] . getline(2)[0] . getline(3)[0] . getline(4)[0] . getline(5)[0] =~ '\.' setf nroff return 1 endif return 0 -enddef +endfunc -export def FTmm() - var n = 1 +func polyglot#ft#FTmm() + let n = 1 while n < 20 - if getline(n) =~ '^\s*\(#\s*\(include\|import\)\>\|@import\>\|/\*\)' + let line = getline(n) + if line =~ '^\s*\(#\s*\(include\|import\)\>\|@import\>\|/\*\)' setf objcpp return endif - n += 1 + let n = n + 1 endwhile setf nroff -enddef +endfunc -export def FTpl() +func polyglot#ft#FTpl() if exists("g:filetype_pl") - exe "setf " .. g:filetype_pl + exe "setf " . g:filetype_pl else - # recognize Prolog by specific text in the first non-empty line - # require a blank after the '%' because Perl uses "%list" and "%translate" - var l = getline(nextnonblank(1)) + " recognize Prolog by specific text in the first non-empty line + " require a blank after the '%' because Perl uses "%list" and "%translate" + let l = getline(nextnonblank(1)) if l =~ '\<prolog\>' || l =~ '^\s*\(%\+\(\s\|$\)\|/\*\)' || l =~ ':-' setf prolog else setf perl endif endif -enddef +endfunc -export def FTinc() +func polyglot#ft#FTinc() if exists("g:filetype_inc") - exe "setf " .. g:filetype_inc + exe "setf " . g:filetype_inc else - var lines = getline(1) .. getline(2) .. getline(3) + let lines = getline(1).getline(2).getline(3) if lines =~? "perlscript" setf aspperl elseif lines =~ "<%" setf aspvbs elseif lines =~ "<?" setf php - # Pascal supports // comments but they're vary rarely used for file - # headers so assume POV-Ray + " Pascal supports // comments but they're vary rarely used for file + " headers so assume POV-Ray elseif lines =~ '^\s*\%({\|(\*\)' || lines =~? s:ft_pascal_keywords setf pascal else - FTasmsyntax() + call polyglot#ft#FTasmsyntax() if exists("b:asmsyntax") - exe "setf " .. fnameescape(b:asmsyntax) + exe "setf " . fnameescape(b:asmsyntax) else setf pov endif endif endif -enddef +endfunc -export def FTprogress_cweb() +func polyglot#ft#FTprogress_cweb() if exists("g:filetype_w") - exe "setf " .. g:filetype_w + exe "setf " . g:filetype_w return endif if getline(1) =~ '&ANALYZE' || getline(3) =~ '&GLOBAL-DEFINE' @@ -457,76 +462,76 @@ export def FTprogress_cweb() else setf cweb endif -enddef +endfunc -export def FTprogress_asm() +func polyglot#ft#FTprogress_asm() if exists("g:filetype_i") - exe "setf " .. g:filetype_i + exe "setf " . g:filetype_i return endif - # This function checks for an assembly comment the first ten lines. - # If not found, assume Progress. - var lnum = 1 + " This function checks for an assembly comment the first ten lines. + " If not found, assume Progress. + let lnum = 1 while lnum <= 10 && lnum < line('$') - var line = getline(lnum) + let line = getline(lnum) if line =~ '^\s*;' || line =~ '^\*' - FTasm() + call polyglot#ft#FTasm() return elseif line !~ '^\s*$' || line =~ '^/\*' - # Not an empty line: Doesn't look like valid assembly code. - # Or it looks like a Progress /* comment + " Not an empty line: Doesn't look like valid assembly code. + " Or it looks like a Progress /* comment break endif - lnum += 1 + let lnum = lnum + 1 endw setf progress -enddef +endfunc -var ft_pascal_comments = '^\s*\%({\|(\*\|//\)' -var ft_pascal_keywords = '^\s*\%(program\|unit\|library\|uses\|begin\|procedure\|function\|const\|type\|var\)\>' +let s:ft_pascal_comments = '^\s*\%({\|(\*\|//\)' +let s:ft_pascal_keywords = '^\s*\%(program\|unit\|library\|uses\|begin\|procedure\|function\|const\|type\|var\)\>' -export def FTprogress_pascal() +func polyglot#ft#FTprogress_pascal() if exists("g:filetype_p") - exe "setf " .. g:filetype_p + exe "setf " . g:filetype_p return endif - # This function checks for valid Pascal syntax in the first ten lines. - # Look for either an opening comment or a program start. - # If not found, assume Progress. - var lnum = 1 + " This function checks for valid Pascal syntax in the first ten lines. + " Look for either an opening comment or a program start. + " If not found, assume Progress. + let lnum = 1 while lnum <= 10 && lnum < line('$') - var line = getline(lnum) + let line = getline(lnum) if line =~ s:ft_pascal_comments || line =~? s:ft_pascal_keywords setf pascal return elseif line !~ '^\s*$' || line =~ '^/\*' - # Not an empty line: Doesn't look like valid Pascal code. - # Or it looks like a Progress /* comment + " Not an empty line: Doesn't look like valid Pascal code. + " Or it looks like a Progress /* comment break endif - lnum += 1 + let lnum = lnum + 1 endw setf progress -enddef +endfunc -export def FTpp() +func polyglot#ft#FTpp() if exists("g:filetype_pp") - exe "setf " .. g:filetype_pp + exe "setf " . g:filetype_pp else - var line = getline(nextnonblank(1)) + let line = getline(nextnonblank(1)) if line =~ s:ft_pascal_comments || line =~? s:ft_pascal_keywords setf pascal else setf puppet endif endif -enddef +endfunc -export def FTr() - var max = line("$") > 50 ? 50 : line("$") +func polyglot#ft#FTr() + let max = line("$") > 50 ? 50 : line("$") for n in range(1, max) - # Rebol is easy to recognize, check for that first + " Rebol is easy to recognize, check for that first if getline(n) =~? '\<REBOL\>' setf rebol return @@ -534,82 +539,82 @@ export def FTr() endfor for n in range(1, max) - # R has # comments + " R has # comments if getline(n) =~ '^\s*#' setf r return endif - # Rexx has /* comments */ + " Rexx has /* comments */ if getline(n) =~ '^\s*/\*' setf rexx return endif endfor - # Nothing recognized, use user default or assume Rexx + " Nothing recognized, use user default or assume Rexx if exists("g:filetype_r") - exe "setf " .. g:filetype_r + exe "setf " . g:filetype_r else - # Rexx used to be the default, but R appears to be much more popular. + " Rexx used to be the default, but R appears to be much more popular. setf r endif -enddef +endfunc -export def McSetf() - # Rely on the file to start with a comment. - # MS message text files use ';', Sendmail files use '#' or 'dnl' +func polyglot#ft#McSetf() + " Rely on the file to start with a comment. + " MS message text files use ';', Sendmail files use '#' or 'dnl' for lnum in range(1, min([line("$"), 20])) - var line = getline(lnum) + let line = getline(lnum) if line =~ '^\s*\(#\|dnl\)' - setf m4 # Sendmail .mc file + setf m4 " Sendmail .mc file return elseif line =~ '^\s*;' - setf msmessages # MS Message text file + setf msmessages " MS Message text file return endif endfor setf m4 " Default: Sendmail .mc file -enddef +endfunc -# Called from filetype.vim and scripts.vim. -export def SetFileTypeSH(name: string) +" Called from filetype.vim and scripts.vim. +func polyglot#ft#SetFileTypeSH(name) if did_filetype() - # Filetype was already detected + " Filetype was already detected return endif if expand("<amatch>") =~ g:ft_ignore_pat return endif - if name =~ '\<csh\>' - # Some .sh scripts contain #!/bin/csh. - SetFileTypeShell("csh") + if a:name =~ '\<csh\>' + " Some .sh scripts contain #!/bin/csh. + call polyglot#ft#SetFileTypeShell("csh") return - elseif name =~ '\<tcsh\>' - # Some .sh scripts contain #!/bin/tcsh. - SetFileTypeShell("tcsh") + elseif a:name =~ '\<tcsh\>' + " Some .sh scripts contain #!/bin/tcsh. + call polyglot#ft#SetFileTypeShell("tcsh") return - elseif name =~ '\<zsh\>' - # Some .sh scripts contain #!/bin/zsh. - SetFileTypeShell("zsh") + elseif a:name =~ '\<zsh\>' + " Some .sh scripts contain #!/bin/zsh. + call polyglot#ft#SetFileTypeShell("zsh") return - elseif name =~ '\<ksh\>' - b:is_kornshell = 1 + elseif a:name =~ '\<ksh\>' + let b:is_kornshell = 1 if exists("b:is_bash") unlet b:is_bash endif if exists("b:is_sh") unlet b:is_sh endif - elseif exists("g:bash_is_sh") || name =~ '\<bash\>' || name =~ '\<bash2\>' - b:is_bash = 1 + elseif exists("g:bash_is_sh") || a:name =~ '\<bash\>' || a:name =~ '\<bash2\>' + let b:is_bash = 1 if exists("b:is_kornshell") unlet b:is_kornshell endif if exists("b:is_sh") unlet b:is_sh endif - elseif name =~ '\<sh\>' - b:is_sh = 1 + elseif a:name =~ '\<sh\>' + let b:is_sh = 1 if exists("b:is_kornshell") unlet b:is_kornshell endif @@ -617,76 +622,75 @@ export def SetFileTypeSH(name: string) unlet b:is_bash endif endif - SetFileTypeShell("sh") -enddef + call polyglot#ft#SetFileTypeShell("sh") +endfunc -# For shell-like file types, check for an "exec" command hidden in a comment, -# as used for Tcl. -# Also called from scripts.vim, thus can't be local to this script. -export def SetFileTypeShell(name: string) +" For shell-like file types, check for an "exec" command hidden in a comment, +" as used for Tcl. +" Also called from scripts.vim, thus can't be local to this script. +func polyglot#ft#SetFileTypeShell(name) if did_filetype() - # Filetype was already detected + " Filetype was already detected return endif if expand("<amatch>") =~ g:ft_ignore_pat return endif - var l = 2 + let l = 2 while l < 20 && l < line("$") && getline(l) =~ '^\s*\(#\|$\)' - # Skip empty and comment lines. - l += 1 + " Skip empty and comment lines. + let l = l + 1 endwhile if l < line("$") && getline(l) =~ '\s*exec\s' && getline(l - 1) =~ '^\s*#.*\\$' - # Found an "exec" line after a comment with continuation - var n = substitute(getline(l), '\s*exec\s\+\([^ ]*/\)\=', '', '') + " Found an "exec" line after a comment with continuation + let n = substitute(getline(l),'\s*exec\s\+\([^ ]*/\)\=', '', '') if n =~ '\<tclsh\|\<wish' setf tcl return endif endif - exe "setf " .. name -enddef + exe "setf " . a:name +endfunc -export def CSH() +func polyglot#ft#CSH() if did_filetype() - # Filetype was already detected + " Filetype was already detected return endif if exists("g:filetype_csh") - SetFileTypeShell(g:filetype_csh) + call polyglot#ft#SetFileTypeShell(g:filetype_csh) elseif &shell =~ "tcsh" - SetFileTypeShell("tcsh") + call polyglot#ft#SetFileTypeShell("tcsh") else - SetFileTypeShell("csh") + call polyglot#ft#SetFileTypeShell("csh") endif -enddef +endfunc -var ft_rules_udev_rules_pattern = '^\s*\cudev_rules\s*=\s*"\([^"]\{-1,}\)/*".*' -export def FTRules() - var path = expand('<amatch>:p') +let s:ft_rules_udev_rules_pattern = '^\s*\cudev_rules\s*=\s*"\([^"]\{-1,}\)/*".*' +func polyglot#ft#FTRules() + let path = expand('<amatch>:p') if path =~ '/\(etc/udev/\%(rules\.d/\)\=.*\.rules\|\%(usr/\)\=lib/udev/\%(rules\.d/\)\=.*\.rules\)$' setf udevrules return endif if path =~ '^/etc/ufw/' - setf conf # Better than hog + setf conf " Better than hog return endif if path =~ '^/\(etc\|usr/share\)/polkit-1/rules\.d' setf javascript return endif - var config_lines: list<string> try - config_lines = readfile('/etc/udev/udev.conf') + let config_lines = readfile('/etc/udev/udev.conf') catch /^Vim\%((\a\+)\)\=:E484/ setf hog return endtry - var dir = expand('<amatch>:p:h') + let dir = expand('<amatch>:p:h') for line in config_lines if line =~ s:ft_rules_udev_rules_pattern - var udev_rules = substitute(line, s:ft_rules_udev_rules_pattern, '\1', "") + let udev_rules = substitute(line, s:ft_rules_udev_rules_pattern, '\1', "") if dir == udev_rules setf udevrules endif @@ -694,24 +698,24 @@ export def FTRules() endif endfor setf hog -enddef +endfunc -export def SQL() +func polyglot#ft#SQL() if exists("g:filetype_sql") - exe "setf " .. g:filetype_sql + exe "setf " . g:filetype_sql else setf sql endif -enddef +endfunc -# If the file has an extension of 't' and is in a directory 't' or 'xt' then -# it is almost certainly a Perl test file. -# If the first line starts with '#' and contains 'perl' it's probably a Perl -# file. -# (Slow test) If a file contains a 'use' statement then it is almost certainly -# a Perl file. -export def FTperl(): number - var dirname = expand("%:p:h:t") +" If the file has an extension of 't' and is in a directory 't' or 'xt' then +" it is almost certainly a Perl test file. +" If the first line starts with '#' and contains 'perl' it's probably a Perl +" file. +" (Slow test) If a file contains a 'use' statement then it is almost certainly +" a Perl file. +func polyglot#ft#FTperl() + let dirname = expand("%:p:h:t") if expand("%:e") == 't' && (dirname == 't' || dirname == 'xt') setf perl return 1 @@ -720,88 +724,86 @@ export def FTperl(): number setf perl return 1 endif - var save_cursor = getpos('.') - call cursor(1, 1) - var has_use = search('^use\s\s*\k', 'c', 30) > 0 + let save_cursor = getpos('.') + call cursor(1,1) + let has_use = search('^use\s\s*\k', 'c', 30) call setpos('.', save_cursor) if has_use setf perl return 1 endif return 0 -enddef - -# Choose context, plaintex, or tex (LaTeX) based on these rules: -# 1. Check the first line of the file for "%&<format>". -# 2. Check the first 1000 non-comment lines for LaTeX or ConTeXt keywords. -# 3. Default to "plain" or to g:tex_flavor, can be set in user's vimrc. -export def FTtex() - var firstline = getline(1) - var format: string +endfunc + +" Choose context, plaintex, or tex (LaTeX) based on these rules: +" 1. Check the first line of the file for "%&<format>". +" 2. Check the first 1000 non-comment lines for LaTeX or ConTeXt keywords. +" 3. Default to "plain" or to g:tex_flavor, can be set in user's vimrc. +func polyglot#ft#FTtex() + let firstline = getline(1) if firstline =~ '^%&\s*\a\+' - format = tolower(matchstr(firstline, '\a\+')) - format = substitute(format, 'pdf', '', '') + let format = tolower(matchstr(firstline, '\a\+')) + let format = substitute(format, 'pdf', '', '') if format == 'tex' - format = 'latex' + let format = 'latex' elseif format == 'plaintex' - format = 'plain' + let format = 'plain' endif elseif expand('%') =~ 'tex/context/.*/.*.tex' - format = 'context' + let format = 'context' else - # Default value, may be changed later: - format = exists("g:tex_flavor") ? g:tex_flavor : 'plain' - # Save position, go to the top of the file, find first non-comment line. - var save_cursor = getpos('.') - call cursor(1, 1) - var firstNC = search('^\s*[^[:space:]%]', 'c', 1000) - if firstNC > 0 - # Check the next thousand lines for a LaTeX or ConTeXt keyword. - var lpat = 'documentclass\>\|usepackage\>\|begin{\|newcommand\>\|renewcommand\>' - var cpat = 'start\a\+\|setup\a\+\|usemodule\|enablemode\|enableregime\|setvariables\|useencoding\|usesymbols\|stelle\a\+\|verwende\a\+\|stel\a\+\|gebruik\a\+\|usa\a\+\|imposta\a\+\|regle\a\+\|utilisemodule\>' - var kwline = search('^\s*\\\%(' .. lpat .. '\)\|^\s*\\\(' .. cpat .. '\)', - 'cnp', firstNC + 1000) - if kwline == 1 # lpat matched - format = 'latex' - elseif kwline == 2 # cpat matched - format = 'context' - endif # If neither matched, keep default set above. - # let lline = search('^\s*\\\%(' . lpat . '\)', 'cn', firstNC + 1000) - # let cline = search('^\s*\\\%(' . cpat . '\)', 'cn', firstNC + 1000) - # if cline > 0 - # let format = 'context' - # endif - # if lline > 0 && (cline == 0 || cline > lline) - # let format = 'tex' - # endif - endif # firstNC + " Default value, may be changed later: + let format = exists("g:tex_flavor") ? g:tex_flavor : 'plain' + " Save position, go to the top of the file, find first non-comment line. + let save_cursor = getpos('.') + call cursor(1,1) + let firstNC = search('^\s*[^[:space:]%]', 'c', 1000) + if firstNC " Check the next thousand lines for a LaTeX or ConTeXt keyword. + let lpat = 'documentclass\>\|usepackage\>\|begin{\|newcommand\>\|renewcommand\>' + let cpat = 'start\a\+\|setup\a\+\|usemodule\|enablemode\|enableregime\|setvariables\|useencoding\|usesymbols\|stelle\a\+\|verwende\a\+\|stel\a\+\|gebruik\a\+\|usa\a\+\|imposta\a\+\|regle\a\+\|utilisemodule\>' + let kwline = search('^\s*\\\%(' . lpat . '\)\|^\s*\\\(' . cpat . '\)', + \ 'cnp', firstNC + 1000) + if kwline == 1 " lpat matched + let format = 'latex' + elseif kwline == 2 " cpat matched + let format = 'context' + endif " If neither matched, keep default set above. + " let lline = search('^\s*\\\%(' . lpat . '\)', 'cn', firstNC + 1000) + " let cline = search('^\s*\\\%(' . cpat . '\)', 'cn', firstNC + 1000) + " if cline > 0 + " let format = 'context' + " endif + " if lline > 0 && (cline == 0 || cline > lline) + " let format = 'tex' + " endif + endif " firstNC call setpos('.', save_cursor) - endif # firstline =~ '^%&\s*\a\+' + endif " firstline =~ '^%&\s*\a\+' - # Translation from formats to file types. TODO: add AMSTeX, RevTex, others? + " Translation from formats to file types. TODO: add AMSTeX, RevTex, others? if format == 'plain' setf plaintex elseif format == 'context' setf context - else # probably LaTeX + else " probably LaTeX setf tex endif return -enddef +endfunc -export def FTxml() - var n = 1 +func polyglot#ft#FTxml() + let n = 1 while n < 100 && n <= line("$") - var line = getline(n) - # DocBook 4 or DocBook 5. - var is_docbook4 = line =~ '<!DOCTYPE.*DocBook' - var is_docbook5 = line =~ ' xmlns="http://docbook.org/ns/docbook"' + let line = getline(n) + " DocBook 4 or DocBook 5. + let is_docbook4 = line =~ '<!DOCTYPE.*DocBook' + let is_docbook5 = line =~ ' xmlns="http://docbook.org/ns/docbook"' if is_docbook4 || is_docbook5 - b:docbk_type = "xml" + let b:docbk_type = "xml" if is_docbook5 - b:docbk_ver = 5 + let b:docbk_ver = 5 else - b:docbk_ver = 4 + let b:docbk_ver = 4 endif setf docbk return @@ -810,15 +812,15 @@ export def FTxml() setf xbl return endif - n += 1 + let n += 1 endwhile setf xml -enddef +endfunc -export def FTy() - var n = 1 +func polyglot#ft#FTy() + let n = 1 while n < 100 && n <= line("$") - var line = getline(n) + let line = getline(n) if line =~ '^\s*%' setf yacc return @@ -827,25 +829,25 @@ export def FTy() setf racc return endif - n += 1 + let n = n + 1 endwhile setf yacc -enddef +endfunc -export def Redif() - var lnum = 1 +func polyglot#ft#Redif() + let lnum = 1 while lnum <= 5 && lnum < line('$') if getline(lnum) =~ "^\ctemplate-type:" setf redif return endif - lnum += 1 + let lnum = lnum + 1 endwhile -enddef +endfunc -# This function is called for all files under */debian/patches/*, make sure not -# to non-dep3patch files, such as README and other text files. -export def Dep3patch() +" This function is called for all files under */debian/patches/*, make sure not +" to non-dep3patch files, such as README and other text files. +func polyglot#ft#Dep3patch() if expand('%:t') ==# 'series' return endif @@ -855,43 +857,44 @@ export def Dep3patch() setf dep3patch return elseif ln =~# '^---' - # end of headers found. stop processing + " end of headers found. stop processing return endif endfor -enddef - -# This function checks the first 15 lines for appearance of 'FoamFile' -# and then 'object' in a following line. -# In that case, it's probably an OpenFOAM file -export def FTfoam() - var ffile = 0 - var lnum = 1 +endfunc + +" This function checks the first 15 lines for appearance of 'FoamFile' +" and then 'object' in a following line. +" In that case, it's probably an OpenFOAM file +func polyglot#ft#FTfoam() + let ffile = 0 + let lnum = 1 while lnum <= 15 if getline(lnum) =~# '^FoamFile' - ffile = 1 + let ffile = 1 elseif ffile == 1 && getline(lnum) =~# '^\s*object' setf foam return endif - lnum += 1 + let lnum = lnum + 1 endwhile -enddef +endfunc -# Determine if a *.tf file is TF mud client or terraform -export def FTtf() - var numberOfLines = line('$') +" Determine if a *.tf file is TF mud client or terraform +func polyglot#ft#FTtf() + let numberOfLines = line('$') for i in range(1, numberOfLines) - var currentLine = trim(getline(i)) - var firstCharacter = currentLine[0] + let currentLine = trim(getline(i)) + let firstCharacter = currentLine[0] if firstCharacter !=? ";" && firstCharacter !=? "/" && firstCharacter !=? "" setf terraform return endif endfor setf tf -enddef +endfunc -# Uncomment this line to check for compilation errors early -# defcompile +" Restore 'cpoptions' +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/autoload/unison.vim b/autoload/unison.vim index e91699f0..292deda6 100644 --- a/autoload/unison.vim +++ b/autoload/unison.vim @@ -66,7 +66,7 @@ function! unison#Complete(findstart, base) abort " " (List.fol<cursor> " ^ - while start > 0 && line[start - 1] !~ '\v\s|[(){}\[\]]' + while start > 0 && line[start - 1] !~ '\v\s|[!(){}\[\]]' let start -= 1 endwhile return start |