proteome 0.3.5.0 → 0.3.6.0
raw patch · 3 files changed
+25/−14 lines, 3 files
Files
- lib/Proteome/Tags.hs +21/−10
- proteome.cabal +2/−2
- test/u/TagsSpec.hs +2/−2
lib/Proteome/Tags.hs view
@@ -8,6 +8,7 @@ import Control.Monad (when) import Control.Monad.IO.Class (liftIO) import Control.Lens (over)+import Data.Foldable (traverse_) import Data.List (intercalate) import qualified Data.Map.Strict as Map (adjust) import Data.Maybe (maybeToList)@@ -20,7 +21,7 @@ import qualified Ribosome.Data.Ribo as Ribo (inspect, modify) import Ribosome.Data.Errors (Errors(Errors), Error(Error), ComponentName(ComponentName)) import Ribosome.Internal.IO (forkNeovim)-import Proteome.Data.Env (Env(mainProject))+import Proteome.Data.Env (Env(mainProject, projects)) import qualified Proteome.Data.Env as Env (_errors) import Proteome.Data.Proteome (Proteome) import Proteome.Data.Project (@@ -31,6 +32,7 @@ langOrType, ) import qualified Proteome.Settings as S (tagsCommand, tagsArgs, tagsFork, tagsFileName)+import Proteome.Log replaceFormatItem :: String -> (String, String) -> String replaceFormatItem original (placeholder, replacement) =@@ -42,7 +44,7 @@ where formats = [ ("langsComma", intercalate "," $ fmap (\(ProjectLang l) -> l) langs),- ("tagFile", fileName),+ ("tagFile", root </> fileName), ("root", root) ] @@ -61,13 +63,19 @@ time = 0 notifyError :: String -> Proteome ()-notifyError e =+notifyError e = do+ infoS $ "tags failed: " ++ e Ribo.modify $ over Env._errors (storeError (ComponentName "ctags") [e]) +tagsProcess :: ProjectRoot -> String -> String -> IO (ExitCode, String, String)+tagsProcess (ProjectRoot root) cmd args =+ readCreateProcessWithExitCode (Proc.proc cmd (words args)) { Proc.cwd = Just root } ""+ executeTags :: ProjectRoot -> String -> String -> Proteome ()-executeTags (ProjectRoot root) cmd args = do- deleteTags (ProjectRoot root)- (exitcode, _, stderr) <- liftIO $ readCreateProcessWithExitCode ((Proc.proc cmd [args]) { Proc.cwd = (Just root) }) ""+executeTags root@(ProjectRoot rootS) cmd args = do+ deleteTags root+ debugS $ "executing tags: `" ++ cmd ++ " " ++ args ++ "` in directory " ++ rootS+ (exitcode, _, stderr) <- liftIO $ tagsProcess root cmd args case exitcode of ExitSuccess -> return () ExitFailure _ -> notifyError stderr@@ -82,10 +90,13 @@ _ <- if fork then forkNeovim thunk else thunk return () +projectTags :: Project -> Proteome ()+projectTags (Project (DirProject _ root tpe) _ lang langs ) =+ regenerateTags root (maybeToList (langOrType lang tpe) ++ langs)+projectTags _ = return ()+ proTags :: Proteome () proTags = do main <- Ribo.inspect mainProject- case main of- Project (DirProject _ root tpe) _ lang langs ->- regenerateTags root (maybeToList (langOrType lang tpe) ++ langs)- _ -> return ()+ extra <- Ribo.inspect projects+ traverse_ projectTags (main : extra)
proteome.cabal view
@@ -4,10 +4,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: ee165e2612b4794394cbe7da84f7fb9150ea73099aadb78e479de5bb1db4ea24+-- hash: eaeaa5e19fbd3b145b1a7a2b04d61f2f2b8d7f0e7cb6e0653b18a41a8b2105c1 name: proteome-version: 0.3.5.0+version: 0.3.6.0 synopsis: neovim project manager description: Please see the README on GitHub at <https://github.com/tek/proteome-hs> category: Neovim
test/u/TagsSpec.hs view
@@ -37,10 +37,10 @@ Ribo.modify $ set (_mainProject._meta) (main root) Ribo.modify $ set (_mainProject._lang) (Just (ProjectLang "idris")) updateSetting S.tagsCommand "touch"- updateSetting S.tagsArgs "tags-{langsComma}-{tagFile}"+ updateSetting S.tagsArgs "tags-{langsComma}" updateSetting S.tagsFork False proTags- let tagsFile = root </> "tags-idris-.tags"+ let tagsFile = root </> "tags-idris" exists <- liftIO $ doesFileExist tagsFile liftIO $ assertBool exists