Fb To Gedit Howto

Since GEdit is "official text editor" for Gnome and pretty popular but does miss FB syntax colors, here is how you get them. I made this first like year ago, lost lang file, used vb.net colors but now i thought to remake it.

Very easy to install, so take 3 minutes and you have fb colors on your gedit.

  • 1. Read IMPORTANT and NOTE parts at bottom of this post.
  • 2. Open terminal or console.
  • 3. sudo gedit /usr/share/gtksourceview-1.0/language-specs/freebasic.lang Path might be different for different distros. Just search *.lang and where you find them, change path.
  • 4. Copy/Paste source from the end of this page.
  • 5. Check first line, change "UTF-8" for your UTF code. If you are not sure what it is, open vbnet.lang (or any other .lang file) from same folder to check it.
  • 6. Save file and restart GEdit.

Now you can go View - Highlight Mode - Sources - FreeBASIC

If you dont like colors, go to Edit - Preferences - Syntax Highlightning and select FreeBASIC to edit it.

IMPORTANT!
Nearly all keywords and data types should be there. If we missed some, please post a note of it in here and ill add it on there.
You can easily add your own keywords there. I dont think i need to explain that ;)
Anyway, just remember that 250 keywords is max for one list.

NOTE:
If you start editing syntax files from that folder (just like vb.net) make sure you have backup. An error on file can make a real mess. And i mean REAL since gnome uses those .lang files pretty many other places too. If you mess your computer because of this, dont come and whine for me. ;D

NOTE2:
Keyword list updated and multiline comments support added 17'th Oct. 2007

See also: Topic about this howto at fb.net forums

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language SYSTEM "language.dtd">
<language _name="FreeBASIC" version="1.0" _section="Sources" mimetypes="text/x-fb">

<!-- /' FreeBASIC syntax script for GEdit */ -->
<!-- /' E.K.Virtanen www.ascii-world.com */ -->
<!-- /' Version 17'th Oct. 2007. Public Domain */ -->

<!-- /' COMMENTS */ -->

    <!-- /' Multiline Comment */ -->
    <block-comment _name = "Multiline Comment" style = "Comment">
        <start-regex>/&apos;</start-regex>
            <end-regex>&apos;/</end-regex>
    </block-comment>

    <!-- /' Single line comment */ -->
    <line-comment _name = "Single line Comment" style= "Comment">
        <start-regex>&apos;</start-regex>
    </line-comment>

    <!-- /' QB style comment */ -->
    <line-comment _name = "QB style comment" style= "Comment">
        <start-regex>^[rR][eE][mM]</start-regex>
    </line-comment>

<!-- /' INSIDE OF " " */ -->
    <string _name = "String" style = "String" end-at-line-end = "TRUE">
        <start-regex>&quot;</start-regex>
        <end-regex>&quot;</end-regex>
    </string>

