diff --git a/moo.mprj b/moo.mprj
index 6024dfd2..00eedc2f 100644
--- a/moo.mprj
+++ b/moo.mprj
@@ -34,12 +34,12 @@
- /home/muntyan/projects/moo/moo/mooapp/
+ /home/muntyan/projects/moo/moo/mooutils/
--new-app --mode=project
medit/medit
- zh_CN
+ ru.KOI8-R
diff --git a/moo/mooedit/gtksourceview/upstream/gtksourcecontextengine.c b/moo/mooedit/gtksourceview/upstream/gtksourcecontextengine.c
index f8f0d1ae..78afeac4 100644
--- a/moo/mooedit/gtksourceview/upstream/gtksourcecontextengine.c
+++ b/moo/mooedit/gtksourceview/upstream/gtksourcecontextengine.c
@@ -19,9 +19,6 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
-/* FIXME adjacent invalid segments: is it a problem? it should be taken care of,
- * but need to check anyway (it's really impossible to *test*) */
-
#include "gtksourceview-i18n.h"
#include "gtksourcecontextengine.h"
#include "gtktextregion.h"
diff --git a/moo/mooedit/gtksourceview/upstream/gtksourcelanguage-parser-1.c b/moo/mooedit/gtksourceview/upstream/gtksourcelanguage-parser-1.c
index 4781d58e..f9cea5da 100644
--- a/moo/mooedit/gtksourceview/upstream/gtksourcelanguage-parser-1.c
+++ b/moo/mooedit/gtksourceview/upstream/gtksourcelanguage-parser-1.c
@@ -597,11 +597,11 @@ parseTag (GtkSourceLanguage *language,
}
else
{
- xmlChar *tmp = xmlStrdup (BAD_CAST dgettext (
- language->priv->translation_domain,
- (gchar *)name));
+ gchar *tmp1 = _gtk_source_language_translate_string (language, (gchar*) name);
+ xmlChar *tmp2 = xmlStrdup (BAD_CAST tmp1);
id = name;
- name = tmp;
+ name = tmp2;
+ g_free (tmp1);
}
if (name == NULL)
diff --git a/moo/mooedit/gtksourceview/upstream/gtksourcelanguage-parser-2.c b/moo/mooedit/gtksourceview/upstream/gtksourcelanguage-parser-2.c
index 534034f1..0dcf32a1 100644
--- a/moo/mooedit/gtksourceview/upstream/gtksourcelanguage-parser-2.c
+++ b/moo/mooedit/gtksourceview/upstream/gtksourcelanguage-parser-2.c
@@ -1368,10 +1368,12 @@ parse_style (ParserState *parser_state,
/* FIXME: actually use this name somehow */
if (name != NULL)
{
- tmp = xmlStrdup (BAD_CAST dgettext (parser_state->language->priv->translation_domain,
- (gchar*) name));
+ gchar *tmp2 = _gtk_source_language_translate_string (parser_state->language,
+ (gchar*) name);
+ tmp = xmlStrdup (BAD_CAST tmp2);
xmlFree (name);
name = tmp;
+ g_free (tmp2);
}
else
{
diff --git a/moo/mooedit/gtksourceview/upstream/gtksourcelanguage-private.h b/moo/mooedit/gtksourceview/upstream/gtksourcelanguage-private.h
index f7829653..d9f3e99a 100644
--- a/moo/mooedit/gtksourceview/upstream/gtksourcelanguage-private.h
+++ b/moo/mooedit/gtksourceview/upstream/gtksourcelanguage-private.h
@@ -56,7 +56,10 @@ GtkSourceLanguage *_gtk_source_language_new_from_file (const gchar *filename,
GtkSourceLanguageManager *lm);
GtkSourceLanguageManager *_gtk_source_language_get_language_manager (GtkSourceLanguage *language);
-const char *_gtk_source_language_manager_get_rng_file (GtkSourceLanguageManager *lm);
+const gchar *_gtk_source_language_manager_get_rng_file (GtkSourceLanguageManager *lm);
+
+gchar *_gtk_source_language_translate_string (GtkSourceLanguage *language,
+ const gchar *string);
void _gtk_source_language_define_language_styles (GtkSourceLanguage *language);
gboolean _gtk_source_language_file_parse_version1 (GtkSourceLanguage *language,
diff --git a/moo/mooedit/gtksourceview/upstream/gtksourcelanguage.c b/moo/mooedit/gtksourceview/upstream/gtksourcelanguage.c
index d67479a4..7a2dd10f 100644
--- a/moo/mooedit/gtksourceview/upstream/gtksourcelanguage.c
+++ b/moo/mooedit/gtksourceview/upstream/gtksourcelanguage.c
@@ -233,10 +233,7 @@ process_language_node (xmlTextReaderPtr reader, const gchar *filename)
lang->priv->lang_file_name = g_strdup (filename);
tmp = xmlTextReaderGetAttribute (reader, BAD_CAST "translation-domain");
- if (tmp != NULL)
- lang->priv->translation_domain = g_strdup ((gchar*) tmp);
- else
- lang->priv->translation_domain = g_strdup (GETTEXT_PACKAGE);
+ lang->priv->translation_domain = g_strdup ((gchar*) tmp);
xmlFree (tmp);
tmp = xmlTextReaderGetAttribute (reader, BAD_CAST "hidden");
@@ -278,7 +275,7 @@ process_language_node (xmlTextReaderPtr reader, const gchar *filename)
}
else
{
- lang->priv->name = g_strdup (dgettext (lang->priv->translation_domain, (gchar*) tmp));
+ lang->priv->name = _gtk_source_language_translate_string (lang, (gchar*) tmp);
untranslated_name = tmp;
}
@@ -308,7 +305,7 @@ process_language_node (xmlTextReaderPtr reader, const gchar *filename)
}
else
{
- lang->priv->section = g_strdup (dgettext (lang->priv->translation_domain, (gchar*) tmp));
+ lang->priv->section = _gtk_source_language_translate_string (lang, (gchar*) tmp);
xmlFree (tmp);
}
@@ -347,6 +344,14 @@ process_language_node (xmlTextReaderPtr reader, const gchar *filename)
return lang;
}
+gchar *
+_gtk_source_language_translate_string (GtkSourceLanguage *language,
+ const gchar *string)
+{
+ g_return_val_if_fail (string != NULL, NULL);
+ return GD_(language->priv->translation_domain, string);
+}
+
/**
* gtk_source_language_get_id:
* @language: a #GtkSourceLanguage.
diff --git a/moo/mooedit/language-specs/Makefile.am b/moo/mooedit/language-specs/Makefile.am
index ad86d95a..e9d509a5 100644
--- a/moo/mooedit/language-specs/Makefile.am
+++ b/moo/mooedit/language-specs/Makefile.am
@@ -48,10 +48,13 @@ langs1 = \
boo.lang \
check.sh \
d.lang \
+ docbook.lang \
lua.lang \
msil.lang \
nemerle.lang \
+ ocaml.lang \
R.lang \
+ spec.lang \
vbnet.lang \
verilog.lang \
vhdl.lang
diff --git a/moo/mooedit/language-specs/css.lang b/moo/mooedit/language-specs/css.lang
index cdafd55d..9312bb90 100644
--- a/moo/mooedit/language-specs/css.lang
+++ b/moo/mooedit/language-specs/css.lang
@@ -16,76 +16,53 @@
text/css
*.css;*.CSSL
+ /*
+ */
+
-
+
-
-
+
-
- "
- "
-
-
-
-
-
-
- '
- '
-
-
-
-
-
-
diff --git a/moo/mooedit/language-specs/def.lang b/moo/mooedit/language-specs/def.lang
index 94da4454..e5d0746b 100644
--- a/moo/mooedit/language-specs/def.lang
+++ b/moo/mooedit/language-specs/def.lang
@@ -61,6 +61,7 @@
\%{float}
+
\%[ # separator
(https?|ftp|nntp|news|javascript|about): # protocol
diff --git a/moo/mooedit/language-specs/docbook.lang b/moo/mooedit/language-specs/docbook.lang
new file mode 100644
index 00000000..75e888d6
--- /dev/null
+++ b/moo/mooedit/language-specs/docbook.lang
@@ -0,0 +1,490 @@
+
+
+
+
+
+ <!--
+ -->
+
+
+
+ <!DOCTYPE
+ (\[.*\])?>
+
+
+
+ <!ENTITY
+ ">
+
+
+
+ (&|%)[a-zA-Z0-9#][a-zA-Z0-9]*;
+
+
+
+ <!\[CDATA\[
+ \]\]>
+
+
+
+ ("[^<"]*")|('[^<']*')
+
+
+
+ \??>
+
+
+
+ abstract
+ article
+ articleinfo
+ bookinfo
+ author
+ authorgroup
+ affiliation
+ copyright
+ date
+ email
+ firstname
+ orgname
+ publisher
+ publishername
+ pubdate
+ pubsnumber
+ releaseinfo
+ surname
+ revdescription
+ revhistory
+ revision
+ revnumber
+
+
+
+
+ caution
+ command
+ computeroutput
+ filename
+ firstterm
+ link
+ note
+ option
+ para
+ remark
+ replaceable
+ tip
+ ulink
+ variablelist
+ varlistentry
+ warning
+ xref
+
+
+
+
+ accel
+ application
+ guibutton
+ guiicon
+ guilabel
+ guimenuitem
+ guimenu
+ guisubmenu
+ interface
+ keycap
+ keycombo
+ keysym
+ menuchoice
+
+
+
+
+ appendix
+ book
+ chapter
+ anchor
+ citetitle
+ colspec
+ emphasis
+ entry
+ figure
+ glossary
+ glossdef
+ glossentry
+ glossterm
+ sect1
+ sect2
+ sect3
+ sect4
+ section
+
+ highlights
+ holder
+ imagedata
+ imageobject
+ indexterm
+ informaltable
+ inlinemediaobject
+ itemizedlist
+ literal
+ legalnotice
+ listitem
+ mediaobject
+ orderedlist
+ phrase
+ primary
+ programlisting
+
+ row
+ screen
+ screenshot
+ secondary
+ see
+ shortcut
+
+ table
+ tbody
+ term
+ tertiary
+ textobject
+ tgroup
+ thead
+ title
+ titleabbrev
+ uri
+ userinput
+ year
+
+ ackno
+ acronym
+ action
+ address
+ answer
+ appendixinfo
+ area
+ areaset
+ areaspec
+ arg
+ artpagenums
+ attribution
+ audiodata
+ audioobject
+ authorblurb
+ authorinitials
+ beginpage
+ bibliocoverage
+ bibliodiv
+ biblioentry
+ bibliography
+ bibliographyinfo
+ biblioid
+ bibliomisc
+ bibliomixed
+ bibliomset
+ bibliorelation
+ biblioset
+ bibliosource
+ blockinfo
+ blockquote
+ bridgehead
+ callout
+ calloutlist
+ caption
+ chapterinfo
+ citation
+ citebiblioid
+ citerefentry
+ city
+ classname
+ classsynopsis
+ classsynopsisinfo
+ cmdsynopsis
+ code
+ colgroup
+ collab
+ collabname
+ colophon
+ confdates
+ confgroup
+ confnum
+ confsponsor
+ conftitle
+ constant
+ constraint
+ constraintdef
+ constructorsynopsis
+ contractnum
+ contractsponsor
+ contrib
+ coref
+ corpauthor
+ corpcredit
+ corpname
+ country
+ database
+ dedication
+ destructorsynopsis
+ edition
+ editor
+ entrytbl
+ envar
+ epigraph
+ equation
+ errorcode
+ errorname
+ errortext
+ errortype
+ example
+ exceptionname
+ fax
+ fieldsynopsis
+ footnote
+ footnoteref
+ foreignphrase
+ formalpara
+ funcdef
+ funcparams
+ funcprototype
+ funcsynopsis
+ funcsynopsisinfo
+ function
+ glossaryinfo
+ glossdiv
+ glosslist
+ glosssee
+ glossseealso
+ graphic
+ graphicco
+ hardware
+ honorific
+ imageobjectco
+ important
+ indexdiv
+ indexentry
+ indexinfo
+ informalequation
+ informalexample
+ informalfigure
+ initializer
+ inlineequation
+ inlinegraphic
+ interfacename
+ invpartnumber
+ isbn
+ issn
+ issuenum
+ itermset
+ jobtitle
+ keycode
+ keyword
+ keywordset
+ lhs
+ lineage
+ lineannotation
+ literallayout
+ lot
+ lotentry
+ manvolnum
+ markup
+ medialabel
+ mediaobjectco
+ member
+ methodname
+ methodparam
+ methodsynopsis
+ modespec
+ modifier
+ mousebutton
+ msg
+ msgaud
+ msgentry
+ msgexplan
+ msginfo
+ msglevel
+ msgmain
+ msgorig
+ msgrel
+ msgset
+ msgsub
+ msgtext
+ nonterminal
+ objectinfo
+ olink
+ ooclass
+ ooexception
+ oointerface
+ optional
+ orgdiv
+ otheraddr
+ othercredit
+ othername
+ pagenums
+ paramdef
+ parameter
+ part
+ partinfo
+ partintro
+ personblurb
+ personname
+ phone
+ pob
+ postcode
+ preface
+ prefaceinfo
+ primaryie
+ printhistory
+ procedure
+ production
+ productionrecap
+ productionset
+ productname
+ productnumber
+
+
+
+
+
+
+ programlistingco
+ prompt
+ property
+ qandadiv
+ qandaentry
+ qandaset
+ question
+ quote
+ refclass
+ refdescriptor
+ refentry
+ refentryinfo
+ refentrytitle
+ reference
+ referenceinfo
+ refmeta
+ refmiscinfo
+ refname
+ refnamediv
+ refpurpose
+ refsect1
+ refsect1info
+ refsect2
+ refsect2info
+ refsect3
+ refsect3info
+ refsection
+ refsectioninfo
+ refsynopsisdiv
+ refsynopsisdivinfo
+ returnvalue
+ revremark
+ rhs
+ sbr
+ screenco
+ screeninfo
+ secondaryie
+ sect1info
+ sect2info
+ sect3info
+ sect4info
+ sect5
+ sect5info
+ sectioninfo
+ seealso
+ seealsoie
+ seeie
+ seg
+ seglistitem
+ segmentedlist
+ segtitle
+ seriesvolnums
+ set
+ setindex
+ setindexinfo
+ setinfo
+ sgmltag
+ shortaffil
+ sidebar
+ sidebarinfo
+ simpara
+ simplelist
+ simplemsgentry
+ simplesect
+ spanspec
+ state
+ step
+ stepalternatives
+ street
+ structfield
+ structname
+ subject
+ subjectset
+ subjectterm
+ subscript
+ substeps
+ subtitle
+ superscript
+ symbol
+ synopfragment
+ synopfragmentref
+ synopsis
+ systemitem
+ task
+ taskprerequisites
+ taskrelated
+ tasksummary
+ td
+ tertiaryie
+ textdata
+ tfoot
+ toc
+ tocback
+ tocchap
+ tocentry
+ tocfront
+ toclevel
+ tocpart
+ token
+ trademark
+ type
+ varargs
+ varname
+ videodata
+ videoobject
+ void
+ volumenum
+ wordasword
+
+
+
+
+
+ [ \t][a-zA-Z_:][a-zA-Z0-9_:-]*\b[ \t]*=
+
+
+
+ #[a-fA-F0-9][a-fA-F0-9][a-fA-F0-9][a-fA-F0-9][a-fA-F0-9][a-fA-F0-9]
+
+
+
diff --git a/moo/mooedit/language-specs/gap.lang b/moo/mooedit/language-specs/gap.lang
index ee2d169d..47c54e82 100644
--- a/moo/mooedit/language-specs/gap.lang
+++ b/moo/mooedit/language-specs/gap.lang
@@ -33,6 +33,7 @@
function
if
in
+ infinity
local
not
od
diff --git a/moo/mooedit/language-specs/java.lang b/moo/mooedit/language-specs/java.lang
index 0e951a43..f0049dc9 100644
--- a/moo/mooedit/language-specs/java.lang
+++ b/moo/mooedit/language-specs/java.lang
@@ -4,10 +4,13 @@
text/x-java
*.java
//
+ /*
+ */
+
@@ -17,21 +20,36 @@
+
"
"
+
'
'
+
+
+
+
+
class
enum
@@ -45,6 +63,7 @@
volatile
throws
+
boolean
byte
@@ -55,6 +74,7 @@
long
short
+
assert
break
@@ -74,6 +94,7 @@
try
while
+
abstract
final
@@ -84,6 +105,7 @@
strictfp
transient
+
false
new
@@ -93,19 +115,23 @@
true
void
+
const
goto
+
(\b([0-9]+|0[xX][0-9a-fA-F]+)[Ll]?\b|\b(([0-9]+[Ee][-]?[0-9]+|([0-9]*\.[0-9]+|[0-9]+\.)([Ee][-]?[0-9]+)?)[fFdD]?|[0-9]+[FfDd]))
+
+
@@ -115,5 +141,6 @@
+
diff --git a/moo/mooedit/language-specs/javascript.lang b/moo/mooedit/language-specs/javascript.lang
index 5dd396b8..ed5c86b8 100644
--- a/moo/mooedit/language-specs/javascript.lang
+++ b/moo/mooedit/language-specs/javascript.lang
@@ -43,6 +43,7 @@
\/\/
$
+
@@ -63,6 +64,7 @@
"
"
+
\\\n
diff --git a/moo/mooedit/language-specs/kate.styles b/moo/mooedit/language-specs/kate.styles
index 0cd50010..9e1c2443 100644
--- a/moo/mooedit/language-specs/kate.styles
+++ b/moo/mooedit/language-specs/kate.styles
@@ -69,57 +69,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/moo/mooedit/language-specs/language2.rng b/moo/mooedit/language-specs/language2.rng
index 3f9cb2bb..bd477785 100644
--- a/moo/mooedit/language-specs/language2.rng
+++ b/moo/mooedit/language-specs/language2.rng
@@ -29,6 +29,10 @@
+
+
+
+
diff --git a/moo/mooedit/language-specs/ocaml.lang b/moo/mooedit/language-specs/ocaml.lang
new file mode 100644
index 00000000..bafdb94e
--- /dev/null
+++ b/moo/mooedit/language-specs/ocaml.lang
@@ -0,0 +1,110 @@
+
+
+
+
+ \
+
+
+ \(\*
+ \*\)
+
+
+
+ \b[-]?[0-9][0-9_]*[lLn]?\b
+
+
+
+ \b[-]?0[xX][0-9A-Fa-f][0-9A-Fa-f_]*[lL]?\b
+
+
+
+ \b[-]?0[oO][0-7][0-7_]*[lL]?\b
+
+
+
+ \b[-]?0[bB][01][01_]*[lL]?\b
+
+
+
+ \b[-]?[0-9][0-9_]*(\.[0-9_]*)?([Ee][+-]?[0-9][0-9_]*)?
+
+
+
+ '
+ '
+
+
+
+ "
+ "
+
+
+
+ true
+ false
+
+
+
+ \b[A-Z][A-Za-z0-9_']*
+
+
+
+ [~?][a-z][A-Za-z0-9_']*
+
+
+
+ and
+ as
+ assert
+ asr
+ begin
+ class
+ constraint
+ do
+ done
+ downto
+ else
+ end
+ exception
+ external
+ for
+ fun
+ function
+ functor
+ if
+ in
+ include
+ inherit
+ initializer
+ land
+ lazy
+ let
+ lor
+ lsl
+ lsr
+ lxor
+ match
+ method
+ mod
+ module
+ mutable
+ new
+ object
+ of
+ open
+ or
+ private
+ rec
+ sig
+ struct
+ then
+ to
+ try
+ type
+ val
+ virtual
+ when
+ while
+ with
+
+
diff --git a/moo/mooedit/language-specs/po.lang b/moo/mooedit/language-specs/po.lang
index aef2434a..f6d94621 100644
--- a/moo/mooedit/language-specs/po.lang
+++ b/moo/mooedit/language-specs/po.lang
@@ -36,6 +36,7 @@
+
+
(NATIONAL[ \t\n]+)?CHAR(ACTER)?([ \t\n]+VARYING)?
+
NCHAR([ \t\n]+VARYING)?
NUMERIC|DECIMAL
INTEGER|INT|SMALLINT
+
FLOAT|DOUBLE[ \t\n]+PRECISION|REAL
CHARACTER
+
(LONG[ \t\n]+)?VARCHAR
DECIMAL
INTEGER|SMALLINT
diff --git a/moo/mooutils/mooi18n.c b/moo/mooutils/mooi18n.c
index a62f370b..da590b9d 100644
--- a/moo/mooutils/mooi18n.c
+++ b/moo/mooutils/mooi18n.c
@@ -38,3 +38,35 @@ moo_gettext (const char *string)
return string;
#endif /* !ENABLE_NLS */
}
+
+char *
+_moo_dgettext (const char *domain, const char *string)
+{
+#ifdef ENABLE_NLS
+ gchar *tmp;
+ const gchar *translated;
+
+ g_return_val_if_fail (string != NULL, NULL);
+
+ if (domain == NULL)
+ return g_strdup (moo_gettext (string));
+
+ translated = dgettext (domain, string);
+ g_print ("translated %s to %s in domain %s\n", string, translated, domain);
+
+ if (strcmp (translated, string) == 0)
+ return g_strdup (moo_gettext (string));
+
+ if (g_utf8_validate (translated, -1, NULL))
+ return g_strdup (translated);
+
+ tmp = g_locale_to_utf8 (translated, -1, NULL, NULL, NULL);
+
+ if (tmp == NULL)
+ return g_strdup (string);
+ else
+ return tmp;
+#else
+ return g_strdup (string);
+#endif /* !ENABLE_NLS */
+}
diff --git a/moo/mooutils/mooi18n.h b/moo/mooutils/mooi18n.h
index 143d90a4..01d9520d 100644
--- a/moo/mooutils/mooi18n.h
+++ b/moo/mooutils/mooi18n.h
@@ -28,6 +28,7 @@ G_BEGIN_DECLS
#define N_(String) (String)
#define D_(String,Domain) dgettext (Domain, String)
#define QD_(String,Domain) g_strip_context ((String), D_ (String, Domain))
+#define GD_(Domain,String) _moo_dgettext (Domain, String)
#else /* !ENABLE_NLS */
@@ -43,6 +44,7 @@ G_BEGIN_DECLS
#define Q_(String) g_strip_context ((String), (String))
#define D_(String,Domain) (String)
#define QD_(String,Domain) g_strip_context ((String), (String))
+#define GD_(String,Domain) (String)
#define textdomain(String) (String)
#define gettext(String) (String)
#define dgettext(Domain,String) (String)
@@ -56,6 +58,7 @@ G_BEGIN_DECLS
const char *moo_gettext (const char *string);
+char *_moo_dgettext (const char *domain, const char *string);
G_END_DECLS