diff -r 4d2ba76f394a gtk/PlatGTK.cxx
--- a/gtk/PlatGTK.cxx	Sat Feb 25 09:13:40 2017 +1100
+++ b/gtk/PlatGTK.cxx	Sat Feb 25 09:15:35 2017 +1100
@@ -162,49 +162,49 @@
 	void SetConverter(int characterSet_);
 public:
 	SurfaceImpl();
-	virtual ~SurfaceImpl();
-
-	void Init(WindowID wid);
-	void Init(SurfaceID sid, WindowID wid);
-	void InitPixMap(int width, int height, Surface *surface_, WindowID wid);
+	~SurfaceImpl() override;
 
-	void Release();
-	bool Initialised();
-	void PenColour(ColourDesired fore);
-	int LogPixelsY();
-	int DeviceHeightFont(int points);
-	void MoveTo(int x_, int y_);
-	void LineTo(int x_, int y_);
-	void Polygon(Point *pts, int npts, ColourDesired fore, ColourDesired back);
-	void RectangleDraw(PRectangle rc, ColourDesired fore, ColourDesired back);
-	void FillRectangle(PRectangle rc, ColourDesired back);
-	void FillRectangle(PRectangle rc, Surface &surfacePattern);
-	void RoundedRectangle(PRectangle rc, ColourDesired fore, ColourDesired back);
+	void Init(WindowID wid) override;
+	void Init(SurfaceID sid, WindowID wid) override;
+	void InitPixMap(int width, int height, Surface *surface_, WindowID wid) override;
+
+	void Release() override;
+	bool Initialised() override;
+	void PenColour(ColourDesired fore) override;
+	int LogPixelsY() override;
+	int DeviceHeightFont(int points) override;
+	void MoveTo(int x_, int y_) override;
+	void LineTo(int x_, int y_) override;
+	void Polygon(Point *pts, int npts, ColourDesired fore, ColourDesired back) override;
+	void RectangleDraw(PRectangle rc, ColourDesired fore, ColourDesired back) override;
+	void FillRectangle(PRectangle rc, ColourDesired back) override;
+	void FillRectangle(PRectangle rc, Surface &surfacePattern) override;
+	void RoundedRectangle(PRectangle rc, ColourDesired fore, ColourDesired back) override;
 	void AlphaRectangle(PRectangle rc, int cornerSize, ColourDesired fill, int alphaFill,
-		ColourDesired outline, int alphaOutline, int flags);
-	void DrawRGBAImage(PRectangle rc, int width, int height, const unsigned char *pixelsImage);
-	void Ellipse(PRectangle rc, ColourDesired fore, ColourDesired back);
-	void Copy(PRectangle rc, Point from, Surface &surfaceSource);
+		ColourDesired outline, int alphaOutline, int flags) override;
+	void DrawRGBAImage(PRectangle rc, int width, int height, const unsigned char *pixelsImage) override;
+	void Ellipse(PRectangle rc, ColourDesired fore, ColourDesired back) override;
+	void Copy(PRectangle rc, Point from, Surface &surfaceSource) override;
 
 	void DrawTextBase(PRectangle rc, Font &font_, XYPOSITION ybase, const char *s, int len, ColourDesired fore);
-	void DrawTextNoClip(PRectangle rc, Font &font_, XYPOSITION ybase, const char *s, int len, ColourDesired fore, ColourDesired back);
-	void DrawTextClipped(PRectangle rc, Font &font_, XYPOSITION ybase, const char *s, int len, ColourDesired fore, ColourDesired back);
-	void DrawTextTransparent(PRectangle rc, Font &font_, XYPOSITION ybase, const char *s, int len, ColourDesired fore);
-	void MeasureWidths(Font &font_, const char *s, int len, XYPOSITION *positions);
-	XYPOSITION WidthText(Font &font_, const char *s, int len);
-	XYPOSITION WidthChar(Font &font_, char ch);
-	XYPOSITION Ascent(Font &font_);
-	XYPOSITION Descent(Font &font_);
-	XYPOSITION InternalLeading(Font &font_);
-	XYPOSITION ExternalLeading(Font &font_);
-	XYPOSITION Height(Font &font_);
-	XYPOSITION AverageCharWidth(Font &font_);
+	void DrawTextNoClip(PRectangle rc, Font &font_, XYPOSITION ybase, const char *s, int len, ColourDesired fore, ColourDesired back) override;
+	void DrawTextClipped(PRectangle rc, Font &font_, XYPOSITION ybase, const char *s, int len, ColourDesired fore, ColourDesired back) override;
+	void DrawTextTransparent(PRectangle rc, Font &font_, XYPOSITION ybase, const char *s, int len, ColourDesired fore) override;
+	void MeasureWidths(Font &font_, const char *s, int len, XYPOSITION *positions) override;
+	XYPOSITION WidthText(Font &font_, const char *s, int len) override;
+	XYPOSITION WidthChar(Font &font_, char ch) override;
+	XYPOSITION Ascent(Font &font_) override;
+	XYPOSITION Descent(Font &font_) override;
+	XYPOSITION InternalLeading(Font &font_) override;
+	XYPOSITION ExternalLeading(Font &font_) override;
+	XYPOSITION Height(Font &font_) override;
+	XYPOSITION AverageCharWidth(Font &font_) override;
 
-	void SetClip(PRectangle rc);
-	void FlushCachedState();
+	void SetClip(PRectangle rc) override;
+	void FlushCachedState() override;
 
-	void SetUnicodeMode(bool unicodeMode_);
-	void SetDBCSMode(int codePage);
+	void SetUnicodeMode(bool unicodeMode_) override;
+	void SetDBCSMode(int codePage) override;
 };
 #ifdef SCI_NAMESPACE
 }
@@ -1239,7 +1239,7 @@
 #endif
 		doubleClickAction(NULL), doubleClickActionData(NULL) {
 	}