<!-- /' KEYWORDS */ -->
        <keyword-list _name = "Run-time Library" style = "Keyword" case-sensitive="false">
                <keyword>ABS</keyword>
                <keyword>ACOS</keyword>
                <keyword>ALLOCATE</keyword>
                <keyword>ASC</keyword>
                <keyword>ASIN</keyword>
                <keyword>ATAN2</keyword>
                <keyword>ATN</keyword>
                <keyword>CALLOCATE</keyword>
            <keyword>CHAIN</keyword>
            <keyword>CHDIR</keyword>
                <keyword>CHR</keyword>
            <keyword>CLEAR</keyword>
            <keyword>CLOSE</keyword>
                <keyword>CLS</keyword>
                <keyword>COMMAND</keyword>
                <keyword>CONDBROADCAST</keyword>
                <keyword>CONDCREATE</keyword>
                <keyword>CONDDESTROY</keyword>
                <keyword>CONDSIGNAL</keyword>
                <keyword>COS</keyword>
                <keyword>CSRLIN</keyword>
                <keyword>CVD</keyword>
                <keyword>CVI</keyword>
                <keyword>CVL</keyword>
                <keyword>CVLONGINT</keyword>
                <keyword>CVS</keyword>
                <keyword>CVSHORT</keyword>
                <keyword>DATE</keyword>
                <keyword>DEALLOCATE</keyword>
                <keyword>DIR</keyword>
                <keyword>DYLIBFREE</keyword>
                <keyword>DYLIBLOAD</keyword>
                <keyword>DYLIBSYMBOL</keyword>
                <keyword>EOF</keyword>
                <keyword>ENVIRON</keyword>
                <keyword>ERASE</keyword>
                <keyword>ERL</keyword>
                <keyword>ERR</keyword>
                <keyword>ERROR</keyword>
                <keyword>EXEC</keyword>
                <keyword>EXEPATH</keyword>
                <keyword>EXP</keyword>
                <keyword>FILECOPY</keyword>
                <keyword>FILELEN</keyword>
                <keyword>FRE</keyword>
                <keyword>FREEFILE</keyword>
                <keyword>HEX</keyword>
                <keyword>INKEY</keyword>
                <keyword>INPUT</keyword>
                <keyword>INSTR</keyword>
                <keyword>INT</keyword>
                <keyword>KILL</keyword>
                <keyword>LBOUND</keyword>
                <keyword>LCASE</keyword>
                <keyword>LEFT</keyword>
                <keyword>LEN</keyword>
                <keyword>LOC</keyword>
                <keyword>LOCATE</keyword>
                <keyword>LOCK</keyword>
                <keyword>LOF</keyword>
                <keyword>LOG</keyword>
                <keyword>LPOS</keyword>
                <keyword>LPRINT</keyword>
                <keyword>LSET</keyword>
                <keyword>LTRIM</keyword>
                <keyword>MID</keyword>
                <keyword>MINUTE</keyword>
                <keyword>MKD</keyword>
                <keyword>MKDIR</keyword>
                <keyword>MKI</keyword>
                <keyword>MKL</keyword>
                <keyword>MKLONGINT</keyword>
                <keyword>MKS</keyword>
                <keyword>MKSHORT</keyword>
                <keyword>MUTEXCREATE</keyword>
                <keyword>MUTEXDESTROY</keyword>
                <keyword>MUTEXLOCK</keyword>
                <keyword>MUTEXUNLOCK</keyword>
                <keyword>NAME</keyword>
                <keyword>OCT</keyword>
                <keyword>ON</keyword>
                <keyword>OPEN</keyword>
                <keyword>COM</keyword>
                <keyword>CONS</keyword>
                <keyword>ERR</keyword>
                <keyword>LPT</keyword>
                <keyword>PIPE</keyword>
                <keyword>SCRN</keyword>
                <keyword>OUT</keyword>
                <keyword>PEEK</keyword>
                <keyword>POINTER</keyword>
                <keyword>POKE</keyword>
                <keyword>POS</keyword>
                <keyword>PRINT</keyword>
                <keyword>RANDOM</keyword>
                <keyword>RANDOMIZE</keyword>
                <keyword>READ</keyword>
                <keyword>REALLOCATE</keyword>
                <keyword>RESET</keyword>
                <keyword>RIGHT</keyword>
                <keyword>RMDIR</keyword>
                <keyword>RND</keyword>
                <keyword>RSET</keyword>
                <keyword>RTRIM</keyword>
                <keyword>RUN</keyword>
                <keyword>SEEK</keyword>
                <keyword>SETDATE</keyword>
                <keyword>SETENVIRON</keyword>
                <keyword>SETTIME</keyword>
                <keyword>SGN</keyword>
                <keyword>SHELL</keyword>
                <keyword>SIN</keyword>
                <keyword>SLEEP</keyword>
                <keyword>SPACE</keyword>
                <keyword>SPC</keyword>
                <keyword>SQR</keyword>
                <keyword>STR</keyword>
                <keyword>STRING</keyword>
                <keyword>SWAP</keyword>
                <keyword>SYSTEM</keyword>
                <keyword>TAB</keyword>
                <keyword>TAN</keyword>
                <keyword>THREADCREATE</keyword>
                <keyword>THREADWAIT</keyword>
                <keyword>TIME</keyword>
                <keyword>TIMER</keyword>
                <keyword>TRIM</keyword>
                <keyword>UBOUND</keyword>
                <keyword>UCASE</keyword>
                <keyword>VA_ARG</keyword>
                <keyword>VA_FIRST</keyword>
                <keyword>VA_NEXT</keyword>
                <keyword>VAL</keyword>
                <keyword>VALLNG</keyword>
                <keyword>VALINT</keyword>
                <keyword>VALUINT</keyword>
                <keyword>VALULNG</keyword>
                <keyword>VIEW PRINT</keyword>
                <keyword>WBIN</keyword>
                <keyword>WCHR</keyword>
                <keyword>WHEX</keyword>
                <keyword>WIDTH</keyword>
                <keyword>WINPUT</keyword>
                <keyword>WOCT</keyword>
                <keyword>WRITE</keyword>
                <keyword>WSPACE</keyword>
                <keyword>WSTR</keyword>
                <keyword>WSTRING</keyword>
        </keyword-list>

        <keyword-list _name = "Extended Run-time Library" style = "Keyword" case-sensitive="false">
                <keyword>DATEADD</keyword>
                <keyword>DATEDIFF</keyword>
                <keyword>DATEPART</keyword>
                <keyword>DATESERIAL</keyword>
                <keyword>DATEVALUE</keyword>
                <keyword>DAY</keyword>
                <keyword>HOUR</keyword>
                <keyword>ISDATE</keyword>
                <keyword>MINUTE</keyword>
                <keyword>MONTH</keyword>
                <keyword>MONTH_name</keyword>
                <keyword>NOW</keyword>
                <keyword>SECOND</keyword>
                <keyword>TIMESERIAL</keyword>
                <keyword>TIMEVALUE</keyword>
                <keyword>WEEKDAY</keyword>
                <keyword>WEEKDAY_name</keyword>
                <keyword>YEAR</keyword>
        </keyword-list>

        <keyword-list _name = "Graphics Library" style = "Keyword" case-sensitive="false">
                <keyword>BLOAD</keyword>
                <keyword>BSAVE</keyword>
                <keyword>CIRCLE</keyword>
                <keyword>COLOR</keyword>
                <keyword>DRAW</keyword>
                <keyword>FLIP</keyword>
                <keyword>IMAGECONVERTROW</keyword>
                <keyword>IMAGECREATE</keyword>
                <keyword>IMAGEDESTROY</keyword>
                <keyword>GET</keyword>
                <keyword>GETJOYSTICK</keyword>
                <keyword>GETMOUSE</keyword>
                <keyword>INP</keyword>
                <keyword>LINE</keyword>
                <keyword>MULTIKEY</keyword>
                <keyword>PAINT</keyword>
                <keyword>PALETTE</keyword>
                <keyword>PCOPY</keyword>
                <keyword>PMAP</keyword>
                <keyword>POINT</keyword>
                <keyword>PRESET</keyword>
                <keyword>PSET</keyword>
                <keyword>PUT</keyword>
                <keyword>SCREEN</keyword>
                <keyword>SCREENCOPY</keyword>
                <keyword>SCREENINFO</keyword>
                <keyword>SCREENLIST</keyword>
                <keyword>SCREENLOCK</keyword>
                <keyword>SCREENPTR</keyword>
                <keyword>SCREENRES</keyword>
                <keyword>SCREENSET</keyword>
                <keyword>SCREENSYNC</keyword>
                <keyword>SCREENUNLOCK</keyword>
                <keyword>SETMOUSE</keyword>
                <keyword>VIEW</keyword>
                <keyword>WAIT</keyword>
                <keyword>WINDOW</keyword>
                <keyword>WINDOWTITLE</keyword>
        </keyword-list>

        <keyword-list _name = "Keywords" style = "Keyword" case-sensitive="false">
                <keyword>ACCESS</keyword>
                <keyword>ALIAS</keyword>
                <keyword>ALPHA</keyword>
                <keyword>AND</keyword>
                <keyword>APPEND</keyword>
                <keyword>ASM</keyword>
                <keyword>BIN</keyword>
                <keyword>BINARY</keyword>
                <keyword>CASE</keyword>
                <keyword>CAST</keyword>
                <keyword>CBYTE</keyword>
                <keyword>CDBL</keyword>
                <keyword>CDECL</keyword>
                <keyword>CINT</keyword>
                <keyword>CLNG</keyword>
                <keyword>CLNGINT</keyword>
                <keyword>CONDWAIT</keyword>
                <keyword>CONSTRUCTOR</keyword>
                <keyword>CONTINUE</keyword>
                <keyword>CPTR</keyword>
                <keyword>CSHORT</keyword>
                <keyword>CSIGN</keyword>
                <keyword>CSNG</keyword>
                <keyword>CUBYTE</keyword>
                <keyword>CUINT</keyword>
                <keyword>CULNGINT</keyword>
                <keyword>CUNSG</keyword>
                <keyword>CURDIR</keyword>
                <keyword>CUSHORT</keyword>
                <keyword>CUSTOM</keyword>
                <keyword>DATA</keyword>
                <keyword>DECLARE</keyword>
        <keyword>DELETE</keyword>
                <keyword>DESTRUCTOR</keyword>
                <keyword>DO</keyword>
                <keyword>ELSE</keyword>
                <keyword>ENCODING</keyword>
                <keyword>END</keyword>
                <keyword>EQV</keyword>
                <keyword>EXIT</keyword>
                <keyword>EXPORT</keyword>
                <keyword>EXTERN</keyword>
                <keyword>FIX</keyword>
                <keyword>FOR</keyword>
                <keyword>FORMAT</keyword>
                <keyword>FUNCTION</keyword>
                <keyword>GOTO</keyword>
                <keyword>IF</keyword>
                <keyword>IIF</keyword>
                <keyword>IMP</keyword>
                <keyword>IMPORT</keyword>
                <keyword>IS</keyword>
                <keyword>LET</keyword>
                <keyword>LIB</keyword>
                <keyword>LOCAL</keyword>
                <keyword>LOOP</keyword>
                <keyword>MOD</keyword>
                <keyword>_nameSPACE</keyword>
                <keyword>NEXT</keyword>
        <keyword>NEW</keyword>
                <keyword>NOT</keyword>
                <keyword>OFFSETOF</keyword>
                <keyword>ONCE</keyword>
        <keyword>OPERATOR</keyword>
                <keyword>OR</keyword>
                <keyword>OUTPUT</keyword>
                <keyword>OVERLOAD</keyword>
                <keyword>PASCAL</keyword>
                <keyword>PRESERVE</keyword>
                <keyword>PRIVATE</keyword>
                <keyword>PROCPTR</keyword>
        <keyword>PROPERTY</keyword>
                <keyword>PUBLIC</keyword>
                <keyword>RESTORE</keyword>
                <keyword>RESUME</keyword>
                <keyword>RETURN</keyword>
                <keyword>SCOPE</keyword>
                <keyword>SELECT</keyword>
                <keyword>SHL</keyword>
                <keyword>SHR</keyword>
                <keyword>SIZEOF</keyword>
                <keyword>STATIC</keyword>
                <keyword>STDCALL</keyword>
                <keyword>STEP</keyword>
                <keyword>STOP</keyword>
                <keyword>STRPTR</keyword>
                <keyword>SUB</keyword>
                <keyword>THEN</keyword>
                <keyword>TO</keyword>
                <keyword>TRANS</keyword>
                <keyword>UNLOCK</keyword>
                <keyword>UNTIL</keyword>
                <keyword>USING</keyword>
                <keyword>VARPTR</keyword>
                <keyword>WEND</keyword>
                <keyword>WHILE</keyword>
                <keyword>WITH</keyword>
                <keyword>XOR</keyword>
        </keyword-list>

