packages feed

proteome 0.3.10.0 → 0.3.11.0

raw patch · 10 files changed

+181/−27 lines, 10 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

+ Proteome.BufEnter: bufEnter :: Proteome ()
+ Proteome.Project: allProjects :: Proteome [Project]
+ Ribosome.Api.Buffer: buflisted :: Buffer -> Neovim e Bool
- Proteome.Data.Env: _errors :: HasEnv c_atAB => Lens' c_atAB Errors
+ Proteome.Data.Env: _errors :: HasEnv c_atF8 => Lens' c_atF8 Errors
- Proteome.Data.Env: _mainProject :: HasEnv c_atAB => Lens' c_atAB Project
+ Proteome.Data.Env: _mainProject :: HasEnv c_atF8 => Lens' c_atF8 Project
- Proteome.Data.Env: _projects :: HasEnv c_atAB => Lens' c_atAB [Project]
+ Proteome.Data.Env: _projects :: HasEnv c_atF8 => Lens' c_atF8 [Project]
- Proteome.Data.Project: _lang :: HasProject c_apZV => Lens' c_apZV (Maybe ProjectLang)
+ Proteome.Data.Project: _lang :: HasProject c_aq4s => Lens' c_aq4s (Maybe ProjectLang)
- Proteome.Data.Project: _meta :: HasProject c_apZV => Lens' c_apZV ProjectMetadata
+ Proteome.Data.Project: _meta :: HasProject c_aq4s => Lens' c_aq4s ProjectMetadata

Files

