diff options
author | Ken Moore <ken@ixsystems.com> | 2017-06-09 09:25:31 -0400 |
---|---|---|
committer | Ken Moore <ken@ixsystems.com> | 2017-06-09 09:25:31 -0400 |
commit | ef95ce3c266dab8ab766ab8ae16e8634c967d5b3 (patch) | |
tree | 925a697f249284b05169ebb63e17d2b9e901b64a /src-qt5/desktop-utils/lumina-textedit | |
parent | Get a lot more of the new plugin-based syntax highlighting system setup (not ... (diff) | |
download | lumina-ef95ce3c266dab8ab766ab8ae16e8634c967d5b3.tar.gz lumina-ef95ce3c266dab8ab766ab8ae16e8634c967d5b3.tar.bz2 lumina-ef95ce3c266dab8ab766ab8ae16e8634c967d5b3.zip |
Get the SyntaxFile loading mechanisms all setup.
Diffstat (limited to 'src-qt5/desktop-utils/lumina-textedit')
-rw-r--r-- | src-qt5/desktop-utils/lumina-textedit/syntaxSupport.cpp | 27 | ||||
-rw-r--r-- | src-qt5/desktop-utils/lumina-textedit/syntaxSupport.h | 4 |
2 files changed, 30 insertions, 1 deletions
diff --git a/src-qt5/desktop-utils/lumina-textedit/syntaxSupport.cpp b/src-qt5/desktop-utils/lumina-textedit/syntaxSupport.cpp index 4c3b3805..a590d3a4 100644 --- a/src-qt5/desktop-utils/lumina-textedit/syntaxSupport.cpp +++ b/src-qt5/desktop-utils/lumina-textedit/syntaxSupport.cpp @@ -123,6 +123,33 @@ bool SyntaxFile::LoadFile(QString file, QSettings *settings){ return true; } +//Main function for finding/loading all syntax files +QList<SyntaxFile> SyntaxFile::availableFiles(QSettings *settings){ + static QList<SyntaxFile> list; //keep this list around between calls - prevent re-reading all the files + //Remove/update any files from the list as needed + QStringList found; + for(int i=0; i<list.length(); i++){ + if( !QFileInfo::exists(list[i].fileLoaded) ){ list.removeAt(i); i--; continue; } //obsolete file + else if(QFileInfo(list[i].fileLoaded).lastModified() > list[i].lastLoaded){ list[i].LoadFile(list[i].fileLoaded, settings); } //out-of-date file + found << list[i].fileLoaded; //save for later + } + //Now scan for any new files + QStringList paths; + paths << QString(getenv("XDG_DATA_HOME")) << QString(getenv("XDG_DATA_DIRS")).split(":"); + for(int i=0; i<paths.length(); i++){ + QDir dir(paths[i]+"/lumina-desktop/syntax_rules"); + if(!dir.exists()){ continue; } + QFileInfoList files = dir.entryInfoList(QStringList() << "*.syntax", QDir::Files, QDir::Name); + for(int f=0; f<files.length(); f++){ + if(paths.contains(files[f].absoluteFilePath()) ){ continue; } //already handled + //New Syntax File found + SyntaxFile nfile; + if( nfile.LoadFile(files[f].absoluteFilePath(), settings) ){ list << nfile; } + } + } + return list; +} + QStringList Custom_Syntax::availableRules(){ QStringList avail; avail << "C++"; diff --git a/src-qt5/desktop-utils/lumina-textedit/syntaxSupport.h b/src-qt5/desktop-utils/lumina-textedit/syntaxSupport.h index ba4c211a..746df750 100644 --- a/src-qt5/desktop-utils/lumina-textedit/syntaxSupport.h +++ b/src-qt5/desktop-utils/lumina-textedit/syntaxSupport.h @@ -53,7 +53,9 @@ public: //Main Loading routine (run this before other functions) bool LoadFile(QString file, QSettings *settings); - + + //Main function for finding/loading all syntax files + static QList<SyntaxFile> availableFiles(QSettings *settings); }; class Custom_Syntax : public QSyntaxHighlighter{ |