<!-- deprecated-qb -->
        <keyword-list _name = "deprec/qb-keywords1" style ="Keyword" case-sensitive="false">
                <keyword>CALL</keyword>
                <keyword>DEFBYTE</keyword>
                <keyword>DEFUBYTE</keyword>
                <keyword>DEFSHORT</keyword>
                <keyword>DEFUSHORT</keyword>
                <keyword>DEFUINT</keyword>
                <keyword>DEFINT</keyword>
                <keyword>DEFLNG</keyword>
                <keyword>DEFLNGINT</keyword>
                <keyword>DEFULNGINT</keyword>
                <keyword>DEFSNG</keyword>
                <keyword>DEFDBL</keyword>
                <keyword>DEFSTR</keyword>
                <keyword>GOSUB</keyword>
        </keyword-list>
        <keyword-list _name = "deprec/qb-keywords2" style ="Keyword" case-sensitive="false"
                        match-empty-string-at-beginning = "false"
                        match-empty-string-at-End = "true">
                <keyword>base</keyword>
                <keyword>byval</keyword>
                <keyword>dynamic</keyword>
                <keyword>escape</keyword>
                <keyword>explicit</keyword>
                <keyword>nokeyword</keyword>
                <keyword>private</keyword>
                <keyword>static</keyword>
        </keyword-list>
