mirror of
https://github.com/sqlitebrowser/sqlitebrowser.git
synced 2026-01-25 05:19:50 -06:00
This is a first rough implementation of QScintilla support as SQL text editor. It should work mostly and build fine with qmake as well as cmake. The new code supports all the features of the old one plus adding a few subtle improvements. The main point of this, however, is reducing the code we have to maintain and making it easier to add new features to the editor.
69 lines
2.0 KiB
C++
69 lines
2.0 KiB
C++
// Scintilla source code edit control
|
|
/** @file LexerNoExceptions.cxx
|
|
** A simple lexer with no state which does not throw exceptions so can be used in an external lexer.
|
|
**/
|
|
// Copyright 1998-2010 by Neil Hodgson <neilh@scintilla.org>
|
|
// The License.txt file describes the conditions under which this software may be distributed.
|
|
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include <stdio.h>
|
|
#include <stdarg.h>
|
|
#include <assert.h>
|
|
#include <ctype.h>
|
|
|
|
#include "ILexer.h"
|
|
#include "Scintilla.h"
|
|
#include "SciLexer.h"
|
|
|
|
#include "PropSetSimple.h"
|
|
#include "WordList.h"
|
|
#include "LexAccessor.h"
|
|
#include "Accessor.h"
|
|
#include "LexerModule.h"
|
|
#include "LexerBase.h"
|
|
#include "LexerNoExceptions.h"
|
|
|
|
#ifdef SCI_NAMESPACE
|
|
using namespace Scintilla;
|
|
#endif
|
|
|
|
int SCI_METHOD LexerNoExceptions::PropertySet(const char *key, const char *val) {
|
|
try {
|
|
return LexerBase::PropertySet(key, val);
|
|
} catch (...) {
|
|
// Should not throw into caller as may be compiled with different compiler or options
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
int SCI_METHOD LexerNoExceptions::WordListSet(int n, const char *wl) {
|
|
try {
|
|
return LexerBase::WordListSet(n, wl);
|
|
} catch (...) {
|
|
// Should not throw into caller as may be compiled with different compiler or options
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
void SCI_METHOD LexerNoExceptions::Lex(unsigned int startPos, int length, int initStyle, IDocument *pAccess) {
|
|
try {
|
|
Accessor astyler(pAccess, &props);
|
|
Lexer(startPos, length, initStyle, pAccess, astyler);
|
|
astyler.Flush();
|
|
} catch (...) {
|
|
// Should not throw into caller as may be compiled with different compiler or options
|
|
pAccess->SetErrorStatus(SC_STATUS_FAILURE);
|
|
}
|
|
}
|
|
void SCI_METHOD LexerNoExceptions::Fold(unsigned int startPos, int length, int initStyle, IDocument *pAccess) {
|
|
try {
|
|
Accessor astyler(pAccess, &props);
|
|
Folder(startPos, length, initStyle, pAccess, astyler);
|
|
astyler.Flush();
|
|
} catch (...) {
|
|
// Should not throw into caller as may be compiled with different compiler or options
|
|
pAccess->SetErrorStatus(SC_STATUS_FAILURE);
|
|
}
|
|
}
|