├── .gitignore └── after └── syntax └── python.vim /.gitignore: -------------------------------------------------------------------------------- 1 | tags 2 | *.pyc 3 | -------------------------------------------------------------------------------- /after/syntax/python.vim: -------------------------------------------------------------------------------- 1 | " Remove the keywords. We'll re-add them below. Use silent in case the group 2 | " doesn't exist. 3 | silent! syntax clear pythonOperator 4 | 5 | " TODO highlight comments correctly 6 | " syntax match pyComment "#" conceal cchar=⍝ 7 | 8 | " XXX least specific cases at the top, since the match rules seem to be 9 | " cumulative. 10 | 11 | 12 | " Include the space after “not” – if present – so that “not a” becomes “¬a”. 13 | " also, don't hide “not” behind ‘¬’ if it is after “is ”. 14 | " 15 | " syntax match pyOperator "\%(is \)\@\)" conceal cchar=¬ 16 | 17 | " Subscripts 18 | 19 | 20 | " Matches x0 -> x₀ A2 -> A₂ word2 -> word₂ 21 | " Use ms=s+1 to avoid concealing the letter before the number 22 | syntax match Normal '\v<[[:alpha:]_]+0>'ms=e conceal cchar=₀ 23 | syntax match Normal '\v<[[:alpha:]_]+1>'ms=e conceal cchar=₁ 24 | syntax match Normal '\v<[[:alpha:]_]+2>'ms=e conceal cchar=₂ 25 | syntax match Normal '\v<[[:alpha:]_]+3>'ms=e conceal cchar=₃ 26 | syntax match Normal '\v<[[:alpha:]_]+4>'ms=e conceal cchar=₄ 27 | syntax match Normal '\v<[[:alpha:]_]+5>'ms=e conceal cchar=₅ 28 | syntax match Normal '\v<[[:alpha:]_]+6>'ms=e conceal cchar=₆ 29 | syntax match Normal '\v<[[:alpha:]_]+7>'ms=e conceal cchar=₇ 30 | syntax match Normal '\v<[[:alpha:]_]+8>'ms=e conceal cchar=₈ 31 | syntax match Normal '\v<[[:alpha:]_]+9>'ms=e conceal cchar=₉ 32 | 33 | " Numbers 34 | syntax match Normal '\v[^_]\zs_0\ze>' conceal cchar=₀ 35 | syntax match Normal '\v[^_]\zs_1\ze>' conceal cchar=₁ 36 | syntax match Normal '\v[^_]\zs_2\ze>' conceal cchar=₂ 37 | syntax match Normal '\v[^_]\zs_3\ze>' conceal cchar=₃ 38 | syntax match Normal '\v[^_]\zs_4\ze>' conceal cchar=₄ 39 | syntax match Normal '\v[^_]\zs_5\ze>' conceal cchar=₅ 40 | syntax match Normal '\v[^_]\zs_6\ze>' conceal cchar=₆ 41 | syntax match Normal '\v[^_]\zs_7\ze>' conceal cchar=₇ 42 | syntax match Normal '\v[^_]\zs_8\ze>' conceal cchar=₈ 43 | syntax match Normal '\v[^_]\zs_9\ze>' conceal cchar=₉ 44 | " Letters 45 | syntax match Normal '\v[^_]\zs_[aA]\ze>' conceal cchar=ₐ 46 | syntax match Normal '\v[^_]\zs_[lL]\ze>' conceal cchar=ₗ 47 | syntax match Normal '\v[^_]\zs_[pP]\ze>' conceal cchar=ₚ 48 | syntax match Normal '\v[^_]\zs_[rR]\ze>' conceal cchar=ᵣ 49 | syntax match Normal '\v[^_]\zs_[sS]\ze>' conceal cchar=ₛ 50 | syntax match Normal '\v[^_]\zs_[uU]\ze>' conceal cchar=ᵤ 51 | syntax match Normal '\v[^_]\zs_[vV]\ze>' conceal cchar=ᵥ 52 | syntax match Normal '\v[^_]\zs_[xX]\ze>' conceal cchar=ₓ 53 | syntax match Normal '\v[^_]\zs_[hH]\ze>' conceal cchar=ₕ 54 | syntax match Normal '\v[^_]\zs_[iI]\ze>' conceal cchar=ᵢ 55 | syntax match Normal '\v[^_]\zs_[jJ]\ze>' conceal cchar=ⱼ 56 | syntax match Normal '\v[^_]\zs_[kK]\ze>' conceal cchar=ₖ 57 | syntax match Normal '\v[^_]\zs_[nN]\ze>' conceal cchar=ₙ 58 | syntax match Normal '\v[^_]\zs_[mM]\ze>' conceal cchar=ₘ 59 | syntax match Normal '\v[^_]\zs_[tT]\ze>' conceal cchar=ₜ 60 | 61 | " " Conceal underscores in numeric literals with commas 62 | " syntax match Constant '\v<\d+\zs_\ze\d+>' conceal cchar=, 63 | 64 | " Conceal things like a_ -> a' 65 | syntax match Normal '\v[^_]\zs_\ze>' conceal cchar=′ 66 | " Underscore by itself is not concealed 67 | syntax match Normal '\v<\zs_\ze>' conceal cchar=_ 68 | 69 | 70 | " Need to be handled specially for `not in` to work. Order doesn't matter. 71 | syntax match Normal '\v' conceal cchar=∉ 72 | syntax match Normal '\v' conceal cchar=∈ 73 | 74 | 75 | syntax match Normal '->' conceal cchar=→ 76 | syntax match Normal '<=' conceal cchar=≤ 77 | syntax match Normal '>=' conceal cchar=≥ 78 | 79 | syntax match Normal '\s@\s'ms=s+1,me=e-1 conceal cchar=⊗ 80 | syntax match Normal '\s\*\s'ms=s+1,me=e-1 conceal cchar=∙ 81 | " syntax match Normal '\v(\+|-|*|/|\%)@!\=' conceal cchar=← 82 | syntax match Normal '\v[^-=+*/]\zs\=\ze[^=]' conceal cchar=← 83 | syntax match Normal '\v\=@' conceal cchar=⌈ 91 | syntax match Normal '\v<((math|torch|np|tf|scipy|sp)\.)?floor>' conceal cchar=⌊ 92 | syntax match Normal '\v<((torch|np|tf|scipy|sp)\.)?(eye|identity)>' conceal cchar=𝕀 93 | syntax match Normal '\v<((math|np|scipy|sp)\.)e>' conceal cchar=ℯ 94 | syntax match Normal '\v<((math|np|scipy|sp)\.)?inf>' conceal cchar=∞ 95 | syntax match Normal "\v" conceal cchar=∞ 96 | syntax match Normal '\v' conceal cchar=∞ 97 | 98 | syntax match Normal '\v<((math|torch|np|tf|scipy|sp)\.)?pi>' conceal cchar=π 99 | syntax match Normal '\v<((torch|np|scipy|sp)\.mean)|(tf\.reduce_mean)>' conceal cchar=𝔼 100 | 101 | 102 | syntax match Normal '\v\zs ?\*\* ?2\ze>([^.]|$)' conceal cchar=² 103 | syntax match Normal '\v\zs ?\*\* ?n\ze>([^.]|$)' conceal cchar=ⁿ 104 | syntax match Normal '\v\zs ?\*\* ?i\ze>([^.]|$)' conceal cchar=ⁱ 105 | syntax match Normal '\v\zs ?\*\* ?j\ze>([^.]|$)' conceal cchar=ʲ 106 | syntax match Normal '\v\zs ?\*\* ?k\ze>([^.]|$)' conceal cchar=ᵏ 107 | syntax match Normal '\v\zs ?\*\* ?t\ze>([^.]|$)' conceal cchar=ᵗ 108 | syntax match Normal '\v\zs ?\*\* ?x\ze>([^.]|$)' conceal cchar=ˣ 109 | syntax match Normal '\v\zs ?\*\* ?y\ze>([^.]|$)' conceal cchar=ʸ 110 | syntax match Normal '\v\zs ?\*\* ?z\ze>([^.]|$)' conceal cchar=ᶻ 111 | syntax match Normal '\v\zs ?\*\* ?a\ze>([^.]|$)' conceal cchar=ᵃ 112 | syntax match Normal '\v\zs ?\*\* ?b\ze>([^.]|$)' conceal cchar=ᵇ 113 | syntax match Normal '\v\zs ?\*\* ?c\ze>([^.]|$)' conceal cchar=ᶜ 114 | syntax match Normal '\v\zs ?\*\* ?d\ze>([^.]|$)' conceal cchar=ᵈ 115 | syntax match Normal '\v\zs ?\*\* ?e\ze>([^.]|$)' conceal cchar=ᵉ 116 | syntax match Normal '\v\zs ?\*\* ?p\ze>([^.]|$)' conceal cchar=ᵖ 117 | syntax match Normal '\v\zs ?\*\* ?l\ze>([^.]|$)' conceal cchar=ˡ 118 | syntax match Normal '\v\zs ?\*\* ?m\ze>([^.]|$)' conceal cchar=ᵐ 119 | 120 | " no ending word boundary on parens 121 | syntax match Normal '\v\.t\(\)' conceal cchar=ᵀ 122 | syntax match Normal '\v\.T>' conceal cchar=ᵀ 123 | 124 | syntax match Normal '\v\.inverse\(\)' conceal cchar=⁻ 125 | 126 | syntax match Normal '\v\.reshape>'ms=s conceal cchar=♚ 127 | 128 | syntax match Normal '<<' conceal cchar=≺ 129 | syntax match Normal '>>' conceal cchar=≻ 130 | 131 | syntax keyword Normal alpha ALPHA conceal cchar=α 132 | syntax keyword Normal beta BETA conceal cchar=β 133 | syntax keyword Normal Gamma conceal cchar=Γ 134 | syntax keyword Normal gamma GAMMA conceal cchar=γ 135 | syntax keyword Normal Delta conceal cchar=Δ 136 | syntax keyword Normal delta DELTA conceal cchar=δ 137 | syntax keyword Normal epsilon EPSILON conceal cchar=ε 138 | syntax keyword Normal zeta ZETA conceal cchar=ζ 139 | syntax keyword Normal eta ETA conceal cchar=η 140 | syntax keyword Normal Theta conceal cchar=ϴ 141 | syntax keyword Normal theta THETA conceal cchar=θ 142 | syntax keyword Normal kappa KAPPA conceal cchar=κ 143 | syntax keyword Normal lambda LAMBDA lambda_ _lambda conceal cchar=λ 144 | syntax keyword Normal mu MU conceal cchar=μ 145 | syntax keyword Normal nu NU conceal cchar=ν 146 | syntax keyword Normal Xi conceal cchar=Ξ 147 | syntax keyword Normal xi XI conceal cchar=ξ 148 | syntax keyword Normal Pi conceal cchar=Π 149 | syntax keyword Normal rho RHO conceal cchar=ρ 150 | syntax keyword Normal sigma SIGMA conceal cchar=σ 151 | syntax keyword Normal tau TAU conceal cchar=τ 152 | syntax keyword Normal upsilon UPSILON conceal cchar=υ 153 | syntax keyword Normal Phi conceal cchar=Φ 154 | syntax keyword Normal phi PHI conceal cchar=φ 155 | syntax keyword Normal chi CHI conceal cchar=χ 156 | syntax keyword Normal Psi conceal cchar=Ψ 157 | syntax keyword Normal psi PSI conceal cchar=ψ 158 | syntax keyword Normal Omega conceal cchar=Ω 159 | syntax keyword Normal omega OMEGA conceal cchar=ω 160 | syntax keyword Normal nabla NABLA conceal cchar=∇ 161 | 162 | " like APL 163 | " Need to use `syntax match` instead of `syntax keyword` or else keyword takes 164 | " priority and `range(len...` isn't matched. 165 | syntax match Normal '\v' conceal cchar=⍳ 166 | syntax match Normal '\v<\zsrange\(len\ze\(' conceal cchar=⍳ 167 | syntax keyword Normal enumerate conceal cchar=↑ 168 | 169 | 170 | syntax keyword Constant None conceal cchar=∅ 171 | syntax keyword Constant True conceal cchar=⊤ 172 | syntax keyword Constant False conceal cchar=⊥ 173 | 174 | " http://www.fileformat.info/info/unicode/block/geometric_shapes/images.htm 175 | syntax keyword Keyword break conceal cchar=◁ 176 | syntax keyword Keyword continue conceal cchar=↻ 177 | syntax keyword Keyword return conceal cchar=◀ 178 | syntax keyword Keyword if conceal cchar=▸ 179 | syntax keyword Keyword elif conceal cchar=▹ 180 | syntax keyword Keyword else conceal cchar=▪ 181 | 182 | syntax keyword Normal for conceal cchar=∀ 183 | syntax keyword Normal while conceal cchar=⥁ 184 | 185 | syntax keyword Normal def conceal cchar=λ 186 | syntax keyword Normal class conceal cchar=※ 187 | " syntax keyword Keyword assert conceal cchar=‽ 188 | syntax match Keyword 'yield from' conceal cchar=⇄ 189 | syntax keyword Keyword yield conceal cchar=⇇ 190 | syntax match Normal '\v' conceal cchar=⚕ 191 | syntax match Normal '\v\.' conceal cchar=“ 192 | 193 | syntax keyword Type Vector conceal cchar=V 194 | syntax match Type '(np|scipy|sp)\.ndarray' conceal cchar=V 195 | syntax match Type '\vtf\.Tensor' conceal cchar=𝕋 196 | syntax match Type '\vtorch\.[tT]ensor' conceal cchar=𝕋 197 | syntax keyword Type tensor Tensor conceal cchar=𝕋 198 | syntax match Type '\v(torch|np|tf|scipy|sp)\.float(32|64)?' conceal cchar=ℝ 199 | syntax match Type '\v(torch|np|tf|scipy|sp)\.int(32|64)?' conceal cchar=ℤ 200 | 201 | " XXX These have to be after all the float{16,32} stuff to avoid accidental 202 | " capture. Use @! to ensure that type casts are not concealed, since that's 203 | " hard to read._ 204 | " 205 | " [^\s)] is to avoid the edge case of (x: int) where the right paren would 206 | " override the int conceal. 207 | syntax match Type '\v