aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/glob.h
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2015-05-25 22:02:31 +0200
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2015-05-25 22:02:31 +0200
commitbae8cd712c167522a95a093296453a54dde4a524 (patch)
tree1523fcf738c9dbd0b6d96222ccd693faa2938060 /src/glob.h
parent83f18d2578288fe71fca409e4f03434346b0d5b7 (diff)
downloadsciteco-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.h18
1 files changed, 15 insertions, 3 deletions
diff --git a/src/glob.h b/src/glob.h
index e206b0d..a289228 100644
--- a/src/glob.h
+++ b/src/glob.h
@@ -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 */