+
    TBiP                         R t ^ RIt^ RIHt ^ RIHtHtHtHtHtH	t	 ^ RI
Ht ^ RIHtHtHtHtHtHtHtHtHt . ROt ! R	 R]4      t ! R
 R]4      t ! R R]4      tR# )z
pygments.lexers.textedit
~~~~~~~~~~~~~~~~~~~~~~~~

Lexers for languages related to text processing.

:copyright: Copyright 2006-2025 by the Pygments team, see AUTHORS.
:license: BSD, see LICENSE for details.
N)bisect)
RegexLexerbygroupsdefaultincludethisusing)PythonLexer)	CommentKeywordNameNumberOperatorPunctuationStringText
WhitespaceAwkLexerSedLexerVimLexerc                      ] tR t^tRtRt. R!OtR.tR.tRt	Rt
RR]3R	]P                  3.R
]! R4      R]P                   R3R]R"3]! R4      .RR]R3.RR]R
3]! R4      R]R
3R]R
3R]3R]R
3R]P*                  R
3R]P,                  3R]P0                  3R]P2                  3R]P6                  3R]P8                  3R]P:                  3R]P<                  3R]P                  3./tRt R # )#r   z
For Awk scripts.
Awkz*.awkzapplication/x-awkz!https://en.wikipedia.org/wiki/AWKz1.5commentsandwhitespace\s+#.*$slashstartsregexz(/(\\.|[^[/\\\n]|\[(\\.|[^\]\\\n])*])+/\B#popz(?=/)badregexz\nrootz	^(?=\s|/)z8\+\+|--|\|\||&&|in\b|\$|!?~|\?|:|(\*\*|[-<>+*%\^/!=|])=?z[{(\[;,]z[})\].]z3(break|continue|do|while|exit|for|if|else|return)\bz
function\bz(atan2|cos|exp|int|log|rand|sin|sqrt|srand|gensub|gsub|index|length|match|split|sprintf|sub|substr|tolower|toupper|close|fflush|getline|next|nextfile|print|printf|strftime|systime|delete|system)\bz(ARGC|ARGIND|ARGV|BEGIN|CONVFMT|ENVIRON|END|ERRNO|FIELDWIDTHS|FILENAME|FNR|FS|IGNORECASE|NF|NR|OFMT|OFS|ORFS|RLENGTH|RS|RSTART|RT|SUBSEP)\bz[$a-zA-Z_]\w*z%[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?z0x[0-9a-fA-F]+[0-9]+z"(\\\\|\\[^\\]|[^"\\])*"z'(\\\\|\\[^\\]|[^'\\])*' N)awkgawkmawknawk)r   r   )!__name__
__module____qualname____firstlineno____doc__namealiases	filenames	mimetypesurlversion_addedr   r
   Singler   r   Regexr   r   r   r   DeclarationReservedr   BuiltinOtherr   FloatHexIntegerDoubletokens__static_attributes__r        =/usr/lib/python3.14/site-packages/pygments/lexers/textedit.pyr   r      so    D-G	I$%I
-CM 	 TNgnn%"
 	+,LL&*t12FO
 	D&!
 	4!34+,()13EG+'9:%"$68G//1CD! #*"2"24$%)\\3 tzz*5v||D

