packages feed

cgrep 6.6.4 → 6.6.7

raw patch · 9 files changed

+62/−38 lines, 9 files

Files

README.md view
@@ -7,7 +7,7 @@ Usage ----- -Cgrep 6.6.4. Usage: cgrep [OPTION] [PATTERN] files...+Cgrep 6.6.7. Usage: cgrep [OPTION] [PATTERN] files...  cgrep [OPTIONS] [ITEM] @@ -79,7 +79,8 @@                                #1... e.g. "#f:#n #0 #1"        --json                  Format output as json object        --xml                   Format output as xml document-+       --vim                   Invoke vim program by passing the files that+                               match  Concurrency: 
cgrep.cabal view
@@ -1,6 +1,6 @@ Name:                cgrep Description:         Cgrep: a context-aware grep for source codes-Version:             6.6.4+Version:             6.6.7 Synopsis:            Command line tool Homepage:            http://awgn.github.io/cgrep/ License:             GPL-2
src/CGrep/Output.hs view
@@ -15,7 +15,7 @@ -- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -- -module CGrep.Output (Output(),+module CGrep.Output (Output(..),                      mkOutput,                      putPrettyHeader,                      putPrettyFooter,@@ -44,7 +44,12 @@ import Options  -data Output = Output FilePath Int Text8 [Token]+data Output = Output+    { outFilePath :: FilePath+    , outLineNo   :: Int+    , outLine     :: Text8+    , outTokens   :: [Token]+    }     deriving (Show)  
src/CGrep/Parser/Cpp/Token.hs view
@@ -86,65 +86,65 @@   tokenFilter :: TokenFilter -> Token -> Bool-tokenFilter filt (TokenIdentifier{})  = filtIdentifier filt-tokenFilter filt (TokenDirective{})   = filtDirective  filt-tokenFilter filt (TokenKeyword{})     = filtKeyword    filt-tokenFilter filt (TokenHeaderName{})  = filtHeader     filt-tokenFilter filt (TokenNumber{})      = filtNumber     filt-tokenFilter filt (TokenString{})      = filtString     filt-tokenFilter filt (TokenChar{})        = filtChar       filt-tokenFilter filt (TokenOperOrPunct{}) = filtOper       filt+tokenFilter filt TokenIdentifier{}  = filtIdentifier filt+tokenFilter filt TokenDirective{}   = filtDirective  filt+tokenFilter filt TokenKeyword{}     = filtKeyword    filt+tokenFilter filt TokenHeaderName{}  = filtHeader     filt+tokenFilter filt TokenNumber{}      = filtNumber     filt+tokenFilter filt TokenString{}      = filtString     filt+tokenFilter filt TokenChar{}        = filtChar       filt+tokenFilter filt TokenOperOrPunct{} = filtOper       filt   tokenCompare :: Token -> Token -> Bool-tokenCompare (TokenIdentifier { toString = l }) (TokenIdentifier { toString = r }) = l == r-tokenCompare (TokenDirective  { toString = l }) (TokenDirective  { toString = r }) = l == r-tokenCompare (TokenKeyword    { toString = l }) (TokenKeyword    { toString = r }) = l == r-tokenCompare (TokenNumber     { toString = l }) (TokenNumber     { toString = r }) = l == r-tokenCompare (TokenHeaderName { toString = l }) (TokenHeaderName { toString = r }) = l == r-tokenCompare (TokenString     { toString = l }) (TokenString     { toString = r }) = l == r-tokenCompare (TokenChar       { toString = l }) (TokenChar       { toString = r }) = l == r-tokenCompare (TokenOperOrPunct{ toString = l }) (TokenOperOrPunct{ toString = r }) = l == r+tokenCompare TokenIdentifier { toString = l } TokenIdentifier { toString = r } = l == r+tokenCompare TokenDirective  { toString = l } TokenDirective  { toString = r } = l == r+tokenCompare TokenKeyword    { toString = l } TokenKeyword    { toString = r } = l == r+tokenCompare TokenNumber     { toString = l } TokenNumber     { toString = r } = l == r+tokenCompare TokenHeaderName { toString = l } TokenHeaderName { toString = r } = l == r+tokenCompare TokenString     { toString = l } TokenString     { toString = r } = l == r+tokenCompare TokenChar       { toString = l } TokenChar       { toString = r } = l == r+tokenCompare TokenOperOrPunct{ toString = l } TokenOperOrPunct{ toString = r } = l == r tokenCompare _ _ = False   isIdentifier :: Token -> Bool-isIdentifier (TokenIdentifier {})  = True+isIdentifier TokenIdentifier{}  = True isIdentifier _ = False   isKeyword :: Token -> Bool-isKeyword (TokenKeyword {})  = True+isKeyword TokenKeyword{}  = True isKeyword _ = False   isDirective :: Token -> Bool-isDirective (TokenDirective {})  = True+isDirective TokenDirective {}  = True isDirective _ = False   isLiteralNumber :: Token -> Bool-isLiteralNumber (TokenNumber {}) = True+isLiteralNumber TokenNumber {} = True isLiteralNumber _ = False   isHeaderName :: Token -> Bool-isHeaderName (TokenHeaderName {})  = True+isHeaderName TokenHeaderName {}  = True isHeaderName _ = False   isString :: Token -> Bool-isString (TokenString {}) = True+isString TokenString {} = True isString _ = False   isChar :: Token -> Bool-isChar (TokenChar {}) = True+isChar TokenChar{} = True isChar _ = False   isOperOrPunct :: Token -> Bool-isOperOrPunct (TokenOperOrPunct {})  = True+isOperOrPunct TokenOperOrPunct {}  = True isOperOrPunct _ = False  
src/CGrep/Parser/Generic/Token.hs view
@@ -84,11 +84,11 @@   tokenCompare :: Token -> Token -> Bool-tokenCompare (TokenAlpha   { toString = l }) (TokenAlpha   { toString = r }) = l == r-tokenCompare (TokenDigit   { toString = l }) (TokenDigit   { toString = r }) = l == r-tokenCompare (TokenLiteral { toString = l }) (TokenLiteral { toString = r }) = l == r-tokenCompare (TokenBracket { toString = l }) (TokenBracket { toString = r }) = l == r-tokenCompare (TokenOther   { toString = l }) (TokenOther   { toString = r }) = l == r+tokenCompare TokenAlpha  { toString = l } TokenAlpha  { toString = r } = l == r+tokenCompare TokenDigit  { toString = l } TokenDigit  { toString = r } = l == r+tokenCompare TokenLiteral{ toString = l } TokenLiteral{ toString = r } = l == r+tokenCompare TokenBracket{ toString = l } TokenBracket{ toString = r } = l == r+tokenCompare TokenOther  { toString = l } TokenOther  { toString = r } = l == r tokenCompare _ _ = False  
src/CmdOptions.hs view
@@ -63,6 +63,8 @@           ,     no_linenumber= False        &= help "Suppress the line number on output lines" &= explicit &= name "N" &= name "no-linenumber"           ,     count = False               &= help "Print only a count of matching lines per file" &= explicit &= name "count"           ,     filename_only = False       &= help "Print only the name of files containing matches" &= explicit &= name "filename-only"+          ,     editor = False              &= help "Run the editor specified by EDITOR var., passing the files that match" &= explicit &=name "editor"+          ,     vim = False                 &= help "Run vim the editor passing the files that match" &= explicit &=name "vim" #ifdef ENABLE_HINT           ,     hint = Nothing  &= typ "STRING" &= help "Haskell interpreter output. Var: file, row, line, tokens.\ne.g. \"file ++ show (tokens)\"" &= explicit &= name "hint" #endif
src/Config.hs view
@@ -52,7 +52,7 @@     confs <- filterM doesFileExist [cgreprc, "." ++ cgreprc, home </> "." ++ cgreprc, "/etc" </> cgreprc]     if notNull confs         then liftM dropComments (readFile (head confs)) >>= \xs ->-              return ((prettyRead xs "Config error" :: Config), Just (head confs))-        else return $ (Config [] [] False, Nothing)+              return (prettyRead xs "Config error" :: Config, Just (head confs))+        else return (Config [] [] False, Nothing)  
src/Main.hs view
@@ -24,6 +24,8 @@ import Data.Maybe import Data.Char import Data.Data()++import Data.IORef import Data.Version(showVersion) import Data.Function import qualified Data.Set as Set@@ -48,7 +50,7 @@ import System.PosixCompat.Files as PosixCompat import System.IO import System.Exit-import System.Process (readProcess)+import System.Process (readProcess, runProcess, waitForProcess)  import CGrep.CGrep import CGrep.Lang@@ -170,6 +172,8 @@      let stop = jobs opts +    matchingFiles <- liftIO $ newIORef Set.empty+     fix (\action n m ->          unless (n == stop) $ do                  out <- liftIO $ atomically $ readTChan out_chan@@ -180,12 +184,22 @@                             _ | json opts -> when m $ liftIO $ putStrLn ","                               | otherwise -> return ()                           prettyOutput out >>= mapM_ (liftIO . putStrLn)+                          liftIO $ when (vim opts || editor opts) $ mapM_ (modifyIORef matchingFiles . Set.insert . outFilePath) out                           action n True         )  0 False      putPrettyFooter +    -- run editor... +    liftIO $ when (vim opts || editor opts) $ do+        editor' <- if vim opts+                    then return (Just "vim")+                    else lookupEnv "EDITOR"+        files   <- readIORef matchingFiles+        void (runProcess (fromJust $ editor' <|> Just "vi") (Set.toList files) Nothing Nothing (Just stdin) (Just stdout) (Just stderr) >>= waitForProcess)++ main :: IO () main = do @@ -237,7 +251,7 @@     -- display the configuration in use      when (isJust confpath) $-      hPutStrLn stderr $ showBold opts ("Using '" ++ (fromJust confpath) ++ "' configuration file...")+      hPutStrLn stderr $ showBold opts ("Using '" ++ fromJust confpath ++ "' configuration file...")      -- load files to parse: 
src/Options.hs view
@@ -72,6 +72,8 @@     ,   format              :: Maybe String     ,   json                :: Bool     ,   xml                 :: Bool+    ,   editor              :: Bool+    ,   vim                 :: Bool     -- Parallel:     ,   jobs                :: Int     ,   cores               :: Int