module Ribosome.Api.Tabpage where import Ribosome.Control.Monad.Ribo (NvimE) import Ribosome.Nvim.Api.Data (Tabpage) import Ribosome.Nvim.Api.IO (nvimTabpageGetNumber, tabpageIsValid, vimCommand) closeTabpage :: NvimE e m => Tabpage -> m () closeTabpage :: Tabpage -> m () closeTabpage Tabpage tabpage = do Bool valid <- Tabpage -> m Bool forall (m :: * -> *) e. (Nvim m, MonadDeepError e RpcError m) => Tabpage -> m Bool tabpageIsValid Tabpage tabpage Bool -> m () -> m () forall (f :: * -> *). Applicative f => Bool -> f () -> f () when Bool valid (m () -> m ()) -> m () -> m () forall a b. (a -> b) -> a -> b $ do Int number <- Tabpage -> m Int forall (m :: * -> *) e. (Nvim m, MonadDeepError e RpcError m) => Tabpage -> m Int nvimTabpageGetNumber Tabpage tabpage Text -> m () forall (m :: * -> *) e. (Nvim m, MonadDeepError e RpcError m) => Text -> m () vimCommand (Text "silent! tabclose! " Text -> Text -> Text forall a. Semigroup a => a -> a -> a <> Int -> Text forall b a. (Show a, IsString b) => a -> b show Int number)