diff options
author | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2015-05-25 22:02:31 +0200 |
---|---|---|
committer | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2015-05-25 22:02:31 +0200 |
commit | bae8cd712c167522a95a093296453a54dde4a524 (patch) | |
tree | 1523fcf738c9dbd0b6d96222ccd693faa2938060 /src/glob.h | |
parent | 83f18d2578288fe71fca409e4f03434346b0d5b7 (diff) | |
download | sciteco-bae8cd712c167522a95a093296453a54dde4a524.tar.gz |
extended <EN> command and used it to optimize "lexer.test..." macros
* EN may now be used for matching file names (similar to fnmatch(3)).
This is used to check the current buffers file extension in the
lexer configuration macros instead of using expensive Q-Register
manipulations.
This halves the overall startup time - it is now acceptable even
with the current amount of lexer configurations.
* EN may now be used for checking file types.
session.tes has been simplified.
* BREAKS macro portability (EN now has 2 string arguments).
* The Globber class has been extended to allow filtering of
glob results by file type.
Diffstat (limited to 'src/glob.h')
-rw-r--r-- | src/glob.h | 18 |
1 files changed, 15 insertions, 3 deletions
@@ -21,6 +21,7 @@ #include <string.h> #include <glib.h> +#include <glib/gstdio.h> #include "sciteco.h" #include "parser.h" @@ -37,12 +38,14 @@ is_glob_pattern(const gchar *str) } class Globber { + GFileTest test; gchar *dirname; GDir *dir; GPatternSpec *pattern; public: - Globber(const gchar *pattern); + Globber(const gchar *pattern, + GFileTest test = G_FILE_TEST_EXISTS); ~Globber(); gchar *next(void); @@ -52,13 +55,22 @@ public: * Command states */ -class StateGlob : public StateExpectFile { +class StateGlob_pattern : public StateExpectFile { +public: + StateGlob_pattern() : StateExpectFile(true, false) {} + +private: + State *done(const gchar *str); +}; + +class StateGlob_filename : public StateExpectFile { private: State *done(const gchar *str); }; namespace States { - extern StateGlob glob; + extern StateGlob_pattern glob_pattern; + extern StateGlob_filename glob_filename; } } /* namespace SciTECO */ |