<!-- /deprecated-qb -->

        <keyword-list _name = "Intrinsic Types" style ="Data Type" case-sensitive="false">
                <keyword>any</keyword>
                <keyword>byte</keyword>
                <keyword>ubyte</keyword>
                <keyword>short</keyword>
                <keyword>ushort</keyword>
                <keyword>integer</keyword>
                <keyword>uinteger</keyword>
                <keyword>longint</keyword>
                <keyword>ulongint</keyword>
                <keyword>single</keyword>
                <keyword>double</keyword>
                <keyword>string</keyword>
                <keyword>wstring</keyword>
                <keyword>zstring</keyword>
        </keyword-list>

        <keyword-list _name = "Data Type Keywords" style = "Data Type" case-sensitive = "false">
                <keyword>dim</keyword>
                <keyword>redim</keyword>
                <keyword>const</keyword>
                <keyword>byref</keyword>
                <keyword>byval</keyword>
                <keyword>type</keyword>
                <keyword>union</keyword>
                <keyword>field</keyword>
                <keyword>enum</keyword>

                <keyword>shared</keyword>
                <keyword>common</keyword>
                <keyword>ptr</keyword>
                <keyword>as</keyword>
        </keyword-list>

        <keyword-list _name = "Intrinsic Defines" style = "Preprocessor" case-sensitive = "false">
                <keyword>__FB_BIGENDIAN__</keyword>
                <keyword>__FB_DEBUG__</keyword>
                <keyword>__FB_ERR__</keyword>
                <keyword>__FB_DOS__</keyword>
                <keyword>__FB_LINUX__</keyword>
                <keyword>__FB_MAIN__</keyword>
                <keyword>__FB_MIN_VERSION__</keyword>
                <keyword>__FB_MT__</keyword>
                <keyword>__FB_OPTION_BYVAL__</keyword>
                <keyword>__FB_OPTION_DYNAMIC__</keyword>
                <keyword>__FB_OPTION_ESCAPE__</keyword>
                <keyword>__FB_OPTION_EXPLICIT__</keyword>
                <keyword>__FB_OPTION_PRIVATE__</keyword>
                <keyword>__FB_OUT_DLL__</keyword>
                <keyword>__FB_OUT_EXE__</keyword>
                <keyword>__FB_OUT_LIB__</keyword>
                <keyword>__FB_OUT_OBJ__</keyword>
                <keyword>__FB_SIGNATURE__</keyword>
                <keyword>__FB_VERSION__</keyword>
                <keyword>__FB_VER_MAJOR__</keyword>
                <keyword>__FB_VER_MINOR__</keyword>
                <keyword>__FB_VER_PATCH__</keyword>
                <keyword>__FB_WIN32__</keyword>
                <keyword>__FILE__</keyword>
                <keyword>__FILE_NQ__</keyword>
                <keyword>__FUNCTION__</keyword>
                <keyword>__FUNCTION_NQ__</keyword>
                <keyword>__LINE__</keyword>
                <keyword>__PATH__</keyword>
                <keyword>__TIME__</keyword>
                <keyword>__DATE__</keyword>

                <keyword>ASSERT</keyword>
                <keyword>ASSERTWARN</keyword>
                <keyword>BIT</keyword>
                <keyword>BITRESET</keyword>
                <keyword>BITSET</keyword>
                <keyword>HIBYTE</keyword>
                <keyword>HIWORD</keyword>
                <keyword>LOBYTE</keyword>
                <keyword>LOWORD</keyword>
                <keyword>RGB</keyword>
                <keyword>RGBA</keyword>
        </keyword-list>

        <keyword-list _name = "Preprocessor Directives" style ="Preprocessor" case-sensitive="false"
                        match-empty-string-at-beginning = "false"
                        match-empty-string-at-End = "true"
                        beginning-regex = "^[ \t]*[#][ \t]*">
                <keyword>DEFINE</keyword>
                <keyword>ELSE</keyword>
                <keyword>ELSEIF</keyword>
                <keyword>ENDIF</keyword>
                <keyword>ENDMACRO</keyword>
                <keyword>ERROR</keyword>
                <keyword>IF</keyword>
                <keyword>IFDEF</keyword>
                <keyword>IFNDEF</keyword>
                <keyword>INCLIB</keyword>
                <keyword>INCLUDE</keyword>
                <keyword>LIBPATH</keyword>
                <keyword>MACRO</keyword>
                <keyword>PRAGMA</keyword>
                <keyword>PRINT</keyword>
                <keyword>UNDEF</keyword>
        </keyword-list>

</language>
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-Share Alike 2.5 License.