<?xml version="1.0" encoding="UTF-8"?>
<codesense>
	
	<!-- Keywords -->
	<!-- If needs its own lookup because it can be the ternary operator inline -->
	<provider>
		<selector>python, python *:not(string,string *,comment)</selector>
		<completions>com.macrabbit.python.keywords.block-forms</completions>
		<complete-match capture="1">^\s*([ifelsIFELS]*)</complete-match>
	</provider>
	<provider>
		<selector>python, python *:not(string,string *,comment)</selector>
		<completions>com.macrabbit.python.keywords.control</completions>
		<complete-match>(?&lt;!\.|\[|\(|,)\b[a-zA-Z]*</complete-match>
	</provider>
	<provider>
		<selector>python, python *:not(string,string *,comment)</selector>
		<completions>com.macrabbit.python.keywords</completions>
		<complete-match>(?&lt;!\.)\b[a-zA-Z]*</complete-match>
	</provider>
	
	<!-- Built-in Functions -->
	<provider>
		<selector>python, python *:not(string,string *,comment)</selector>
		<completions>com.macrabbit.python.builtin.functions</completions>
		<complete-match>(?&lt;!\.)\b[a-zA-Z_]*</complete-match>
	</provider>
	
	<!-- Common Built-in Methods -->
	<provider>
		<selector>python, python *:not(string,string *,comment)</selector>
		<completions>com.macrabbit.python.builtin.methods</completions>
		<complete-match capture="1">\.([a-zA-Z_]+)</complete-match>
	</provider>
	
	<!-- Exceptions -->
	<provider>
		<selector>python, python *:not(string,string *,comment)</selector>
		<completions>com.macrabbit.python.exceptions</completions>
		<complete-match capture="1">(?:class\s+[a-zA-Z0-9_]+\([a-zA-Z0-9_,\s.]*?|(?:except|raise)\s+)(\b[a-zA-Z]*)</complete-match>
	</provider>
	
</codesense>