-	virtual ~ListBoxX() {
+	~ListBoxX() override {
 		if (pixhash) {
 			g_hash_table_foreach((GHashTable *) pixhash, list_image_free, NULL);
 			g_hash_table_destroy((GHashTable *) pixhash);
@@ -1255,30 +1255,30 @@
 		}
 #endif
 	}
-	virtual void SetFont(Font &font);
-	virtual void Create(Window &parent, int ctrlID, Point location_, int lineHeight_, bool unicodeMode_, int technology_);
-	virtual void SetAverageCharWidth(int width);
-	virtual void SetVisibleRows(int rows);
-	virtual int GetVisibleRows() const;
+	void SetFont(Font &font) override;
+	void Create(Window &parent, int ctrlID, Point location_, int lineHeight_, bool unicodeMode_, int technology_) override;
+	void SetAverageCharWidth(int width) override;
+	void SetVisibleRows(int rows) override;
+	int GetVisibleRows() const override;
 	int GetRowHeight();
-	virtual PRectangle GetDesiredRect();
-	virtual int CaretFromEdge();
-	virtual void Clear();
-	virtual void Append(char *s, int type = -1);
-	virtual int Length();
-	virtual void Select(int n);
-	virtual int GetSelection();
-	virtual int Find(const char *prefix);
-	virtual void GetValue(int n, char *value, int len);
+	PRectangle GetDesiredRect() override;
+	int CaretFromEdge() override;
+	void Clear() override;
+	void Append(char *s, int type = -1) override;
+	int Length() override;
+	void Select(int n) override;
+	int GetSelection() override;
+	int Find(const char *prefix) override;
+	void GetValue(int n, char *value, int len) override;
 	void RegisterRGBA(int type, RGBAImage *image);
-	virtual void RegisterImage(int type, const char *xpm_data);
-	virtual void RegisterRGBAImage(int type, int width, int height, const unsigned char *pixelsImage);
-	virtual void ClearRegisteredImages();
-	virtual void SetDoubleClickAction(CallBackAction action, void *data) {
+	void RegisterImage(int type, const char *xpm_data) override;
+	void RegisterRGBAImage(int type, int width, int height, const unsigned char *pixelsImage) override;
+	void ClearRegisteredImages() override;
+	void SetDoubleClickAction(CallBackAction action, void *data) override {
 		doubleClickAction = action;
 		doubleClickActionData = data;
 	}
-	virtual void SetList(const char *listText, char separator, char typesep);
+	void SetList(const char *listText, char separator, char typesep) override;
 };
 
 ListBox *ListBox::Allocate() {
@@ -1965,13 +1965,13 @@
 		m = g_module_open(modulePath, G_MODULE_BIND_LAZY);
 	}
 
-	virtual ~DynamicLibraryImpl() {
+	~DynamicLibraryImpl() override {
 		if (m != NULL)
 			g_module_close(m);
 	}
 
 	// Use g_module_symbol to get a pointer to the relevant function.
-	virtual Function FindFunction(const char *name) {
+	Function FindFunction(const char *name) override {
 		if (m != NULL) {
 			gpointer fn_address = NULL;
 			gboolean status = g_module_symbol(m, name, &fn_address);
@@ -1984,7 +1984,7 @@
 		}
 	}
 
-	virtual bool IsValid() {
+	bool IsValid() override {
 		return m != NULL;
 	}
 };
diff -r 4d2ba76f394a gtk/ScintillaGTK.cxx
--- a/gtk/ScintillaGTK.cxx	Sat Feb 25 09:13:40 2017 +1100
+++ b/gtk/ScintillaGTK.cxx	Sat Feb 25 09:15:35 2017 +1100
@@ -1133,7 +1133,7 @@
 	explicit CaseFolderDBCS(const char *charSet_) : charSet(charSet_) {
 		StandardASCII();
 	}
-	virtual size_t Fold(char *folded, size_t sizeFolded, const char *mixed, size_t lenMixed) {
+	size_t Fold(char *folded, size_t sizeFolded, const char *mixed, size_t lenMixed) override {
 		if ((lenMixed == 1) && (sizeFolded > 0)) {
 			folded[0] = mapping[static_cast<unsigned char>(mixed[0])];
 			return 1;
@@ -1278,7 +1278,7 @@
 	class Helper : GObjectWatcher {
 		ScintillaGTK *sci;
 
-		virtual void Destroyed() {
+		void Destroyed() override {
 			sci = 0;
 		}
 
diff -r 4d2ba76f394a gtk/ScintillaGTKAccessible.cxx
--- a/gtk/ScintillaGTKAccessible.cxx	Sat Feb 25 09:13:40 2017 +1100
+++ b/gtk/ScintillaGTKAccessible.cxx	Sat Feb 25 09:15:35 2017 +1100
@@ -734,7 +734,7 @@
 		ScintillaGTKAccessible *scia;
 		Position bytePosition;
 
-		virtual void Destroyed() {
+		void Destroyed() override {
 			scia = 0;
 		}
 
diff -r 4d2ba76f394a lexers/LexAsm.cxx
--- a/lexers/LexAsm.cxx	Sat Feb 25 09:13:40 2017 +1100
+++ b/lexers/LexAsm.cxx	Sat Feb 25 09:15:35 2017 +1100
@@ -157,30 +157,30 @@
 	}
 	virtual ~LexerAsm() {
 	}
-	void SCI_METHOD Release() {
+	void SCI_METHOD Release() override {
 		delete this;
 	}
-	int SCI_METHOD Version() const {
+	int SCI_METHOD Version() const override {
 		return lvOriginal;
 	}
-	const char * SCI_METHOD PropertyNames() {
+	const char * SCI_METHOD PropertyNames() override {
 		return osAsm.PropertyNames();
 	}
-	int SCI_METHOD PropertyType(const char *name) {
+	int SCI_METHOD PropertyType(const char *name) override {
 		return osAsm.PropertyType(name);
 	}
-	const char * SCI_METHOD DescribeProperty(const char *name) {
+	const char * SCI_METHOD DescribeProperty(const char *name) override {
 		return osAsm.DescribeProperty(name);
 	}
-	Sci_Position SCI_METHOD PropertySet(const char *key, const char *val);
-	const char * SCI_METHOD DescribeWordListSets() {
+	Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) override;
+	const char * SCI_METHOD DescribeWordListSets() override {
 		return osAsm.DescribeWordListSets();
 	}
-	Sci_Position SCI_METHOD WordListSet(int n, const char *wl);
-	void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);
-	void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);
+	Sci_Position SCI_METHOD WordListSet(int n, const char *wl) override;
+	void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override;
+	void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override;
 
-	void * SCI_METHOD PrivateCall(int, void *) {
+	void * SCI_METHOD PrivateCall(int, void *) override {
 		return 0;
 	}
 
diff -r 4d2ba76f394a lexers/LexBaan.cxx
--- a/lexers/LexBaan.cxx	Sat Feb 25 09:13:40 2017 +1100
+++ b/lexers/LexBaan.cxx	Sat Feb 25 09:15:35 2017 +1100
@@ -399,39 +399,39 @@
 	virtual ~LexerBaan() {
 	}
 
-	int SCI_METHOD Version() const {
+	int SCI_METHOD Version() const override {
 		return lvOriginal;
 	}
 
-	void SCI_METHOD Release() {
+	void SCI_METHOD Release() override {
 		delete this;
 	}
 
-	const char * SCI_METHOD PropertyNames() {
+	const char * SCI_METHOD PropertyNames() override {
 		return osBaan.PropertyNames();
 	}
 
-	int SCI_METHOD PropertyType(const char * name) {
+	int SCI_METHOD PropertyType(const char * name) override {
 		return osBaan.PropertyType(name);
 	}
 
-	const char * SCI_METHOD DescribeProperty(const char * name) {
+	const char * SCI_METHOD DescribeProperty(const char * name) override {
 		return osBaan.DescribeProperty(name);
 	}
 
-	Sci_Position SCI_METHOD PropertySet(const char *key, const char *val);
+	Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) override;
 
-	const char * SCI_METHOD DescribeWordListSets() {
+	const char * SCI_METHOD DescribeWordListSets() override {
 		return osBaan.DescribeWordListSets();
 	}
 
-	Sci_Position SCI_METHOD WordListSet(int n, const char *wl);
+	Sci_Position SCI_METHOD WordListSet(int n, const char *wl) override;
 
-	void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);
+	void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override;
 
-	void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);
+	void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override;
 
-	void * SCI_METHOD PrivateCall(int, void *) {
+	void * SCI_METHOD PrivateCall(int, void *) override {
 		return NULL;
 	}
 
diff -r 4d2ba76f394a lexers/LexBasic.cxx
--- a/lexers/LexBasic.cxx	Sat Feb 25 09:13:40 2017 +1100
+++ b/lexers/LexBasic.cxx	Sat Feb 25 09:15:35 2017 +1100
@@ -240,30 +240,30 @@
 	}
 	virtual ~LexerBasic() {
 	}
-	void SCI_METHOD Release() {
+	void SCI_METHOD Release() override {
 		delete this;
 	}
-	int SCI_METHOD Version() const {
+	int SCI_METHOD Version() const override {
 		return lvOriginal;
 	}
-	const char * SCI_METHOD PropertyNames() {
+	const char * SCI_METHOD PropertyNames() override {
 		return osBasic.PropertyNames();
 	}
-	int SCI_METHOD PropertyType(const char *name) {
+	int SCI_METHOD PropertyType(const char *name) override {
 		return osBasic.PropertyType(name);
 	}
-	const char * SCI_METHOD DescribeProperty(const char *name) {
+	const char * SCI_METHOD DescribeProperty(const char *name) override {
 		return osBasic.DescribeProperty(name);
 	}
-	Sci_Position SCI_METHOD PropertySet(const char *key, const char *val);
-	const char * SCI_METHOD DescribeWordListSets() {
+	Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) override;
+	const char * SCI_METHOD DescribeWordListSets() override {
 		return osBasic.DescribeWordListSets();
 	}
-	Sci_Position SCI_METHOD WordListSet(int n, const char *wl);
-	void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);
-	void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);
+	Sci_Position SCI_METHOD WordListSet(int n, const char *wl) override;
+	void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override;
+	void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override;
 
-	void * SCI_METHOD PrivateCall(int, void *) {
+	void * SCI_METHOD PrivateCall(int, void *) override {
 		return 0;
 	}
 	static ILexer *LexerFactoryBlitzBasic() {
diff -r 4d2ba76f394a lexers/LexCPP.cxx
--- a/lexers/LexCPP.cxx	Sat Feb 25 09:13:40 2017 +1100
+++ b/lexers/LexCPP.cxx	Sat Feb 25 09:15:35 2017 +1100
@@ -485,64 +485,64 @@
 	}
 	virtual ~LexerCPP() {
 	}
-	void SCI_METHOD Release() {
+	void SCI_METHOD Release() override {
 		delete this;
 	}
-	int SCI_METHOD Version() const {
+	int SCI_METHOD Version() const override {
 		return lvSubStyles;
 	}
-	const char * SCI_METHOD PropertyNames() {
+	const char * SCI_METHOD PropertyNames() override {
 		return osCPP.PropertyNames();
 	}
-	int SCI_METHOD PropertyType(const char *name) {
+	int SCI_METHOD PropertyType(const char *name) override {
 		return osCPP.PropertyType(name);
 	}
-	const char * SCI_METHOD DescribeProperty(const char *name) {
+	const char * SCI_METHOD DescribeProperty(const char *name) override {
 		return osCPP.DescribeProperty(name);
 	}
-	Sci_Position SCI_METHOD PropertySet(const char *key, const char *val);
-	const char * SCI_METHOD DescribeWordListSets() {
+	Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) override;
+	const char * SCI_METHOD DescribeWordListSets() override {
 		return osCPP.DescribeWordListSets();
 	}
-	Sci_Position SCI_METHOD WordListSet(int n, const char *wl);
-	void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);
-	void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);
+	Sci_Position SCI_METHOD WordListSet(int n, const char *wl) override;
+	void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override;
+	void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override;
 
-	void * SCI_METHOD PrivateCall(int, void *) {
+	void * SCI_METHOD PrivateCall(int, void *) override {
 		return 0;
 	}
 
-	int SCI_METHOD LineEndTypesSupported() {
+	int SCI_METHOD LineEndTypesSupported() override {
 		return SC_LINE_END_TYPE_UNICODE;
 	}
 
-	int SCI_METHOD AllocateSubStyles(int styleBase, int numberStyles) {
+	int SCI_METHOD AllocateSubStyles(int styleBase, int numberStyles) override {
 		return subStyles.Allocate(styleBase, numberStyles);
 	}
-	int SCI_METHOD SubStylesStart(int styleBase) {
+	int SCI_METHOD SubStylesStart(int styleBase) override {
 		return subStyles.Start(styleBase);
 	}
-	int SCI_METHOD SubStylesLength(int styleBase) {
+	int SCI_METHOD SubStylesLength(int styleBase) override {
 		return subStyles.Length(styleBase);
 	}
-	int SCI_METHOD StyleFromSubStyle(int subStyle) {
+	int SCI_METHOD StyleFromSubStyle(int subStyle) override {
 		int styleBase = subStyles.BaseStyle(MaskActive(subStyle));
 		int active = subStyle & activeFlag;
 		return styleBase | active;
 	}
-	int SCI_METHOD PrimaryStyleFromStyle(int style) {
+	int SCI_METHOD PrimaryStyleFromStyle(int style) override {
 		return MaskActive(style);
  	}
-	void SCI_METHOD FreeSubStyles() {
+	void SCI_METHOD FreeSubStyles() override {
 		subStyles.Free();
 	}
-	void SCI_METHOD SetIdentifiers(int style, const char *identifiers) {
+	void SCI_METHOD SetIdentifiers(int style, const char *identifiers) override {
 		subStyles.SetIdentifiers(style, identifiers);
 	}
-	int SCI_METHOD DistanceToSecondaryStyles() {
+	int SCI_METHOD DistanceToSecondaryStyles() override {
 		return activeFlag;
 	}
-	const char * SCI_METHOD GetSubStyleBases() {
+	const char * SCI_METHOD GetSubStyleBases() override {
 		return styleSubable;
 	}
 
diff -r 4d2ba76f394a lexers/LexD.cxx
--- a/lexers/LexD.cxx	Sat Feb 25 09:13:40 2017 +1100
+++ b/lexers/LexD.cxx	Sat Feb 25 09:15:35 2017 +1100
@@ -162,30 +162,30 @@
 	}
 	virtual ~LexerD() {
 	}
-	void SCI_METHOD Release() {
+	void SCI_METHOD Release() override {
 		delete this;
 	}
-	int SCI_METHOD Version() const {
+	int SCI_METHOD Version() const override {
 		return lvOriginal;
 	}
-	const char * SCI_METHOD PropertyNames() {
+	const char * SCI_METHOD PropertyNames() override {
 		return osD.PropertyNames();
 	}
-	int SCI_METHOD PropertyType(const char *name) {
+	int SCI_METHOD PropertyType(const char *name) override {
 		return osD.PropertyType(name);
 	}
-	const char * SCI_METHOD DescribeProperty(const char *name) {
+	const char * SCI_METHOD DescribeProperty(const char *name) override {
 		return osD.DescribeProperty(name);
 	}
-	Sci_Position SCI_METHOD PropertySet(const char *key, const char *val);
-	const char * SCI_METHOD DescribeWordListSets() {
+	Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) override;
+	const char * SCI_METHOD DescribeWordListSets() override {
 		return osD.DescribeWordListSets();
 	}
-	Sci_Position SCI_METHOD WordListSet(int n, const char *wl);
-	void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);
-	void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);
+	Sci_Position SCI_METHOD WordListSet(int n, const char *wl) override;
+	void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override;
+	void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override;
 
-	void * SCI_METHOD PrivateCall(int, void *) {
+	void * SCI_METHOD PrivateCall(int, void *) override {
 		return 0;
 	}
 
diff -r 4d2ba76f394a lexers/LexDMIS.cxx
--- a/lexers/LexDMIS.cxx	Sat Feb 25 09:13:40 2017 +1100
+++ b/lexers/LexDMIS.cxx	Sat Feb 25 09:15:35 2017 +1100
@@ -56,33 +56,33 @@
 		LexerDMIS(void);
 		virtual ~LexerDMIS(void);
 
-		int SCI_METHOD Version() const {
+		int SCI_METHOD Version() const override {
 			return lvOriginal;
 		}
 
-		void SCI_METHOD Release() {
+		void SCI_METHOD Release() override {
 			delete this;
 		}
 
-		const char * SCI_METHOD PropertyNames() {
+		const char * SCI_METHOD PropertyNames() override {
 			return NULL;
 		}
 
-		int SCI_METHOD PropertyType(const char *) {
+		int SCI_METHOD PropertyType(const char *) override {
 			return -1;
 		}
 
-		const char * SCI_METHOD DescribeProperty(const char *) {
+		const char * SCI_METHOD DescribeProperty(const char *) override {
 			return NULL;
 		}
 
-		Sci_Position SCI_METHOD PropertySet(const char *, const char *) {
+		Sci_Position SCI_METHOD PropertySet(const char *, const char *) override {
 			return -1;
 		}
 
-		Sci_Position SCI_METHOD WordListSet(int n, const char *wl);
+		Sci_Position SCI_METHOD WordListSet(int n, const char *wl) override;
 
-		void * SCI_METHOD PrivateCall(int, void *) {
+		void * SCI_METHOD PrivateCall(int, void *) override {
 			return NULL;
 		}
 
@@ -90,9 +90,9 @@
 			return new LexerDMIS;
 		}
 
-		const char * SCI_METHOD DescribeWordListSets();
-		void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess);
-		void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess);
+		const char * SCI_METHOD DescribeWordListSets() override;
+		void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess) override;
+		void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess) override;
 };
 
 
diff -r 4d2ba76f394a lexers/LexEDIFACT.cxx
--- a/lexers/LexEDIFACT.cxx	Sat Feb 25 09:13:40 2017 +1100
+++ b/lexers/LexEDIFACT.cxx	Sat Feb 25 09:15:35 2017 +1100
@@ -33,48 +33,48 @@
 		return new LexerEDIFACT;
 	}
 
-	virtual int SCI_METHOD Version() const
+	int SCI_METHOD Version() const override
 	{
 		return lvOriginal;
 	}
-	virtual void SCI_METHOD Release()
+	void SCI_METHOD Release() override
 	{
 		delete this;
 	}
 
-	const char * SCI_METHOD PropertyNames()
+	const char * SCI_METHOD PropertyNames() override
 	{
 		return "fold";
 	}
-	int SCI_METHOD PropertyType(const char *)
+	int SCI_METHOD PropertyType(const char *) override
 	{
 		return SC_TYPE_BOOLEAN; // Only one property!
 	}
-	const char * SCI_METHOD DescribeProperty(const char *name)
+	const char * SCI_METHOD DescribeProperty(const char *name) override
 	{
 		if (strcmp(name, "fold"))
 			return NULL;
 		return "Whether to apply folding to document or not";
 	}
 
-	virtual Sci_Position SCI_METHOD PropertySet(const char *key, const char *val)
+	Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) override
 	{
 		if (strcmp(key, "fold"))
 			return -1;
 		m_bFold = strcmp(val, "0") ? true : false;
 		return 0;
 	}
-	const char * SCI_METHOD DescribeWordListSets()
+	const char * SCI_METHOD DescribeWordListSets() override
 	{
 		return NULL;
 	}
-	virtual Sci_Position SCI_METHOD WordListSet(int, const char *)
+	Sci_Position SCI_METHOD WordListSet(int, const char *) override
 	{
 		return -1;
 	}
-	virtual void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess);
-	virtual void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess);
-	virtual void * SCI_METHOD PrivateCall(int, void *)
+	void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess) override;
+	void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess) override;
+	void * SCI_METHOD PrivateCall(int, void *) override
 	{
 		return NULL;
 	}
diff -r 4d2ba76f394a lexers/LexHaskell.cxx
--- a/lexers/LexHaskell.cxx	Sat Feb 25 09:13:40 2017 +1100
+++ b/lexers/LexHaskell.cxx	Sat Feb 25 09:15:35 2017 +1100
@@ -396,39 +396,39 @@
       {}
    virtual ~LexerHaskell() {}
 
-   void SCI_METHOD Release() {
+   void SCI_METHOD Release() override {
       delete this;
    }
 
-   int SCI_METHOD Version() const {
+   int SCI_METHOD Version() const override {
       return lvOriginal;
    }
 
-   const char * SCI_METHOD PropertyNames() {
+   const char * SCI_METHOD PropertyNames() override {
       return osHaskell.PropertyNames();
    }
 
-   int SCI_METHOD PropertyType(const char *name) {
+   int SCI_METHOD PropertyType(const char *name) override {
       return osHaskell.PropertyType(name);
    }
 
-   const char * SCI_METHOD DescribeProperty(const char *name) {
+   const char * SCI_METHOD DescribeProperty(const char *name) override {
       return osHaskell.DescribeProperty(name);
    }
 
-   Sci_Position SCI_METHOD PropertySet(const char *key, const char *val);
+   Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) override;
 
-   const char * SCI_METHOD DescribeWordListSets() {
+   const char * SCI_METHOD DescribeWordListSets() override {
       return osHaskell.DescribeWordListSets();
    }
 
-   Sci_Position SCI_METHOD WordListSet(int n, const char *wl);
+   Sci_Position SCI_METHOD WordListSet(int n, const char *wl) override;
 
-   void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);
+   void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override;
 
-   void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);
+   void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override;
 
-   void * SCI_METHOD PrivateCall(int, void *) {
+   void * SCI_METHOD PrivateCall(int, void *) override {
       return 0;
    }
 
diff -r 4d2ba76f394a lexers/LexJSON.cxx
--- a/lexers/LexJSON.cxx	Sat Feb 25 09:13:40 2017 +1100
+++ b/lexers/LexJSON.cxx	Sat Feb 25 09:15:35 2017 +1100
@@ -208,28 +208,28 @@
 		setKeywordJSON(CharacterSet::setAlpha, "$_") {
 	}
 	virtual ~LexerJSON() {}
-	virtual int SCI_METHOD Version() const {
+	int SCI_METHOD Version() const override {
 		return lvOriginal;
 	}
-	virtual void SCI_METHOD Release() {
+	void SCI_METHOD Release() override {
 		delete this;
 	}
-	virtual const char *SCI_METHOD PropertyNames() {
+	const char *SCI_METHOD PropertyNames() override {
 		return optSetJSON.PropertyNames();
 	}
-	virtual int SCI_METHOD PropertyType(const char *name) {
+	int SCI_METHOD PropertyType(const char *name) override {
 		return optSetJSON.PropertyType(name);
 	}
-	virtual const char *SCI_METHOD DescribeProperty(const char *name) {
+	const char *SCI_METHOD DescribeProperty(const char *name) override {
 		return optSetJSON.DescribeProperty(name);
 	}
-	virtual Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) {
+	Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) override {
 		if (optSetJSON.PropertySet(&options, key, val)) {
 			return 0;
 		}
 		return -1;
 	}
-	virtual Sci_Position SCI_METHOD WordListSet(int n, const char *wl) {
+	Sci_Position SCI_METHOD WordListSet(int n, const char *wl) override {
 		WordList *wordListN = 0;
 		switch (n) {
 			case 0:
@@ -250,23 +250,23 @@
 		}
 		return firstModification;
 	}
-	virtual void *SCI_METHOD PrivateCall(int, void *) {
+	void *SCI_METHOD PrivateCall(int, void *) override {
 		return 0;
 	}
 	static ILexer *LexerFactoryJSON() {
 		return new LexerJSON;
 	}
-	virtual const char *SCI_METHOD DescribeWordListSets() {
+	const char *SCI_METHOD DescribeWordListSets() override {
 		return optSetJSON.DescribeWordListSets();
 	}
-	virtual void SCI_METHOD Lex(Sci_PositionU startPos,
+	void SCI_METHOD Lex(Sci_PositionU startPos,
 								Sci_Position length,
 								int initStyle,
-								IDocument *pAccess);
-	virtual void SCI_METHOD Fold(Sci_PositionU startPos,
+								IDocument *pAccess) override;
+	void SCI_METHOD Fold(Sci_PositionU startPos,
 								 Sci_Position length,
 								 int initStyle,
-								 IDocument *pAccess);
+								 IDocument *pAccess) override;
 };
 
 void SCI_METHOD LexerJSON::Lex(Sci_PositionU startPos,
diff -r 4d2ba76f394a lexers/LexLaTeX.cxx
--- a/lexers/LexLaTeX.cxx	Sat Feb 25 09:13:40 2017 +1100
+++ b/lexers/LexLaTeX.cxx	Sat Feb 25 09:15:35 2017 +1100
@@ -81,8 +81,8 @@
 	static ILexer *LexerFactoryLaTeX() {
 		return new LexerLaTeX();
 	}
-	void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);
-	void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);
+	void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override;
+	void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override;
 };
 
 static bool latexIsSpecial(int ch) {
diff -r 4d2ba76f394a lexers/LexPerl.cxx
--- a/lexers/LexPerl.cxx	Sat Feb 25 09:13:40 2017 +1100
+++ b/lexers/LexPerl.cxx	Sat Feb 25 09:15:35 2017 +1100
@@ -415,30 +415,30 @@
 	}
 	virtual ~LexerPerl() {
 	}
-	void SCI_METHOD Release() {
+	void SCI_METHOD Release() override {
 		delete this;
 	}
-	int SCI_METHOD Version() const {
+	int SCI_METHOD Version() const override {
 		return lvOriginal;
 	}
-	const char *SCI_METHOD PropertyNames() {
+	const char *SCI_METHOD PropertyNames() override {
 		return osPerl.PropertyNames();
 	}
-	int SCI_METHOD PropertyType(const char *name) {
+	int SCI_METHOD PropertyType(const char *name) override {
 		return osPerl.PropertyType(name);
 	}
-	const char *SCI_METHOD DescribeProperty(const char *name) {
+	const char *SCI_METHOD DescribeProperty(const char *name) override {
 		return osPerl.DescribeProperty(name);
 	}
-	Sci_Position SCI_METHOD PropertySet(const char *key, const char *val);
-	const char *SCI_METHOD DescribeWordListSets() {
+	Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) override;
+	const char *SCI_METHOD DescribeWordListSets() override {
 		return osPerl.DescribeWordListSets();
 	}
-	Sci_Position SCI_METHOD WordListSet(int n, const char *wl);
-	void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);
-	void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);
+	Sci_Position SCI_METHOD WordListSet(int n, const char *wl) override;
+	void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override;
+	void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override;
 
-	void *SCI_METHOD PrivateCall(int, void *) {
+	void *SCI_METHOD PrivateCall(int, void *) override {
 		return 0;
 	}
 
diff -r 4d2ba76f394a lexers/LexProgress.cxx
--- a/lexers/LexProgress.cxx	Sat Feb 25 09:13:40 2017 +1100
+++ b/lexers/LexProgress.cxx	Sat Feb 25 09:15:35 2017 +1100
@@ -144,31 +144,31 @@
    }
    virtual ~LexerABL() {
    }
-   void SCI_METHOD Release() {
+   void SCI_METHOD Release() override {
       delete this;
    }
-   int SCI_METHOD Version() const {
+   int SCI_METHOD Version() const override {
       return lvOriginal;
    }
-   const char * SCI_METHOD PropertyNames() {
+   const char * SCI_METHOD PropertyNames() override {
       return osABL.PropertyNames();
    }
-   int SCI_METHOD PropertyType(const char *name) {
+   int SCI_METHOD PropertyType(const char *name) override {
       return osABL.PropertyType(name);
    }
-   const char * SCI_METHOD DescribeProperty(const char *name) {
+   const char * SCI_METHOD DescribeProperty(const char *name) override {
       return osABL.DescribeProperty(name);
    }
-   Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) ;
+   Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) override ;
    
-   const char * SCI_METHOD DescribeWordListSets() {
+   const char * SCI_METHOD DescribeWordListSets() override {
       return osABL.DescribeWordListSets();
    }
-   Sci_Position SCI_METHOD WordListSet(int n, const char *wl);
-   void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);
-   void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);
+   Sci_Position SCI_METHOD WordListSet(int n, const char *wl) override;
+   void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override;
+   void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override;
 
-   void * SCI_METHOD PrivateCall(int, void *) {
+   void * SCI_METHOD PrivateCall(int, void *) override {
       return 0;
    }
    int SCI_METHOD LineEndTypesSupported() {
diff -r 4d2ba76f394a lexers/LexPython.cxx
--- a/lexers/LexPython.cxx	Sat Feb 25 09:13:40 2017 +1100
+++ b/lexers/LexPython.cxx	Sat Feb 25 09:15:35 2017 +1100
@@ -288,63 +288,63 @@
 	}
 	virtual ~LexerPython() {
 	}
-	void SCI_METHOD Release() {
+	void SCI_METHOD Release() override {
 		delete this;
 	}
-	int SCI_METHOD Version() const {
+	int SCI_METHOD Version() const override {
 		return lvSubStyles;
 	}
-	const char * SCI_METHOD PropertyNames() {
+	const char * SCI_METHOD PropertyNames() override {
 		return osPython.PropertyNames();
 	}
-	int SCI_METHOD PropertyType(const char *name) {
+	int SCI_METHOD PropertyType(const char *name) override {
 		return osPython.PropertyType(name);
 	}
-	const char * SCI_METHOD DescribeProperty(const char *name) {
+	const char * SCI_METHOD DescribeProperty(const char *name) override {
 		return osPython.DescribeProperty(name);
 	}
-	Sci_Position SCI_METHOD PropertySet(const char *key, const char *val);
-	const char * SCI_METHOD DescribeWordListSets() {
+	Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) override;
+	const char * SCI_METHOD DescribeWordListSets() override {
 		return osPython.DescribeWordListSets();
 	}
-	Sci_Position SCI_METHOD WordListSet(int n, const char *wl);
-	void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);
-	void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);
+	Sci_Position SCI_METHOD WordListSet(int n, const char *wl) override;
+	void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override;
+	void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override;
 
-	void * SCI_METHOD PrivateCall(int, void *) {
+	void * SCI_METHOD PrivateCall(int, void *) override {
 		return 0;
 	}
 
-	int SCI_METHOD LineEndTypesSupported() {
+	int SCI_METHOD LineEndTypesSupported() override {
 		return SC_LINE_END_TYPE_UNICODE;
 	}
 
-	int SCI_METHOD AllocateSubStyles(int styleBase, int numberStyles) {
+	int SCI_METHOD AllocateSubStyles(int styleBase, int numberStyles) override {
 		return subStyles.Allocate(styleBase, numberStyles);
 	}
-	int SCI_METHOD SubStylesStart(int styleBase) {
+	int SCI_METHOD SubStylesStart(int styleBase) override {
 		return subStyles.Start(styleBase);
 	}
-	int SCI_METHOD SubStylesLength(int styleBase) {
+	int SCI_METHOD SubStylesLength(int styleBase) override {
 		return subStyles.Length(styleBase);
 	}
-	int SCI_METHOD StyleFromSubStyle(int subStyle) {
+	int SCI_METHOD StyleFromSubStyle(int subStyle) override {
 		int styleBase = subStyles.BaseStyle(subStyle);
 		return styleBase;
 	}
-	int SCI_METHOD PrimaryStyleFromStyle(int style) {
+	int SCI_METHOD PrimaryStyleFromStyle(int style) override {
 		return style;
 	}
-	void SCI_METHOD FreeSubStyles() {
+	void SCI_METHOD FreeSubStyles() override {
 		subStyles.Free();
 	}
-	void SCI_METHOD SetIdentifiers(int style, const char *identifiers) {
+	void SCI_METHOD SetIdentifiers(int style, const char *identifiers) override {
 		subStyles.SetIdentifiers(style, identifiers);
 	}
-	int SCI_METHOD DistanceToSecondaryStyles() {
+	int SCI_METHOD DistanceToSecondaryStyles() override {
 		return 0;
 	}
-	const char * SCI_METHOD GetSubStyleBases() {
+	const char * SCI_METHOD GetSubStyleBases() override {
 		return styleSubable;
 	}
 
diff -r 4d2ba76f394a lexers/LexRegistry.cxx
--- a/lexers/LexRegistry.cxx	Sat Feb 25 09:13:40 2017 +1100
+++ b/lexers/LexRegistry.cxx	Sat Feb 25 09:15:35 2017 +1100
@@ -164,47 +164,47 @@
 public:
 	LexerRegistry() {}
 	virtual ~LexerRegistry() {}
-	virtual int SCI_METHOD Version() const {
+	int SCI_METHOD Version() const override {
 		return lvOriginal;
 	}
-	virtual void SCI_METHOD Release() {
+	void SCI_METHOD Release() override {
 		delete this;
 	}
-	virtual const char *SCI_METHOD PropertyNames() {
+	const char *SCI_METHOD PropertyNames() override {
 		return optSetRegistry.PropertyNames();
 	}
-	virtual int SCI_METHOD PropertyType(const char *name) {
+	int SCI_METHOD PropertyType(const char *name) override {
 		return optSetRegistry.PropertyType(name);
 	}
-	virtual const char *SCI_METHOD DescribeProperty(const char *name) {
+	const char *SCI_METHOD DescribeProperty(const char *name) override {
 		return optSetRegistry.DescribeProperty(name);
 	}
-	virtual Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) {
+	Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) override {
 		if (optSetRegistry.PropertySet(&options, key, val)) {
 			return 0;
 		}
 		return -1;
 	}
-	virtual Sci_Position SCI_METHOD WordListSet(int, const char *) {
+	Sci_Position SCI_METHOD WordListSet(int, const char *) override {
 		return -1;
 	}
-	virtual void *SCI_METHOD PrivateCall(int, void *) {
+	void *SCI_METHOD PrivateCall(int, void *) override {
 		return 0;
 	}
 	static ILexer *LexerFactoryRegistry() {
 		return new LexerRegistry;
 	}
-	virtual const char *SCI_METHOD DescribeWordListSets() {
+	const char *SCI_METHOD DescribeWordListSets() override {
 		return optSetRegistry.DescribeWordListSets();
 	}
-	virtual void SCI_METHOD Lex(Sci_PositionU startPos,
+	void SCI_METHOD Lex(Sci_PositionU startPos,
 								Sci_Position length,
 								int initStyle,
-								IDocument *pAccess);
-	virtual void SCI_METHOD Fold(Sci_PositionU startPos,
+								IDocument *pAccess) override;
+	void SCI_METHOD Fold(Sci_PositionU startPos,
 								 Sci_Position length,
 								 int initStyle,
-								 IDocument *pAccess);
+								 IDocument *pAccess) override;
 };
 
 void SCI_METHOD LexerRegistry::Lex(Sci_PositionU startPos,
diff -r 4d2ba76f394a lexers/LexRust.cxx
--- a/lexers/LexRust.cxx	Sat Feb 25 09:13:40 2017 +1100
+++ b/lexers/LexRust.cxx	Sat Feb 25 09:15:35 2017 +1100
@@ -123,29 +123,29 @@
 public:
 	virtual ~LexerRust() {
 	}
-	void SCI_METHOD Release() {
+	void SCI_METHOD Release() override {
 		delete this;
 	}
-	int SCI_METHOD Version() const {
+	int SCI_METHOD Version() const override {
 		return lvOriginal;
 	}
-	const char * SCI_METHOD PropertyNames() {
+	const char * SCI_METHOD PropertyNames() override {
 		return osRust.PropertyNames();
 	}
-	int SCI_METHOD PropertyType(const char *name) {
+	int SCI_METHOD PropertyType(const char *name) override {
 		return osRust.PropertyType(name);
 	}
-	const char * SCI_METHOD DescribeProperty(const char *name) {
+	const char * SCI_METHOD DescribeProperty(const char *name) override {
 		return osRust.DescribeProperty(name);
 	}
-	Sci_Position SCI_METHOD PropertySet(const char *key, const char *val);
-	const char * SCI_METHOD DescribeWordListSets() {
+	Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) override;
+	const char * SCI_METHOD DescribeWordListSets() override {
 		return osRust.DescribeWordListSets();
 	}
-	Sci_Position SCI_METHOD WordListSet(int n, const char *wl);
-	void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);
-	void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);
-	void * SCI_METHOD PrivateCall(int, void *) {
+	Sci_Position SCI_METHOD WordListSet(int n, const char *wl) override;
+	void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override;
+	void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override;
+	void * SCI_METHOD PrivateCall(int, void *) override {
 		return 0;
 	}
 	static ILexer *LexerFactoryRust() {
diff -r 4d2ba76f394a lexers/LexSQL.cxx
--- a/lexers/LexSQL.cxx	Sat Feb 25 09:13:40 2017 +1100
+++ b/lexers/LexSQL.cxx	Sat Feb 25 09:15:35 2017 +1100
@@ -308,42 +308,42 @@
 
 	virtual ~LexerSQL() {}
 
-	int SCI_METHOD Version () const {
+	int SCI_METHOD Version () const override {
 		return lvOriginal;
 	}
 
-	void SCI_METHOD Release() {
+	void SCI_METHOD Release() override {
 		delete this;
 	}
 
-	const char * SCI_METHOD PropertyNames() {
+	const char * SCI_METHOD PropertyNames() override {
 		return osSQL.PropertyNames();
 	}
 
-	int SCI_METHOD PropertyType(const char *name) {
+	int SCI_METHOD PropertyType(const char *name) override {
 		return osSQL.PropertyType(name);
 	}
 
-	const char * SCI_METHOD DescribeProperty(const char *name) {
+	const char * SCI_METHOD DescribeProperty(const char *name) override {
 		return osSQL.DescribeProperty(name);
 	}
 
-	Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) {
+	Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) override {
 		if (osSQL.PropertySet(&options, key, val)) {
 			return 0;
 		}
 		return -1;
 	}
 
-	const char * SCI_METHOD DescribeWordListSets() {
+	const char * SCI_METHOD DescribeWordListSets() override {
 		return osSQL.DescribeWordListSets();
 	}
 
-	Sci_Position SCI_METHOD WordListSet(int n, const char *wl);
-	void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess);
-	void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess);
+	Sci_Position SCI_METHOD WordListSet(int n, const char *wl) override;
+	void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess) override;
+	void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess) override;
 
-	void * SCI_METHOD PrivateCall(int, void *) {
+	void * SCI_METHOD PrivateCall(int, void *) override {
 		return 0;
 	}
 
diff -r 4d2ba76f394a lexers/LexVerilog.cxx
--- a/lexers/LexVerilog.cxx	Sat Feb 25 09:13:40 2017 +1100
+++ b/lexers/LexVerilog.cxx	Sat Feb 25 09:15:35 2017 +1100
@@ -217,63 +217,63 @@
 		subStyles(styleSubable, 0x80, 0x40, activeFlag) {
 		}
 	virtual ~LexerVerilog() {}
-	int SCI_METHOD Version() const {
+	int SCI_METHOD Version() const override {
 		return lvSubStyles;
 	}
-	void SCI_METHOD Release() {
+	void SCI_METHOD Release() override {
 		delete this;
 	}
-	const char* SCI_METHOD PropertyNames() {
+	const char* SCI_METHOD PropertyNames() override {
 		return osVerilog.PropertyNames();
 	}
-	int SCI_METHOD PropertyType(const char* name) {
+	int SCI_METHOD PropertyType(const char* name) override {
 		return osVerilog.PropertyType(name);
 	}
-	const char* SCI_METHOD DescribeProperty(const char* name) {
+	const char* SCI_METHOD DescribeProperty(const char* name) override {
 		return osVerilog.DescribeProperty(name);
 	}
-	Sci_Position SCI_METHOD PropertySet(const char* key, const char* val) {
+	Sci_Position SCI_METHOD PropertySet(const char* key, const char* val) override {
 	    return osVerilog.PropertySet(&options, key, val);
 	}
-	const char* SCI_METHOD DescribeWordListSets() {
+	const char* SCI_METHOD DescribeWordListSets() override {
 		return osVerilog.DescribeWordListSets();
 	}
-	Sci_Position SCI_METHOD WordListSet(int n, const char* wl);
-	void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);
-	void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);
-	void* SCI_METHOD PrivateCall(int, void*) {
+	Sci_Position SCI_METHOD WordListSet(int n, const char* wl) override;
+	void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override;
+	void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override;
+	void* SCI_METHOD PrivateCall(int, void*) override {
 		return 0;
 	}
-	int SCI_METHOD LineEndTypesSupported() {
+	int SCI_METHOD LineEndTypesSupported() override {
 		return SC_LINE_END_TYPE_UNICODE;
 	}
-	int SCI_METHOD AllocateSubStyles(int styleBase, int numberStyles) {
+	int SCI_METHOD AllocateSubStyles(int styleBase, int numberStyles) override {
 		return subStyles.Allocate(styleBase, numberStyles);
 	}
-	int SCI_METHOD SubStylesStart(int styleBase) {
+	int SCI_METHOD SubStylesStart(int styleBase) override {
 		return subStyles.Start(styleBase);
 	}
-	int SCI_METHOD SubStylesLength(int styleBase) {
+	int SCI_METHOD SubStylesLength(int styleBase) override {
 		return subStyles.Length(styleBase);
 	}
-	int SCI_METHOD StyleFromSubStyle(int subStyle) {
+	int SCI_METHOD StyleFromSubStyle(int subStyle) override {
 		int styleBase = subStyles.BaseStyle(MaskActive(subStyle));
 		int active = subStyle & activeFlag;
 		return styleBase | active;
 	}
-	int SCI_METHOD PrimaryStyleFromStyle(int style) {
+	int SCI_METHOD PrimaryStyleFromStyle(int style) override {
 		return MaskActive(style);
  	}
-	void SCI_METHOD FreeSubStyles() {
+	void SCI_METHOD FreeSubStyles() override {
 		subStyles.Free();
 	}
-	void SCI_METHOD SetIdentifiers(int style, const char *identifiers) {
+	void SCI_METHOD SetIdentifiers(int style, const char *identifiers) override {
 		subStyles.SetIdentifiers(style, identifiers);
 	}
-	int SCI_METHOD DistanceToSecondaryStyles() {
+	int SCI_METHOD DistanceToSecondaryStyles() override {
 		return activeFlag;
 	}
-	const char * SCI_METHOD GetSubStyleBases() {
+	const char * SCI_METHOD GetSubStyleBases() override {
 		return styleSubable;
 	}
 	static ILexer* LexerFactoryVerilog() {
diff -r 4d2ba76f394a lexers/LexVisualProlog.cxx
--- a/lexers/LexVisualProlog.cxx	Sat Feb 25 09:13:40 2017 +1100
+++ b/lexers/LexVisualProlog.cxx	Sat Feb 25 09:15:35 2017 +1100
@@ -76,30 +76,30 @@
     }
     virtual ~LexerVisualProlog() {
     }
-    void SCI_METHOD Release() {
+    void SCI_METHOD Release() override {
         delete this;
     }
-    int SCI_METHOD Version() const {
+    int SCI_METHOD Version() const override {
         return lvOriginal;
     }
-    const char * SCI_METHOD PropertyNames() {
+    const char * SCI_METHOD PropertyNames() override {
         return osVisualProlog.PropertyNames();
     }
-    int SCI_METHOD PropertyType(const char *name) {
+    int SCI_METHOD PropertyType(const char *name) override {
         return osVisualProlog.PropertyType(name);
     }
-    const char * SCI_METHOD DescribeProperty(const char *name) {
+    const char * SCI_METHOD DescribeProperty(const char *name) override {
         return osVisualProlog.DescribeProperty(name);
     }
-    Sci_Position SCI_METHOD PropertySet(const char *key, const char *val);
-    const char * SCI_METHOD DescribeWordListSets() {
+    Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) override;
+    const char * SCI_METHOD DescribeWordListSets() override {
         return osVisualProlog.DescribeWordListSets();
     }
-    Sci_Position SCI_METHOD WordListSet(int n, const char *wl);
-    void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);
-    void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);
+    Sci_Position SCI_METHOD WordListSet(int n, const char *wl) override;
+    void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override;
+    void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) override;
 
-    void * SCI_METHOD PrivateCall(int, void *) {
+    void * SCI_METHOD PrivateCall(int, void *) override {
         return 0;
     }
 
diff -r 4d2ba76f394a src/CaseConvert.cxx
--- a/src/CaseConvert.cxx	Sat Feb 25 09:13:40 2017 +1100
+++ b/src/CaseConvert.cxx	Sat Feb 25 09:15:35 2017 +1100
@@ -410,7 +410,7 @@
 		else
 			return 0;
 	}
-	size_t CaseConvertString(char *converted, size_t sizeConverted, const char *mixed, size_t lenMixed) {
+	size_t CaseConvertString(char *converted, size_t sizeConverted, const char *mixed, size_t lenMixed) override {
 		size_t lenConverted = 0;
 		size_t mixedPos = 0;
 		unsigned char bytes[UTF8MaxBytes + 1];
diff -r 4d2ba76f394a src/Document.cxx
--- a/src/Document.cxx	Sat Feb 25 09:13:40 2017 +1100
+++ b/src/Document.cxx	Sat Feb 25 09:15:35 2017 +1100
@@ -2481,14 +2481,14 @@
 public:
 	explicit BuiltinRegex(CharClassify *charClassTable) : search(charClassTable) {}
 
-	virtual ~BuiltinRegex() {
+	~BuiltinRegex() override {
 	}
 
-	virtual long FindText(Document *doc, int minPos, int maxPos, const char *s,
+	long FindText(Document *doc, int minPos, int maxPos, const char *s,
                         bool caseSensitive, bool word, bool wordStart, int flags,
-                        int *length);
+                        int *length) override;
 
-	virtual const char *SubstituteByPosition(Document *doc, const char *text, int *length);
+	const char *SubstituteByPosition(Document *doc, const char *text, int *length) override;
 
 private:
 	RESearch search;
@@ -2559,10 +2559,10 @@
 		pdoc(pdoc_), end(end_) {
 	}
 
-	virtual ~DocumentIndexer() {
+	~DocumentIndexer() override {
 	}
 
-	virtual char CharAt(int index) {
+	char CharAt(int index) override {
 		if (index < 0 || index >= end)
 			return 0;
 		else
diff -r 4d2ba76f394a src/Editor.cxx
--- a/src/Editor.cxx	Sat Feb 25 09:13:40 2017 +1100
+++ b/src/Editor.cxx	Sat Feb 25 09:15:35 2017 +1100
@@ -3934,7 +3934,7 @@
 	CaseFolderASCII() {
 		StandardASCII();
 	}
-	~CaseFolderASCII() {
+	~CaseFolderASCII() override {
 	}
 };
 
diff -r 4d2ba76f394a src/ScintillaBase.cxx
--- a/src/ScintillaBase.cxx	Sat Feb 25 09:13:40 2017 +1100
+++ b/src/ScintillaBase.cxx	Sat Feb 25 09:15:35 2017 +1100
@@ -535,7 +535,7 @@
 	int lexLanguage;
 
 	explicit LexState(Document *pdoc_);
-	virtual ~LexState();
+	~LexState() override;
 	void SetLexer(uptr_t wParam);
 	void SetLexerLanguage(const char *languageName);
 	const char *DescribeWordListSets();
