let g:IPAOn=0

function! ToggleIPA()
	if !g:IPAOn
		call IPA()
	else
		cal IPAOff()
	endif
endfunction

function! IPA()
	echo "IPA macros activated"
	let g:IPAOn=1
	imap ;nn ɲ̊
	imap ;gn ɲ
	imap ;ng ŋ
	imap ;' ʔ
	imap ;sh ʃ
	imap ;zh ʒ
	imap ;xi ɕ
	imap ;zi ʑ
	imap ;ph ɸ
	imap ;bh β
	imap ;th θ
	imap ;dh ð
	imap ;cc ç
	imap ;jj ʝ
	imap ;gh ɣ
	imap ;xx χ
	imap ;fr ʁ
	imap ;HH ħ
	imap ;hh ɦ
	imap ;vv ʋ
	imap ;er ɹ
	imap ;fl ɾ
	imap ;bb ʙ
	imap ;ih ɨ
	imap ;ii ɪ
	imap ;eu ɯ̽
	imap ;uu ʊ
	imap ;uh ə
	imap ;eh ɛ
	imap ;oe œ
	imap ;au ɔ
	imap ;ae æ
	imap ;aa ɐ
	imap ;OE ɶ
	imap ;ah ɑ
	imap ;ba ɒ
endfunction

function! IPAOff()
	echo "IPA macros off."
	let g:IPAOn=0
	iunmap ;nn
	iunmap ;gn
	iunmap ;ng
	iunmap ;'
	iunmap ;sh
	iunmap ;zh
	iunmap ;xi
	iunmap ;zi
	iunmap ;ph
	iunmap ;bh
	iunmap ;th
	iunmap ;dh
	iunmap ;cc
	iunmap ;jj
	iunmap ;gh
	iunmap ;xx
	iunmap ;fr
	iunmap ;HH
	iunmap ;hh
	iunmap ;vv
	iunmap ;er
	iunmap ;fl
	iunmap ;bb
	iunmap ;ih
	iunmap ;ii
	iunmap ;eu
	iunmap ;uu
	iunmap ;uh
	iunmap ;eh
	iunmap ;oe
	iunmap ;au
	iunmap ;ae
	iunmap ;aa
	iunmap ;OE
	iunmap ;ah
	iunmap ;ba
endfunction

" As of yet unimplemented:
"b̪
"t̼
"d̼
"ʈ
"ɖ
"ɟ
"ɡ
"ɢ
"ʡ
"ʂ
"ʐ
"θ̼
"ð̼
"θ̠
"ð̠
"ɹ̠̊
"ɹ̠
"ɻ
"ʕ
"ʢ
"ʋ̥
"ɹ̥
"ɻ̊
"ɻ
"j̊
"ɰ̊
"ɰ
"ʔ̞
"ⱱ̟
"ⱱ
"ɾ̼
"ɾ̥
"ɽ̊
"ɽ
"ɢ̆
"ʡ̮
"ʙ̥
"r̼
"r̥
"ɽ̊
"ɽ
"ʀ̥
"ʀ
"ʜ
"ʢ
"ɬ
"ɮ
"ɭ̊
"ʎ̥
"ʎ̝
"ʟ̝̊
"ʟ̝
"l̥
"ɭ̊
"ɭ
"ʎ̥
"ʎ
"ʟ̥
"ʟ
"ʟ̠
"ɺ
"ɺ̢
"ʎ̮
"ʟ̆
"ʉ
"ɯ
"ʏ
"ɪ̈
"ʊ̈
"ø
"ɘ
"ɵ
"ɤ
"e̞
"ø̞
"ɵ̞
"ɤ̞
"o̞
"ɜ
"ɞ
"ʌ
"ɞ̞
"ä
"ɒ̈
"m̥
"ɱ
"n̼
"n̥
"ɳ̊
"ɳ
"ŋ̊
"ɴ
"p̪