+ lib/Proteome/BufEnter.hs view
@@ -0,0 +1,30 @@+module Proteome.BufEnter(+  bufEnter,+) where++import Data.List (intercalate)+import Data.Maybe (maybeToList)+import System.FilePath ((</>))+import Neovim (buffer_set_option', Neovim, vim_get_current_buffer', toObject)+import Ribosome.Config.Setting (setting)+import Proteome.Data.Proteome (Proteome)+import Proteome.Data.Project (Project(Project), ProjectMetadata(DirProject), ProjectRoot(ProjectRoot))+import Proteome.Project (allProjects)+import Proteome.Settings (tagsFileName)++setBufferTags :: [String] -> Neovim e ()+setBufferTags tags = do+  buf <- vim_get_current_buffer'+  buffer_set_option' buf "tags" (toObject $ intercalate "," tags)++projectRoot :: Project -> Maybe FilePath+projectRoot (Project (DirProject _ (ProjectRoot root) _) _ _ _) = Just root+projectRoot _ = Nothing++bufEnter :: Proteome ()+bufEnter = do+  pros <- allProjects+  name <- setting tagsFileName+  let roots = pros >>= maybeToList . projectRoot+  let tags = fmap (</> name) roots+  setBufferTags tags
lib/Proteome/PersistBuffers.hs view
@@ -15,7 +15,7 @@ import System.Directory (doesFileExist) import System.FilePath ((</>)) import Neovim (vim_get_current_buffer', vim_get_buffers', buffer_get_name', vim_command')-import Ribosome.Api.Buffer (edit)+import Ribosome.Api.Buffer (edit, buflisted) import Ribosome.Persist (persistStore, persistLoad) import Ribosome.Data.Ribo (lockOrSkip) import Proteome.Data.Proteome (Proteome)@@ -52,7 +52,7 @@   activeName <- buffer_get_name' active   activeIsFile <- liftIO $ doesFileExist activeName   let current' = if activeIsFile then Just activeName else Nothing-  all' <- vim_get_buffers' >>= traverse buffer_get_name'+  all' <- vim_get_buffers' >>= filterM buflisted >>= traverse buffer_get_name'   files <- liftIO $ filterM doesFileExist all'   persistStore (path </> "buffers") (PersistBuffers current' files) 
lib/Proteome/Plugin.hs view
@@ -1,12 +1,25 @@ {-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE OverloadedStrings #-}  module Proteome.Plugin(   plugin, ) where +import Data.Default.Class (Default(def)) import UnliftIO.STM (TVar)-import Neovim (Plugin(..), function', Neovim, StartupConfig, NeovimConfig, NeovimPlugin, Synchronous(..), wrapPlugin)+import Neovim (+  Plugin(..),+  function',+  autocmd,+  Neovim,+  StartupConfig,+  NeovimConfig,+  NeovimPlugin,+  Synchronous(..),+  wrapPlugin,+  acmdGroup+  ) import Ribosome.Data.Ribosome (Ribosome, newRibosome) import Proteome.Init (proteomePoll, proteomeStage1, proteomeStage2, proteomeStage4, initialize) import Proteome.Data.Env (Env)@@ -14,6 +27,7 @@ import Proteome.Config (proReadConfig) import Proteome.Tags (proTags) import Proteome.Save (proSave)+import Proteome.BufEnter (bufEnter)  plugin' :: Ribosome (TVar Env) -> Plugin (Ribosome (TVar Env)) plugin' env =@@ -27,7 +41,8 @@       $(function' 'proAdd) Async,       $(function' 'proSave) Async,       $(function' 'proTags) Async,-      $(function' 'proReadConfig) Sync+      $(function' 'proReadConfig) Sync,+      $(autocmd 'bufEnter) "BufEnter" def { acmdGroup = Just "proteome" }     ]   } 
+ lib/Proteome/Project.hs view
@@ -0,0 +1,14 @@+module Proteome.Project(+  allProjects,+) where++import qualified Ribosome.Data.Ribo as Ribo (inspect)+import Proteome.Data.Proteome (Proteome)+import Proteome.Data.Project (Project)+import Proteome.Data.Env (Env(mainProject, projects))++allProjects :: Proteome [Project]+allProjects = do+  main <- Ribo.inspect mainProject+  extra <- Ribo.inspect projects+  return $ main : extra
lib/Ribosome/Api/Buffer.hs view
@@ -1,9 +1,19 @@ module Ribosome.Api.Buffer(   edit,+  buflisted, ) where -import Neovim (vim_command')+import Neovim (Neovim, vim_command', Buffer, NvimObject(..), vim_call_function', Object, buffer_get_number') import Ribosome.Data.Ribo (Ribo)  edit :: FilePath -> Ribo e () edit path = vim_command' $ "silent! edit " ++ path++nvimCallBool :: String -> [Object] -> Neovim e Bool+nvimCallBool fun args =+  vim_call_function' fun args >>= fromObject'++buflisted :: Buffer -> Neovim e Bool+buflisted buf = do+  num <- buffer_get_number' buf+  nvimCallBool "buflisted" [toObject num]
proteome.cabal view
@@ -4,10 +4,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: 5fba2c152bddc90f0d4e9642ee33b0cd2b1591db5f4aec89a3d3558ef9c00e17+-- hash: d351a462fd991c12f14990526d369c7f0c7e0497ef67def82fa7175b6b2a1f82  name:           proteome-version:        0.3.10.0+version:        0.3.11.0 synopsis:       neovim project manager description:    Please see the README on GitHub at <https://github.com/tek/proteome-hs> category:       Neovim@@ -29,6 +29,7 @@ library   exposed-modules:       Proteome.Add+      Proteome.BufEnter       Proteome.Config       Proteome.Data.AddOptions       Proteome.Data.Env@@ -40,6 +41,7 @@       Proteome.Log       Proteome.PersistBuffers       Proteome.Plugin+      Proteome.Project       Proteome.Project.Resolve       Proteome.Save       Proteome.Settings@@ -190,8 +192,10 @@   other-modules:       AddSpec       Config+      MultiSpec       PersistLoadSpec       PersistStoreSpec+      Project       ResolveSpec       TagsSpec       Paths_proteome
test/u/AddSpec.hs view
@@ -15,9 +15,6 @@ import Proteome.Data.Env (projects) import Proteome.Data.AddOptions (AddOptions(AddOptions)) import Proteome.Data.Project (-  ProjectName(ProjectName),-  ProjectType(ProjectType),-  ProjectLang(ProjectLang),   ProjectRoot(ProjectRoot),   ProjectMetadata(DirProject),   Project(Project),@@ -25,30 +22,16 @@ import qualified Proteome.Settings as S (projectBaseDirs) import Proteome.Test.Unit (specWithDef) import Config (vars)--flag :: String-flag = "flagellum"--hask :: String-hask = "haskell"--n :: ProjectName-n = ProjectName flag--tp :: ProjectType-tp = ProjectType hask--l :: ProjectLang-l = ProjectLang hask+import Project (flag, hask, fn, tp, l)  addSpec :: Proteome () addSpec = do   projectsDir <- fixture "projects"   updateSetting S.projectBaseDirs [projectsDir]-  proAdd $ AddOptions n tp+  proAdd $ AddOptions fn tp   ps <- Ribo.inspect projects   let root = projectsDir </> hask </> flag-  liftIO $ assertEqual [Project (DirProject n (ProjectRoot root) (Just tp)) [] (Just l) []] ps+  liftIO $ assertEqual [Project (DirProject fn (ProjectRoot root) (Just tp)) [] (Just l) []] ps  test_add :: IO () test_add = vars >>= specWithDef addSpec
+ test/u/MultiSpec.hs view
@@ -0,0 +1,49 @@+{-# OPTIONS_GHC -F -pgmF htfpp #-}++module MultiSpec(+  htf_thisModulesTests+) where++import Control.Monad.IO.Class (liftIO)+import System.FilePath ((</>))+import System.Directory (doesFileExist)+import Test.Framework+import Neovim (fromObject', vim_get_current_buffer', buffer_get_option')+import Ribosome.Config.Setting (updateSetting)+import Ribosome.Test.Unit (tempDir)+import Proteome.Data.Proteome (Proteome)+import Proteome.Add (proAdd)+import Proteome.Data.AddOptions (AddOptions(AddOptions))+import qualified Proteome.Settings as S (projectBaseDirs)+import Proteome.Tags (proTags)+import Proteome.Test.Unit (specWithDef)+import Proteome.BufEnter (bufEnter)+import qualified Proteome.Settings as PS (tagsCommand, tagsArgs, tagsFork)+import Config (vars)+import Project (flag, cil, hask, cn, fn, tp, createTestProject)++multiSpec :: Proteome ()+multiSpec = do+  projectsDir <- tempDir "multi/projects"+  updateSetting S.projectBaseDirs [projectsDir]+  createTestProject tp fn+  createTestProject tp cn+  updateSetting PS.tagsCommand "touch"+  updateSetting PS.tagsArgs ".tags"+  updateSetting PS.tagsFork False+  proAdd $ AddOptions fn tp+  proAdd $ AddOptions cn tp+  proTags+  bufEnter+  let ftags = projectsDir </> hask </> flag </> ".tags"+  let ctags = projectsDir </> hask </> cil </> ".tags"+  ftagsExists <- liftIO $ doesFileExist ftags+  ctagsExists <- liftIO $ doesFileExist ctags+  buf <- vim_get_current_buffer'+  tags <- buffer_get_option' buf "tags" >>= fromObject'+  liftIO $ assertEqual ftagsExists True+  liftIO $ assertEqual ctagsExists True+  liftIO $ assertEqual (ftags ++ "," ++ ctags) tags++test_multi :: IO ()+test_multi = vars >>= specWithDef multiSpec
+ test/u/Project.hs view
@@ -0,0 +1,48 @@+module Project(+  flag,+  hask,+  cn,+  tp,+  l,+  fn,+  cil,+  createTestProject,+) where++import Control.Monad.IO.Class (liftIO)+import System.FilePath ((</>))+import System.Directory (createDirectoryIfMissing)+import Ribosome.Config.Setting (setting)+import Ribosome.Data.Ribo (Ribo)+import qualified Proteome.Settings as S (projectBaseDirs)+import Proteome.Data.Project (+  ProjectName(ProjectName),+  ProjectType(ProjectType),+  ProjectLang(ProjectLang),+  )++flag :: String+flag = "flagellum"++hask :: String+hask = "haskell"++cil :: String+cil = "cilia"++fn :: ProjectName+fn = ProjectName flag++cn :: ProjectName+cn = ProjectName cil++tp :: ProjectType+tp = ProjectType hask++l :: ProjectLang+l = ProjectLang hask++createTestProject :: ProjectType -> ProjectName -> Ribo e ()+createTestProject (ProjectType tpe) (ProjectName name) = do+  bases <- setting S.projectBaseDirs+  liftIO $ createDirectoryIfMissing True (head bases </> tpe </> name)
test/u/SpecMain.hs view
@@ -7,6 +7,7 @@ import {-@ HTF_TESTS @-} PersistLoadSpec import {-@ HTF_TESTS @-} PersistStoreSpec import {-@ HTF_TESTS @-} AddSpec+import {-@ HTF_TESTS @-} MultiSpec import Test.Framework import Test.Framework.BlackBoxTest ()