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>/'</start-regex>
<end-regex>'/</end-regex>
</block-comment>
<!-- /' Single line comment */ -->
<line-comment _name = "Single line Comment" style= "Comment">
<start-regex>'</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>"</start-regex>
<end-regex>"</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>