+'(&--8(&--8-
'Fr<   c                      ] tR t^LtRtRt. ROtRR.tR.tRt	Rt
]P                  tRtR	R
]3R]P"                  3R]P&                  3R]3R]3R]3R]! ]]P"                  4      3R]! ]]P2                  4      3R]! ]]P&                  4      3R],           R,           ]! ]]P4                  ]4      3R],           R,           ]! ]R]P4                  ]4      3R],           R,           ],           R,           ]! ]]]P"                  ]]P"                  ]4      3R],           R,           ],           R,           ]! ]]]P4                  ]]P"                  ]]4      3./tRtR# )r   z
Lexer for Sed script files.
Sedz*.sedz	*.[gs]sedz
text/x-sedz!https://en.wikipedia.org/wiki/Sed z.((?:(?:\\[^\n]|[^\\])*?\\\n)*?(?:\\.|[^\\])*?)r   r   r   r   z\$z[{};,!]z[dDFgGhHlnNpPqQxz=]z([berRtTvwW:])([^;\n]*)z"([aci])((?:.*?\\\n)*(?:.*?[^\\]$))z([qQ])([0-9]*)z(/)z(\\(.))z(\2)Nz(y)(.)z(s)(.)z(\2)((?:[gpeIiMm]|[0-9])*)r    )sedgsedssed)r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   re	MULTILINEflags_inside_delimsr   r
   r0   r   r8   r   r   r   r   r   r9   r1   r:   r;   r    r<   r=   r   r   L   s{    D%G+&II
-CMLLE GN 	Z gnn%'H%#W-''6==)IJ2HWfmm4TU&.. ABn$v-xV\\S^/_`.(72k4{CE''1NBWLg{FMM;Wbce''1NBEbbg{FLL+v}}Va 
Fr<   c                     a  ] tR t^qt o RtRtR.t. ROtR.tRt	Rt
]P                  tRtRR	],           R
,           ]! ]! ]4      ]]]]]]! ]4      ]4      3R	],           R,           ]! ]! ]4      ]]]! ]4      4      3R]3R]3R]P0                  3R]P2                  3R]P4                  3R]3R]3R]P8                  3R]3R]3R]3R]P>                  3R]P@                  3R]3./t!R t"R t#R t$Rt%V t&R# ) r   z
Lexer for VimL script files.
VimLvimz
text/x-vimzhttps://www.vim.orgz0.8zpy(?:t(?:h(?:o(?:n)?)?)?)?r   z^([ \t:]*)(z()([ \t]*)(<<)([ \t]*)(.*)((?:\n|.)*)(\6)z)([ \t])(.*)z^\s*".*z[ \t]+z!/[^/\\\n]*(?:\\[\s\S][^/\\\n]*)*/z!"[^"\\\n]*(?:\\[\s\S][^"\\\n]*)*"z'[^\n']*(?:''[^\n']*)*'z(?<=\s)"[^\-:.%#=*].*z-?\d+z#[0-9a-f]{6}z^:z[()<>+=!|,~-]z7\b(let|if|else|endif|elseif|fun|function|endfunction)\bz+\b(NONE|bold|italic|underline|dark|light)\bz\b\w+\b.c                l    ^ RI HpHpHp W0n        W@n        W n        \        P                  ! V 3/ VB  R# )    )autocommandoptionN)	pygments.lexers._vim_builtinsrN   rO   rP   _cmd_opt_autr   __init__)selfoptionsrN   rO   rP   s   &,   r=   rU   VimLexer.__init__   s*    GG			D,G,r<   c                   \        W!34      pV^ 8  de   W#^,
          ,          ^ ,          VR\        W#^,
          ,          ^ ,          4       8X  d*   W#^,
          ,          ^,          R\        V4       V8X  d   R# V\        V4      8  dR   W#,          ^ ,          VR\        W#,          ^ ,          4       8H  ;'       d    W#,          ^,          R\        V4       V8H  # R# )a  
It's kind of difficult to decide if something might be a keyword
in VimL because it allows you to abbreviate them.  In fact,
'ab[breviate]' is a good example.  :ab, :abbre, or :abbreviate are
valid ways to call it so rather than making really awful regexps
like::

    \bab(?:b(?:r(?:e(?:v(?:i(?:a(?:t(?:e)?)?)?)?)?)?)?)?\b

we match `\b\w+\b` and then call is_in() on those tokens.  See
`scripts/get_vimkw.py` for how the lists are extracted.
NTF)r   len)rV   wmappingps   &&& r=   is_inVimLexer.is_in   s     7D!q5s|A!$9S1a%9"::s|AwA'1,s7|:a=A&9s7:a='9$:: , ,
1gs1v&!+,r<   c              #    "   \         P                  ! W4       F  w  r#pV\        P                  J d   V P	                  W@P
                  4      '       d   V\        V3x  KH  V P	                  W@P                  4      '       g"   V P	                  W@P                  4      '       d   V\        P                  V3x  K  V\        V3x  K  W#V3x  K  	  R # 5i)N)r   get_tokens_unprocessedr   r5   r^   rR   r   rS   rT   r4   r   )rV   textindextokenvalues   &&   r=   ra   VimLexer.get_tokens_unprocessed   s     
 11$=  E%

"::eYY//%//ZZyy11

5))44u44u,,E)) >s   CC)rT   rR   rS   N)	z*.vimz.vimrcz.exrcz.gvimrc_vimrc_exrc_gvimrcvimrcgvimrc)'r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   rD   rE   rF   _pythonr   r   r   r   r   r   r	   r
   r   r1   r9   r0   r   r7   r   r   r4   r5   r:   rU   r^   ra   r;   __classdictcell__)__classdict__s   @r=   r   r   q   sS     DgGBII
CMLLE+G 	g%(SSeDk7D(D$K($01 g%7eDk7D%2DEG !16<<@16==A'7 &w/vfjj)K {+G;T\\J$4L3
F<-.* *r<   )r   r   r   )r)   rD   r   pygments.lexerr   r   r   r   r   r   pygments.lexers.pythonr	   pygments.tokenr
   r   r   r   r   r   r   r   r   __all__r   r   r   r    r<   r=   <module>rs      sY    
  N N .* * * /3z 3l#z #J\*z \*r<   