diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -20,7 +20,7 @@
 ### ✨ Enhanced Features
 
 - **Semantic Test Filtering** - New capability to filter out test code from search results across 27+ programming languages and their respective testing frameworks (see [Test Framework Support](#test-framework-support) below)
-- **Improved Text Processing** - Native support for Unicode and multi-byte character encodings with accurate column positioning
+- **Improved Text Processing** - Native support for utf-8 character encodings with accurate column positioning
 
 ---
 
diff --git a/cgrep.cabal b/cgrep.cabal
--- a/cgrep.cabal
+++ b/cgrep.cabal
@@ -1,7 +1,7 @@
 cabal-version: 2.2
 name: cgrep
 description: Cgrep: a context-aware grep for source codes
-version: 9.0.0
+version: 9.1.0
 synopsis: Command line tool
 homepage: http://awgn.github.io/cgrep/
 license: GPL-2.0-or-later
@@ -19,7 +19,7 @@
 }
 
 common common-options
-  build-depends: base ^>=4.15.0.0
+  build-depends: base >=4.15.0.0 && <5.0
   ghc-options:
     -Wall
     -Wcompat
diff --git a/src/CGrep/FileType.hs b/src/CGrep/FileType.hs
--- a/src/CGrep/FileType.hs
+++ b/src/CGrep/FileType.hs
@@ -82,6 +82,7 @@
     | PHP
     | Perl
     | Python
+    | ProtoBuf
     | R
     | Ruby
     | Rust
diff --git a/src/CGrep/FileTypeMapTH.hs b/src/CGrep/FileTypeMapTH.hs
--- a/src/CGrep/FileTypeMapTH.hs
+++ b/src/CGrep/FileTypeMapTH.hs
@@ -2929,6 +2929,62 @@
                         }
                     )
                 ,
+                    ( ProtoBuf
+                    , FileTypeInfo
+                        { ftSelector = [ext ".proto"]
+                        , ftKind = KindLanguage
+                        , ftComment = ["//" ~~ "\n", "/*" ~~ "*/"]
+                        , ftChar = []
+                        , ftString = ["\"" ~~ "\"", "'" ~~ "'"]
+                        , ftRawString = []
+                        , ftIdentCharSet = Just (Unicode_, UnicodeNum_)
+                        , ftKeywords =
+                            types
+                                [ "double"
+                                , "float"
+                                , "int32"
+                                , "int64"
+                                , "uint32"
+                                , "uint64"
+                                , "sint32"
+                                , "sint64"
+                                , "fixed32"
+                                , "fixed64"
+                                , "sfixed32"
+                                , "sfixed64"
+                                , "bool"
+                                , "string"
+                                , "bytes"
+                                ]
+                                <> reserved
+                                    [ "syntax"
+                                    , "import"
+                                    , "weak"
+                                    , "public"
+                                    , "package"
+                                    , "option"
+                                    , "message"
+                                    , "enum"
+                                    , "service"
+                                    , "rpc"
+                                    , "returns"
+                                    , "required"
+                                    , "optional"
+                                    , "repeated"
+                                    , "oneof"
+                                    , "map"
+                                    , "extensions"
+                                    , "reserved"
+                                    , "to"
+                                    , "max"
+                                    , "true"
+                                    , "false"
+                                    , "group"   -- Deprecated but exists in proto2
+                                    , "stream"
+                                    ]
+                        }
+                    )
+                ,
                     ( R
                     , FileTypeInfo
                         { ftSelector = [ext ".r", ext ".rdata", ext ".rds", ext ".rda"]
diff --git a/src/CGrep/Strategy/Regex.hs b/src/CGrep/Strategy/Regex.hs
--- a/src/CGrep/Strategy/Regex.hs
+++ b/src/CGrep/Strategy/Regex.hs
@@ -78,11 +78,11 @@
                     patterns >>= (\p -> elems (getAllTextMatches $ text' =~~~ p :: (Array Int) (MatchText T.Text)))
 
     putMessageLnVerb 3 lock stderr $ "---\n" <> text' <> "\n---"
-    #ifdef ENABLE_PCRE
+#ifdef ENABLE_PCRE
     putMessageLnVerb 1 lock stderr $ "strategy  : running regex " <> (if regex_pcre opt then "(pcre)" else "(posix)") <> " search on " <> show filename
-    #else
+#else
     putMessageLnVerb 1 lock stderr $ "strategy  : running regex (posix) search on " <> show filename
-    #endif
+#endif
     putMessageLnVerb 2 lock stderr $ "tokens    : " <> show tokens
 
     mkMatches lindex filename text' tokens
