Commit 6f0f345a authored by Dom Sekotill's avatar Dom Sekotill
Browse files

Overload vim toggleterm expand() with specific win

When calling kodo#toggleterm#Terminal.expand() the optional first
argument can now be either a boolean (as old behaviour) or a window ID,
in which case the terminal is expanded in that window.
parent 2bf4ba73
Loading
Loading
Loading
Loading
+18 −10
Original line number Diff line number Diff line
@@ -17,32 +17,40 @@ function! kodo#toggleterm#Terminal(new_win, ...)
	\                                      [ &shell, '-c', string(cmd) ]

	" Expand (show) the terminal, optionally in a new window
	"
	" Terminal.expand(window: window-ID)
	" Terminal.expand(new_win: bool = self.new_win)
	"
	" If a new window is requested it is opened by spliting, which obeys the […] 
	" and […] settings.
	function term.expand(...)
		let origin_buffer = bufnr('')
		if self.buffer == v:null
			call self.open()
		endif
		if self.window != v:null
			call self.collapse()
		endif
		let new_win = get(a:, 1, self.new_win)
		let self.was_new = new_win

		let window = get(a:, 1, self.new_win)
		if type(window) == v:t_bool
			let new_win = window
		elseif !win_gotoid(window)
			echoerr "Toggle-terminal window not found, ignoring"
			return
		else
			let new_win = v:false
		endif

		let self.origin_buffer = new_win ? v:null : bufnr('')

		if new_win
			" Open and switch to a new window
			silent execute 'sbuffer +startinsert' self.buffer
			" let b:toggle_term = self
			" augroup toggleterm
			" 	au! WinLeave <buffer>
			" 	au WinLeave <buffer> call b:toggle_term.collapse()
			" augroup END
		else
			silent execute 'buffer +startinsert' self.buffer
		endif

		let self.window = win_getid()
		let self.origin_buffer = new_win ? v:null : origin_buffer
		let self.was_new = new_win

		augroup toggleterm
			au! BufLeave <buffer>