proteome 0.2.0.0 → 0.2.1.0
raw patch · 8 files changed
+70/−9 lines, 8 filesnew-component:exe:proteomePVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
+ Ribosome.File: canonicalPath :: MonadIO m => FilePath -> m FilePath
+ Ribosome.File: canonicalPathWithHome :: FilePath -> FilePath -> FilePath
+ Ribosome.File: canonicalPaths :: MonadIO m => [FilePath] -> m [FilePath]
- Proteome.Data.Env: _errors :: HasEnv c_aqXr => Lens' c_aqXr Errors
+ Proteome.Data.Env: _errors :: HasEnv c_arh2 => Lens' c_arh2 Errors
- Proteome.Data.Env: _mainProject :: HasEnv c_aqXr => Lens' c_aqXr Project
+ Proteome.Data.Env: _mainProject :: HasEnv c_arh2 => Lens' c_arh2 Project
- Proteome.Data.Env: _projects :: HasEnv c_aqXr => Lens' c_aqXr [Project]
+ Proteome.Data.Env: _projects :: HasEnv c_arh2 => Lens' c_arh2 [Project]
- Proteome.Data.Project: _lang :: HasProject c_ankX => Lens' c_ankX (Maybe ProjectLang)
+ Proteome.Data.Project: _lang :: HasProject c_anEy => Lens' c_anEy (Maybe ProjectLang)
- Proteome.Data.Project: _meta :: HasProject c_ankX => Lens' c_ankX ProjectMetadata
+ Proteome.Data.Project: _meta :: HasProject c_anEy => Lens' c_anEy ProjectMetadata
Files
- README.md +5/−1
- lib/Proteome/Config.hs +1/−0
- lib/Proteome/Init.hs +14/−4
- lib/Proteome/Project/Resolve.hs +1/−1
- lib/Ribosome/File.hs +23/−0
- proteome.cabal +5/−3
- test/u/ResolveSpec.hs +20/−0
- test/u/SpecMain.hs +1/−0
README.md view
@@ -4,6 +4,10 @@ # Install -Use the [chromatin] plugin manager with the spec `hackage:proteome`.+Use the [chromatin] plugin manager with the spec `hackage:proteome`:++```vim+let g:chromatin_rplugins += [{ 'spec': 'hackage:proteome', 'name': 'proteome' }]+``` [chromatin]: https://github.com/tek/chromatin.nvim
lib/Proteome/Config.hs view
@@ -70,3 +70,4 @@ proReadConfig = do main <- Ribo.inspect Env.mainProject readConfig "project" main+ readConfig "project_after" main
lib/Proteome/Init.hs view
@@ -13,10 +13,13 @@ import Neovim.Context.Internal (Neovim) import UnliftIO.STM (TVar, newTVarIO) import Ribosome.Config.Settings (setting, settingE, updateSetting)-import Ribosome.Data.Ribo+import Ribosome.Data.Ribo (Ribo)+import qualified Ribosome.Data.Ribo as Ribo (inspect) import Ribosome.Data.Ribosome (Ribosome(Ribosome))+import Ribosome.File (canonicalPaths) import Ribosome.Internal.IO (retypeNeovim) import Proteome.Data.Env (Env(Env))+import qualified Proteome.Data.Env as Env (mainProject) import Proteome.Data.Proteome import Proteome.Data.Project ( Project(meta),@@ -26,6 +29,8 @@ ProjectMetadata(DirProject), ) import Proteome.Project.Resolve (resolveProject)+import Proteome.Config (readConfig)+import Proteome.Log import qualified Proteome.Settings as S pathData :: MonadIO m => Either String FilePath -> m (ProjectRoot, ProjectName, ProjectType)@@ -42,7 +47,7 @@ mainProject = do mainDir <- settingE S.mainProjectDir (root, name, tpe) <- pathData mainDir- baseDirs <- setting S.projectBaseDirs+ baseDirs <- (canonicalPaths <=< setting) S.projectBaseDirs -- typeDirs <- setting S.projectTypeDirs explicit <- setting S.projects config <- setting S.projectConfig@@ -63,6 +68,7 @@ initWithMain :: Project -> Ribo e Env initWithMain main = do+ debugS $ "initializing with main project: " ++ show main loadPersistedBuffers main setProjectVars (meta main) return $ Env main [] def@@ -79,7 +85,11 @@ newTVarIO env proteomeStage2 :: Proteome ()-proteomeStage2 = return ()+proteomeStage2 = do+ main <- Ribo.inspect Env.mainProject+ readConfig "project" main proteomeStage4 :: Proteome ()-proteomeStage4 = return ()+proteomeStage4 = do+ main <- Ribo.inspect Env.mainProject+ readConfig "project_after" main
lib/Proteome/Project/Resolve.hs view
@@ -40,7 +40,7 @@ byProjectTypeName specs name tpe = find (hasProjectTypeName tpe name) specs byProjectBases :: [FilePath] -> ProjectRoot -> Bool-byProjectBases baseDirs (ProjectRoot root) = elem ((takeDirectory . takeDirectory) root) baseDirs+byProjectBases baseDirs (ProjectRoot root) = (takeDirectory . takeDirectory) root `elem` baseDirs virtualProject :: ProjectName -> Project virtualProject name = Project (VirtualProject name) [] Nothing []
+ lib/Ribosome/File.hs view
@@ -0,0 +1,23 @@+module Ribosome.File(+ canonicalPathWithHome,+ canonicalPath,+ canonicalPaths,+) where++import Control.Monad.IO.Class (MonadIO, liftIO)+import Data.String.Utils (replace)+import System.Directory (getHomeDirectory, canonicalizePath)++canonicalPathWithHome :: FilePath -> FilePath -> FilePath+canonicalPathWithHome = replace "~"++canonicalPath :: MonadIO m => FilePath -> m FilePath+canonicalPath path = do+ home <- liftIO getHomeDirectory+ return $ canonicalPathWithHome home path++canonicalPaths :: MonadIO m => [FilePath] -> m [FilePath]+canonicalPaths paths = do+ home <- liftIO getHomeDirectory+ let withHome = fmap (canonicalPathWithHome home) paths+ liftIO $ mapM canonicalizePath withHome
proteome.cabal view
@@ -4,10 +4,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: aeb4f9fc4dda14d1efb906445e7ff9e84fd39b5cf2bcf984c395b23c604c14fb+-- hash: f32ec9d6b642269ce47df16a64625c3790d331489866939c1d0b07b3a38bc26d name: proteome-version: 0.2.0.0+version: 0.2.1.0 synopsis: neovim project manager description: Please see the README on GitHub at <https://github.com/tek/proteome-hs> category: Neovim@@ -51,6 +51,7 @@ Ribosome.Data.Maybe Ribosome.Data.Ribo Ribosome.Data.Ribosome+ Ribosome.File Ribosome.Internal.IO Ribosome.Internal.NvimObject Ribosome.Log@@ -90,7 +91,7 @@ , utf8-string default-language: Haskell2010 -executable proteome-exe+executable proteome main-is: Main.hs other-modules: Paths_proteome@@ -170,6 +171,7 @@ main-is: SpecMain.hs other-modules: Config+ ResolveSpec TagsSpec Paths_proteome hs-source-dirs:
+ test/u/ResolveSpec.hs view
@@ -0,0 +1,20 @@+{-# OPTIONS_GHC -F -pgmF htfpp #-}++module ResolveSpec(+ htf_thisModulesTests+) where++import Test.Framework+import Ribosome.File (canonicalPaths)++paths :: [FilePath]+paths = [+ "~/../test/dir",+ "~"+ ]++test_canonicalPaths :: IO ()+test_canonicalPaths = do+ canon <- canonicalPaths paths+ print canon+ assertNotEqual canon paths
test/u/SpecMain.hs view
@@ -3,6 +3,7 @@ module Main where import {-@ HTF_TESTS @-} TagsSpec+import {-@ HTF_TESTS @-} ResolveSpec import Test.Framework import Test.Framework.BlackBoxTest ()