Revision: 1510 http://svn.sourceforge.net/geany/?rev=1510&view=rev Author: eht16 Date: 2007-05-06 07:05:43 -0700 (Sun, 06 May 2007)
Log Message: ----------- Added new filetype Haskell (patch by Guillaume Hoffmann, thanks).
Modified Paths: -------------- trunk/ChangeLog trunk/THANKS trunk/scintilla/KeyWords.cxx trunk/scintilla/Makefile.am trunk/scintilla/makefile.win32 trunk/src/filetypes.c trunk/src/filetypes.h trunk/src/highlighting.c trunk/src/highlighting.h trunk/src/sci_cb.c
Added Paths: ----------- trunk/data/filetypes.haskell trunk/scintilla/LexHaskell.cxx
Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2007-05-05 17:01:59 UTC (rev 1509) +++ trunk/ChangeLog 2007-05-06 14:05:43 UTC (rev 1510) @@ -1,3 +1,12 @@ +2007-05-06 Enrico Tröger enrico.troeger@uvena.de + + * data/filetypes.haskell, scintilla/KeyWords.cxx, + scintilla/LexHaskell.cxx, scintilla/Makefile.am, + scintilla/makefile.win32, src/filetypes.c, src/filetypes.h, + src/highlighting.c, src/highlighting.h, src/sci_cb.c, THANKS: + Added new filetype Haskell (patch by Guillaume Hoffmann, thanks). + + 2007-05-05 Nick Treleaven nick.treleaven@btinternet.com
* src/keybindings.c:
Modified: trunk/THANKS =================================================================== --- trunk/THANKS 2007-05-05 17:01:59 UTC (rev 1509) +++ trunk/THANKS 2007-05-06 14:05:43 UTC (rev 1510) @@ -24,9 +24,10 @@ Jeff Pohlmeyer <yetanothergeek(at)gmail(dot)com> - "Allow DnD", "Use tabs" and other great patches Tomás Vírseda <kaskaras(at)gmail(dot)com> - sort open files patch Dirk Weber <dietrich-weber(at)web(dot)de> -Slava Semushin <slava(dot)semushin(at)gmail(dot)com> - patch to improve SVN checks in cofigure script +Slava Semushin <slava(dot)semushin(at)gmail(dot)com> - patch to improve SVN checks in configure script John Gabriele <jmg3000(at)gmail(dot)com> - documentation patches Anh Phạm <cs(dot)phamtuananh(at)gmail(dot)com> - various patches +Guillaume Hoffmann <guillaumh(at)gmail(dot)com> - Haskell filetype patch
Translators: ----------------------------------
Added: trunk/data/filetypes.haskell =================================================================== --- trunk/data/filetypes.haskell (rev 0) +++ trunk/data/filetypes.haskell 2007-05-06 14:05:43 UTC (rev 1510) @@ -0,0 +1,52 @@ +# For complete documentation of this file, please see Geany's main documentation +[styling] +# foreground;background;bold;italic +default=0x000000;0xffffff;false;false +commentline=0x808080;0xffffff;false;false +commentblock=0x808080;0xffffff;false;false +commentblock2=0x808080;0xffffff;false;false +commentblock3=0x808080;0xffffff;false;false +number=0x007f00;0xffffff;false;false +keyword=0x00007f;0xffffff;true;false +import=0x991111;0xffffff;false;false +string=0xff901e;0xffffff;false;false +character=0x7f007f;0xffffff;false;false +class=0x0000d0;0xffffff;false;false +operator=0x301010;0xffffff;false;false +identifier=0x000000;0xffffff;false;false +instance=0x000000;0xffffff;false;false +capital=0x635b00;0xffffff;false;false +module=0x007f7f;0xffffff;false;false +data=0x000000;0xffffff;false;false + +[keywords] +# all items must be in one line +keywords=as case class data deriving do else if import in infixl infixr instance let module of primitive qualified then type where + + +[settings] +# the following characters are these which a "word" can contains, see documentation +#wordchars=_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 + +# if only single comment char is supported like # in this file, leave comment_close blank +comment_open=-- +comment_close= + +# set to false if a comment character/string should start at column 0 of a line, true uses any +# indentation of the line, e.g. setting to true causes the following on pressing CTRL+d + #command_example(); +# setting to false would generate this +# command_example(); +# This setting works only for single line comments +comment_use_indent=true + +# context action command (please see Geany's main documentation for details) +context_action_cmd= + +[build_settings] +# %f will be replaced by the complete filename +# %e will be replaced by the filename without extension +# (use only one of it at one time) +compiler= +linker= +run_cmd=
Modified: trunk/scintilla/KeyWords.cxx =================================================================== --- trunk/scintilla/KeyWords.cxx 2007-05-05 17:01:59 UTC (rev 1509) +++ trunk/scintilla/KeyWords.cxx 2007-05-06 14:05:43 UTC (rev 1510) @@ -168,6 +168,7 @@ LINK_LEXER(lmVHDL); LINK_LEXER(lmD); LINK_LEXER(lmLua); + LINK_LEXER(lmHaskell);
//--Autogenerated -- end of automatically generated section
Added: trunk/scintilla/LexHaskell.cxx =================================================================== --- trunk/scintilla/LexHaskell.cxx (rev 0) +++ trunk/scintilla/LexHaskell.cxx 2007-05-06 14:05:43 UTC (rev 1510) @@ -0,0 +1,263 @@ +/****************************************************************** + * LexHaskell.cxx + * + * A haskell lexer for the scintilla code control. + * Some stuff "lended" from LexPython.cxx and LexCPP.cxx. + * External lexer stuff inspired from the caml external lexer. + * + * Written by Tobias Engvall - tumm at dtek dot chalmers dot se + * + * + * TODO: + * * Implement a folder :) + * * Nice Character-lexing (stuff inside '''), LexPython has + * this. + * + * + *****************************************************************/ + +#include <stdlib.h> +#include <string.h> +#include <ctype.h> +#include <stdio.h> +#include <stdarg.h> + +#include "Platform.h" + +#include "PropSet.h" +#include "Accessor.h" +#include "StyleContext.h" +#include "KeyWords.h" +#include "Scintilla.h" +#include "SciLexer.h" + +#ifdef BUILD_AS_EXTERNAL_LEXER + +#include "ExternalLexer.h" +#include "WindowAccessor.h" + +#define BUILD_EXTERNAL_LEXER 0 + +#endif + +// Max level of nested comments +#define SCE_HA_COMMENTMAX SCE_HA_COMMENTBLOCK3 + + +enum kwType { kwOther, kwClass, kwData, kwInstance, kwImport, kwModule, kwType}; + +static inline bool IsNewline(const int ch) { + return (ch == '\n' || ch == '\r'); +} + +static inline bool IsWhitespace(const int ch) { + return ( ch == ' ' + || ch == '\t' + || IsNewline(ch) ); +} + +static inline bool IsAWordStart(const int ch) { + return (ch < 0x80) && (isalnum(ch) || ch == '_'); +} + +static inline bool IsAWordChar(const int ch) { + return (ch < 0x80) && (isalnum(ch) || ch == '.' || ch == '_' || ch == '''); +} + +static void ColorizeHaskellDoc(unsigned int startPos, int length, int initStyle, + WordList *keywordlists[], Accessor &styler) { + + WordList &keywords = *keywordlists[0]; + + int kwLast = kwOther; + + StyleContext sc(startPos, length, initStyle, styler); + + for (; sc.More(); sc.Forward()) { + + // Check for state end + // Operator + if (sc.state == SCE_HA_OPERATOR) { + kwLast = kwOther; + sc.SetState(SCE_HA_DEFAULT); + } + // String + else if (sc.state == SCE_HA_STRING) { + if (sc.ch == '"') { + sc.ForwardSetState(SCE_HA_DEFAULT); + } + } + // Char + else if (sc.state == SCE_HA_CHARACTER) { + if (sc.ch == ''') { + sc.ForwardSetState(SCE_HA_DEFAULT); + } + } + // Number + else if (sc.state == SCE_HA_NUMBER) { + if (!IsADigit(sc.ch)) { + sc.SetState(SCE_HA_DEFAULT); + } + } + // Types, constructors, etc. + else if (sc.state == SCE_HA_CAPITAL) { + if (!IsAWordChar(sc.ch) || sc.ch == '.') { + sc.SetState(SCE_HA_DEFAULT); + } + } + // Identifier + else if (sc.state == SCE_HA_IDENTIFIER) { + if (!IsAWordChar(sc.ch)) { + char s[100]; + sc.GetCurrent(s, sizeof(s)); + int style = SCE_HA_IDENTIFIER; + if ((kwLast == kwImport) || (strcmp(s,"qualified") == 0) || (strcmp(s,"as") == 0)) { + style = SCE_HA_IMPORT; + } else if (keywords.InList(s)) { + style = SCE_HA_KEYWORD; + } else if (kwLast == kwData) { + style = SCE_HA_DATA; + } else if (kwLast == kwClass) { + style = SCE_HA_CLASS; + } else if (kwLast == kwModule) { + style = SCE_HA_MODULE; + } else if (isupper(s[0])) { + style = SCE_HA_CAPITAL; + } + sc.ChangeState(style); + sc.SetState(SCE_HA_DEFAULT); + if (style == SCE_HA_KEYWORD) { + if (0 == strcmp(s, "class")) + kwLast = kwClass; + else if (0 == strcmp(s, "data")) + kwLast = kwData; + else if (0 == strcmp(s, "instance")) + kwLast = kwInstance; + else if (0 == strcmp(s, "import")) + kwLast = kwImport; + else if (0 == strcmp(s, "module")) + kwLast = kwModule; + else + kwLast = kwOther; + } else if (style == SCE_HA_CLASS || style == SCE_HA_IMPORT || + style == SCE_HA_MODULE || style == SCE_HA_CAPITAL || + style == SCE_HA_DATA || style == SCE_HA_INSTANCE) { + kwLast = kwOther; + } + } + } + // Comments + // Oneliner + else if (sc.state == SCE_HA_COMMENTLINE) { + if (IsNewline(sc.ch)) + sc.SetState(SCE_HA_DEFAULT); + } + // Nested + else if (sc.state >= SCE_HA_COMMENTBLOCK) { + if (sc.Match("{-")) { + if (sc.state < SCE_HA_COMMENTMAX) + sc.SetState(sc.state + 1); + } + else if (sc.Match("-}")) { + sc.Forward(); + if (sc.state == SCE_HA_COMMENTBLOCK) + sc.ForwardSetState(SCE_HA_DEFAULT); + else + sc.ForwardSetState(sc.state - 1); + } + } + // New state? + if (sc.state == SCE_HA_DEFAULT) { + // Digit + if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) { + sc.SetState(SCE_HA_NUMBER); + } + // Comment line + else if (sc.Match("--")) { + sc.SetState(SCE_HA_COMMENTLINE); + // Comment block + } + else if (sc.Match("{-")) { + sc.SetState(SCE_HA_COMMENTBLOCK); + } + // String + else if (sc.Match('"')) { + sc.SetState(SCE_HA_STRING); + } + // Character + else if (sc.Match(''') && IsWhitespace(sc.GetRelative(-1)) ) { + sc.SetState(SCE_HA_CHARACTER); + } + // Stringstart + else if (sc.Match('"')) { + sc.SetState(SCE_HA_STRING); + } + // Operator + else if (isascii(sc.ch) && isoperator(static_cast<char>(sc.ch))) { + sc.SetState(SCE_HA_OPERATOR); + } + // Keyword + else if (IsAWordStart(sc.ch)) { + sc.SetState(SCE_HA_IDENTIFIER); + } + + } + } + sc.Complete(); +} + +// External stuff - used for dynamic-loading, not implemented in wxStyledTextCtrl yet. +// Inspired by the caml external lexer - Credits to Robert Roessler - http://www.rftp.com +#ifdef BUILD_EXTERNAL_LEXER +static const char* LexerName = "haskell"; + +void EXT_LEXER_DECL Lex(unsigned int lexer, unsigned int startPos, int length, int initStyle, + char *words[], WindowID window, char *props) +{ + PropSet ps; + ps.SetMultiple(props); + WindowAccessor wa(window, ps); + + int nWL = 0; + for (; words[nWL]; nWL++) ; + WordList** wl = new WordList* [nWL + 1]; + int i = 0; + for (; i<nWL; i++) + { + wl[i] = new WordList(); + wl[i]->Set(words[i]); + } + wl[i] = 0; + + ColorizeHaskellDoc(startPos, length, initStyle, wl, wa); + wa.Flush(); + for (i=nWL-1;i>=0;i--) + delete wl[i]; + delete [] wl; +} + +void EXT_LEXER_DECL Fold (unsigned int lexer, unsigned int startPos, int length, int initStyle, + char *words[], WindowID window, char *props) +{ + +} + +int EXT_LEXER_DECL GetLexerCount() +{ + return 1; +} + +void EXT_LEXER_DECL GetLexerName(unsigned int Index, char *name, int buflength) +{ + if (buflength > 0) { + buflength--; + int n = strlen(LexerName); + if (n > buflength) + n = buflength; + memcpy(name, LexerName, n), name[n] = '\0'; + } +} +#endif + +LexerModule lmHaskell(SCLEX_HASKELL, ColorizeHaskellDoc, "haskell"); +
Modified: trunk/scintilla/Makefile.am =================================================================== --- trunk/scintilla/Makefile.am 2007-05-05 17:01:59 UTC (rev 1509) +++ trunk/scintilla/Makefile.am 2007-05-06 14:05:43 UTC (rev 1510) @@ -27,7 +27,8 @@ LexRuby.cxx \ LexSQL.cxx \ LexTCL.cxx \ -LexVHDL.cxx +LexVHDL.cxx \ +LexHaskell.cxx
SRCS= \ CallTip.cxx \
Modified: trunk/scintilla/makefile.win32 =================================================================== --- trunk/scintilla/makefile.win32 2007-05-05 17:01:59 UTC (rev 1509) +++ trunk/scintilla/makefile.win32 2007-05-06 14:05:43 UTC (rev 1510) @@ -62,7 +62,7 @@ LEXOBJS=\ LexBash.o LexAsm.o LexCSS.o LexConf.o LexCPP.o LexCrontab.o LexHTML.o LexOthers.o LexPascal.o \ LexPerl.o LexPython.o LexSQL.o LexCaml.o LexOMS.o LexTCL.o LexRuby.o LexFortran.o LexVHDL.o \ -LexD.o LexLua.o +LexD.o LexLua.o LexHaskell.o #--Autogenerated -- end of automatically generated section
all: $(COMPLIB)
Modified: trunk/src/filetypes.c =================================================================== --- trunk/src/filetypes.c 2007-05-05 17:01:59 UTC (rev 1509) +++ trunk/src/filetypes.c 2007-05-06 14:05:43 UTC (rev 1510) @@ -70,7 +70,8 @@ FILETYPE_UID_HTML, // 25 FILETYPE_UID_VHDL, // 26 FILETYPE_UID_JS, // 27 - FILETYPE_UID_LUA // 28 + FILETYPE_UID_LUA, // 28 + FILETYPE_UID_HASKELL // 29 };
@@ -113,6 +114,7 @@ case FILETYPE_UID_VHDL: return filetypes[GEANY_FILETYPES_VHDL]; case FILETYPE_UID_JS: return filetypes[GEANY_FILETYPES_JS]; case FILETYPE_UID_LUA: return filetypes[GEANY_FILETYPES_LUA]; + case FILETYPE_UID_HASKELL: return filetypes[GEANY_FILETYPES_HASKELL]; default: return NULL; } } @@ -343,6 +345,19 @@ filetypes[GEANY_FILETYPES_FERITE]->comment_open = g_strdup("/*"); filetypes[GEANY_FILETYPES_FERITE]->comment_close = g_strdup("*/");
+#define HASKELL + filetypes[GEANY_FILETYPES_HASKELL]->id = GEANY_FILETYPES_HASKELL; + filetypes[GEANY_FILETYPES_HASKELL]->uid = FILETYPE_UID_HASKELL; + filetypes[GEANY_FILETYPES_HASKELL]->lang = -2; + filetypes[GEANY_FILETYPES_HASKELL]->name = g_strdup("Haskell"); + filetypes[GEANY_FILETYPES_HASKELL]->has_tags = FALSE; + filetypes[GEANY_FILETYPES_HASKELL]->title = g_strdup(_("Haskell source file")); + filetypes[GEANY_FILETYPES_HASKELL]->extension = g_strdup("hs"); + filetypes[GEANY_FILETYPES_HASKELL]->pattern = utils_strv_new("*.hs", "*.lhs", NULL); + filetypes[GEANY_FILETYPES_HASKELL]->style_func_ptr = styleset_haskell; + filetypes[GEANY_FILETYPES_HASKELL]->comment_open = g_strdup("--"); + filetypes[GEANY_FILETYPES_HASKELL]->comment_close = NULL; + #define SH filetypes[GEANY_FILETYPES_SH]->id = GEANY_FILETYPES_SH; filetypes[GEANY_FILETYPES_SH]->uid = FILETYPE_UID_SH;
Modified: trunk/src/filetypes.h =================================================================== --- trunk/src/filetypes.h 2007-05-05 17:01:59 UTC (rev 1509) +++ trunk/src/filetypes.h 2007-05-06 14:05:43 UTC (rev 1510) @@ -51,6 +51,7 @@ GEANY_FILETYPES_TCL, GEANY_FILETYPES_LUA, GEANY_FILETYPES_FERITE, + GEANY_FILETYPES_HASKELL, GEANY_FILETYPES_SH, GEANY_FILETYPES_MAKE, GEANY_FILETYPES_XML,
Modified: trunk/src/highlighting.c =================================================================== --- trunk/src/highlighting.c 2007-05-05 17:01:59 UTC (rev 1509) +++ trunk/src/highlighting.c 2007-05-06 14:05:43 UTC (rev 1510) @@ -2379,6 +2379,79 @@ }
+static void styleset_haskell_init(void) +{ + GKeyFile *config = g_key_file_new(); + GKeyFile *config_home = g_key_file_new(); + + load_keyfiles(config, config_home, GEANY_FILETYPES_HASKELL); + + new_style_array(GEANY_FILETYPES_HASKELL, 17); + + get_keyfile_hex(config, config_home, "styling", "default", "0x000000", "0xffffff", "false", &style_sets[GEANY_FILETYPES_HASKELL].styling[0]); + get_keyfile_hex(config, config_home, "styling", "commentline", "0x808080", "0xffffff", "false", &style_sets[GEANY_FILETYPES_HASKELL].styling[1]); + get_keyfile_hex(config, config_home, "styling", "commentblock", "0x808080", "0xffffff", "false", &style_sets[GEANY_FILETYPES_HASKELL].styling[2]); + get_keyfile_hex(config, config_home, "styling", "commentblock2", "0x808080", "0xffffff", "false", &style_sets[GEANY_FILETYPES_HASKELL].styling[3]); + get_keyfile_hex(config, config_home, "styling", "commentblock3", "0x808080", "0xffffff", "false", &style_sets[GEANY_FILETYPES_HASKELL].styling[4]); + get_keyfile_hex(config, config_home, "styling", "number", "0x007f00", "0xffffff", "false", &style_sets[GEANY_FILETYPES_HASKELL].styling[5]); + get_keyfile_hex(config, config_home, "styling", "keyword", "0x00007f", "0xffffff", "true", &style_sets[GEANY_FILETYPES_HASKELL].styling[6]); + get_keyfile_hex(config, config_home, "styling", "import", "0x991111", "0xffffff", "false", &style_sets[GEANY_FILETYPES_HASKELL].styling[7]); + get_keyfile_hex(config, config_home, "styling", "string", "0xff901e", "0xffffff", "false", &style_sets[GEANY_FILETYPES_HASKELL].styling[8]); + get_keyfile_hex(config, config_home, "styling", "character", "0xff901e", "0xffffff", "false", &style_sets[GEANY_FILETYPES_HASKELL].styling[9]); + get_keyfile_hex(config, config_home, "styling", "class", "0x0000d0", "0xffffff", "false", &style_sets[GEANY_FILETYPES_HASKELL].styling[10]); + get_keyfile_hex(config, config_home, "styling", "operator", "0x301010", "0xffffff", "false", &style_sets[GEANY_FILETYPES_HASKELL].styling[11]); + get_keyfile_hex(config, config_home, "styling", "identifier", "0x000000", "0xffffff", "false", &style_sets[GEANY_FILETYPES_HASKELL].styling[12]); + get_keyfile_hex(config, config_home, "styling", "instance", "0x000000", "0xffffff", "false", &style_sets[GEANY_FILETYPES_HASKELL].styling[13]); + get_keyfile_hex(config, config_home, "styling", "capital", "0x635b00", "0xffffff", "false", &style_sets[GEANY_FILETYPES_HASKELL].styling[14]); + get_keyfile_hex(config, config_home, "styling", "module", "0x007f7f", "0xffffff", "false", &style_sets[GEANY_FILETYPES_HASKELL].styling[15]); + get_keyfile_hex(config, config_home, "styling", "data", "0x000000", "0xffffff", "false", &style_sets[GEANY_FILETYPES_HASKELL].styling[16]); + + style_sets[GEANY_FILETYPES_HASKELL].keywords = g_new(gchar*, 2); + get_keyfile_keywords(config, config_home, "keywords", "keywords", GEANY_FILETYPES_HASKELL, 0, + "as case class data deriving do else if import in infixl infixr instance let module of primitive qualified then type where"); + style_sets[GEANY_FILETYPES_HASKELL].keywords[1] = NULL; + + get_keyfile_wordchars(config, config_home, &style_sets[GEANY_FILETYPES_HASKELL].wordchars); + filetypes_get_config(config, config_home, GEANY_FILETYPES_HASKELL); + + g_key_file_free(config); + g_key_file_free(config_home); +} + + +void styleset_haskell(ScintillaObject *sci) +{ + styleset_common(sci, 5); + if (style_sets[GEANY_FILETYPES_HASKELL].styling == NULL) styleset_haskell_init(); + + SSM(sci, SCI_SETWORDCHARS, 0, (sptr_t) style_sets[GEANY_FILETYPES_HASKELL].wordchars); + SSM(sci, SCI_AUTOCSETMAXHEIGHT, app->autocompletion_max_height, 0); + + SSM(sci, SCI_SETLEXER, SCLEX_HASKELL, 0); + + SSM(sci, SCI_SETKEYWORDS, 0, (sptr_t) style_sets[GEANY_FILETYPES_HASKELL].keywords[0]); + + set_sci_style(sci, STYLE_DEFAULT, GEANY_FILETYPES_HASKELL, 0); + set_sci_style(sci, SCE_HA_DEFAULT, GEANY_FILETYPES_HASKELL, 0); + set_sci_style(sci, SCE_HA_COMMENTLINE, GEANY_FILETYPES_HASKELL, 1); + set_sci_style(sci, SCE_HA_COMMENTBLOCK, GEANY_FILETYPES_HASKELL, 2); + set_sci_style(sci, SCE_HA_COMMENTBLOCK2, GEANY_FILETYPES_HASKELL, 3); + set_sci_style(sci, SCE_HA_COMMENTBLOCK3, GEANY_FILETYPES_HASKELL, 4); + set_sci_style(sci, SCE_HA_NUMBER, GEANY_FILETYPES_HASKELL, 5); + set_sci_style(sci, SCE_HA_KEYWORD, GEANY_FILETYPES_HASKELL, 6); + set_sci_style(sci, SCE_HA_IMPORT, GEANY_FILETYPES_HASKELL, 7); + set_sci_style(sci, SCE_HA_STRING, GEANY_FILETYPES_HASKELL, 8); + set_sci_style(sci, SCE_HA_CHARACTER, GEANY_FILETYPES_HASKELL, 9); + set_sci_style(sci, SCE_HA_CLASS, GEANY_FILETYPES_HASKELL, 10); + set_sci_style(sci, SCE_HA_OPERATOR, GEANY_FILETYPES_HASKELL, 11); + set_sci_style(sci, SCE_HA_IDENTIFIER, GEANY_FILETYPES_HASKELL, 12); + set_sci_style(sci, SCE_HA_INSTANCE, GEANY_FILETYPES_HASKELL, 13); + set_sci_style(sci, SCE_HA_CAPITAL, GEANY_FILETYPES_HASKELL, 14); + set_sci_style(sci, SCE_HA_MODULE, GEANY_FILETYPES_HASKELL, 15); + set_sci_style(sci, SCE_HA_DATA, GEANY_FILETYPES_HASKELL, 16); +} + + static void styleset_caml_init(void) { GKeyFile *config = g_key_file_new(); @@ -2452,6 +2525,8 @@ }
+ + static void styleset_oms_init(void) { GKeyFile *config = g_key_file_new();
Modified: trunk/src/highlighting.h =================================================================== --- trunk/src/highlighting.h 2007-05-05 17:01:59 UTC (rev 1509) +++ trunk/src/highlighting.h 2007-05-06 14:05:43 UTC (rev 1510) @@ -77,6 +77,8 @@
void styleset_caml(ScintillaObject *sci);
+void styleset_haskell(ScintillaObject *sci); + void styleset_oms(ScintillaObject *sci);
void styleset_tcl(ScintillaObject *sci);
Modified: trunk/src/sci_cb.c =================================================================== --- trunk/src/sci_cb.c 2007-05-05 17:01:59 UTC (rev 1509) +++ trunk/src/sci_cb.c 2007-05-06 14:05:43 UTC (rev 1510) @@ -2102,6 +2102,17 @@ result = TRUE; break; } + case SCLEX_HASKELL: + { + if (style == SCE_HA_COMMENTLINE || + style == SCE_HA_COMMENTBLOCK || + style == SCE_HA_COMMENTBLOCK2 || + style == SCE_HA_COMMENTBLOCK3 || + style == SCE_HA_CHARACTER || + style == SCE_HA_STRING) + result = TRUE; + break; + } case SCLEX_HTML: { if (style == SCE_HPHP_SIMPLESTRING ||
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.