Output filters live in xml file now

master
Yevgen Muntyan 2007-02-27 22:27:49 -06:00
parent 40742bb240
commit 7a01c305f7
6 changed files with 1198 additions and 75 deletions

View File

@ -2,7 +2,7 @@
SUBDIRS = gtksourceview plugins language-specs
mooedit_toolsdir = $(MOO_DATA_DIR)
mooedit_tools_DATA = context.cfg menu.cfg filters.cfg
mooedit_tools_DATA = context.cfg menu.cfg filters.xml
dummy_targets = \
moocommand-exe.o \
@ -42,91 +42,88 @@ mooedit_include_headers = \
mootextstylescheme.h \
mootextview.h
mooedit_noinst_headers = \
medit-ui.h \
moocommand-exe.h \
moocommand-script.h \
moocommand-private.h \
moocommand-exe-private.h \
moocommand.h \
moocommanddisplay.h \
mooedit-private.h \
mooedit-ui.h \
mooeditaction-factory.h \
mooeditaction.h \
mooeditdialogs.h \
mooeditfileops.h \
mooeditfiltersettings.h \
mooeditor-private.h \
mooeditprefs-glade.h \
mooeditprogress-glade.h \
mooeditsavemultiple-glade.h \
mooedittools-glade.h \
moofold.h \
mookeyfile.h \
moolang-private.h \
moolangmgr-private.h \
moolinebuffer.h \
moooutputfiltersimple.h \
moopluginprefs-glade.h \
mooprint-glade.h \
mootext-private.h \
mootextbox.h \
mootextbtree.h \
mootextfind-glade.h \
mootextfind.h \
mootextgotoline-glade.h \
mootextsearch-private.h \
mootextview-private.h \
moousertools-prefs.h \
moousertools.h \
quicksearch-glade.h \
statusbar-glade.h
mooedit_sources = \
$(mooedit_include_headers) \
$(mooedit_noinst_headers) \
$(moocommand_stuff) \
medit-ui.h \
moocmdview.c \
moocommand-script.c \
moocommand.c \
moocommanddisplay.c \
mooedit-bookmarks.c \
mooedit-enums.c \
mooedit-script.c \
mooedit.c \
mooeditaction-factory.c \
moocommanddisplay.h \
moocommand-exe.h \
moocommand-exe-private.h \
moocommand.h \
moocommand-private.h \
moocommand-script.c \
moocommand-script.h \
mooeditaction.c \
mooeditaction-factory.c \
mooeditaction-factory.h \
mooeditaction.h \
mooedit-bookmarks.c \
mooedit.c \
mooeditconfig.c \
mooeditdialogs.c \
mooeditdialogs.h \
mooedit-enums.c \
mooeditfileops.c \
mooeditfileops.h \
mooeditfiltersettings.c \
mooeditfiltersettings.h \
mooeditinput.c \
mooeditor.c \
mooeditor-private.h \
mooeditprefs.c \
mooeditprefs-glade.h \
mooeditprefspage.c \
mooedit-private.h \
mooeditprogress-glade.h \
mooeditsavemultiple-glade.h \
mooedit-script.c \
mooedittools-glade.h \
mooedit-ui.h \
mooeditwindow.c \
moofold.c \
moofold.h \
mooindenter.c \
mookeyfile.c \
mookeyfile.h \
moolang.c \
moolangmgr.c \
moolangmgr-private.h \
moolang-private.h \
moolinebuffer.c \
moolinebuffer.h \
moolinemark.c \
moolineview.c \
moooutputfilter.c \
moooutputfiltersimple.c \
mooplugin-loader.c \
moooutputfilterregex.c \
moooutputfilterregex.h \
mooplugin.c \
mooplugin-loader.c \
moopluginprefs-glade.h \
mooprint-glade.h \
mootextbox.c \
mootextbox.h \
mootextbtree.c \
mootextbtree.h \
mootextbuffer.c \
mootextfind.c \
mootextfind-glade.h \
mootextfind.h \
mootextgotoline-glade.h \
mootext-private.h \
mootextsearch.c \
mootextsearch-private.h \
mootextstylescheme.c \
mootextview.c \
mootextview-private.h \
moousertools.c \
moousertools.h \
moousertools-prefs.c \
moousertools.c
moousertools-prefs.h \
quicksearch-glade.h \
statusbar-glade.h
mooedit_printing_sources = \
mooprintpreview.h \

42
moo/mooedit/filters.xml Normal file
View File

@ -0,0 +1,42 @@
<filter id="bison" name="Bison">
<match what="stderr" pattern="(?P&lt;file&gt;[^:]+):(?P&lt;line&gt;\d+)\.(\d+|\d+\-\d+):"/>
</filter>
<filter id="python" name="Python">
<match what="stderr" pattern='\s*File\s*\"(?P&lt;file&gt;[^"]+)\",\s*line\s*(?P&lt;line&gt;\d+).*' style="output-error"/>
<match what="stderr" pattern='\s*(?P&lt;file&gt;[^:]+):(?P&lt;line&gt;\d+):.*' style="output-error"/>
</filter>
<filter id="latex" name="LaTeX">
<match what="stdout" pattern="^l\.(?P&lt;line&gt;\d+)" style="output-error" span="2"/>
<match what="stdout" pattern="^LaTeX Warning: .* on input line (?P&lt;line&gt;\d+)\." style="output-error"/>
<match what="stdout" pattern="^(Over|Under)full \\[vh]box .* detected at line (?P&lt;line&gt;\d+)" style="output-error"/>
<match what="stdout" pattern="^(Over|Under)full \\[vh]box .* in paragraph at lines (?P&lt;line&gt;\d+)\-\-\d+" style="output-error"/>
<match what="stdout" pattern="^LaTeX Warning: .*" style="output-error"/>
<match what="stdout" pattern="^\! LaTeX Error: .*" style="output-error"/>
<match what="stdout" pattern="\((?P&lt;file&gt;[/.][^\(\)\s]+)">
<action type="push" name="file" substring="file"/>
</match>
<match what="stdout" pattern="\(">
<action type="push" name="file"/>
</match>
<match what="stdout" pattern="\)">
<action type="pop" name="file"/>
</match>
</filter>
<filter id="make" name="Make">
<match what="stderr" pattern="In file included from (?P&lt;file&gt;[^:]+):(?P&lt;line&gt;\d+):.*" style="output-error"/>
<match what="stderr" pattern="(?P&lt;file&gt;[^:]+):(?P&lt;line&gt;\d+):(\d+:)?\s*error\s*:.*" style="output-error"/>
<match what="stderr" pattern="(?P&lt;file&gt;[^:]+):(?P&lt;line&gt;\d+):.*" style="output-error"/>
<match what="stderr" pattern="(?P&lt;file&gt;[^:]+):(?P&lt;line&gt;\d+):(\d+:)?\s*warning\s*:.*" style="output-error"/>
<match what="stderr" pattern="(?P&lt;file&gt;[^:]+)\((?P&lt;line&gt;\d+)\):(\d+:)?\s*(warning|remark).*" style="output-error"/>
<match what="stdout" pattern="^make\[\d+\]: Entering directory `(?P&lt;dir&gt;.*)'">
<action type="push" name="directory" substring="dir"/>
</match>
<match what="stdout" pattern="^make\[\d+\]: Leaving directory">
<action type="pop" name="directory"/>
</match>
</filter>

View File

@ -20,8 +20,8 @@
struct _MooOutputFilterPrivate {
MooLineView *view;
char *working_dir;
char *filename;
char *active_dir;
char *active_file;
MooEditWindow *window;
};
@ -49,8 +49,8 @@ moo_output_filter_finalize (GObject *object)
{
MooOutputFilter *filter = MOO_OUTPUT_FILTER (object);
g_free (filter->priv->working_dir);
g_free (filter->priv->filename);
g_free (filter->priv->active_dir);
g_free (filter->priv->active_file);
G_OBJECT_CLASS (moo_output_filter_parent_class)->finalize (object);
}
@ -219,14 +219,14 @@ moo_output_filter_stderr_line (MooOutputFilter *filter,
void
moo_output_filter_cmd_start (MooOutputFilter *filter,
const char *working_dir)
const char *active_dir)
{
char *tmp;
g_return_if_fail (MOO_IS_OUTPUT_FILTER (filter));
tmp = filter->priv->working_dir;
filter->priv->working_dir = g_strdup (working_dir);
tmp = filter->priv->active_dir;
filter->priv->active_dir = g_strdup (active_dir);
g_free (tmp);
g_signal_emit (filter, signals[CMD_START], 0);
@ -303,14 +303,12 @@ moo_file_line_data_get_type (void)
}
#if 0
const char *
moo_output_filter_get_active_file (MooOutputFilter *filter)
{
g_return_val_if_fail (MOO_IS_OUTPUT_FILTER (filter), NULL);
return filter->priv->filename;
return filter->priv->active_file;
}
#endif
void
@ -321,12 +319,20 @@ moo_output_filter_set_active_file (MooOutputFilter *filter,
g_return_if_fail (MOO_IS_OUTPUT_FILTER (filter));
tmp = filter->priv->filename;
filter->priv->filename = g_strdup (filename);
tmp = filter->priv->active_file;
filter->priv->active_file = g_strdup (filename);
g_free (tmp);
}
const char *
moo_output_filter_get_active_dir (MooOutputFilter *filter)
{
g_return_val_if_fail (MOO_IS_OUTPUT_FILTER (filter), NULL);
return filter->priv->active_dir;
}
void
moo_output_filter_set_window (MooOutputFilter *filter,
gpointer window)
@ -337,13 +343,6 @@ moo_output_filter_set_window (MooOutputFilter *filter,
}
#if 0
const char *
moo_output_filter_get_working_dir (MooOutputFilter *filter)
{
g_return_val_if_fail (MOO_IS_OUTPUT_FILTER (filter), NULL);
return filter->priv->working_dir;
}
gpointer
moo_output_filter_get_window (MooOutputFilter *filter)
{
@ -364,16 +363,16 @@ moo_output_filter_open_file_line (MooOutputFilter *filter,
g_return_if_fail (MOO_IS_OUTPUT_FILTER (filter));
g_return_if_fail (data != NULL);
filename = data->file ? data->file : filter->priv->filename;
filename = data->file ? data->file : filter->priv->active_file;
g_return_if_fail (filename != NULL);
if (g_path_is_absolute (filename))
{
path = filename;
}
else if (filter->priv->working_dir)
else if (filter->priv->active_dir)
{
freeme = g_build_filename (filter->priv->working_dir, filename, NULL);
freeme = g_build_filename (filter->priv->active_dir, filename, NULL);
path = freeme;
}

View File

@ -85,7 +85,11 @@ gboolean moo_output_filter_cmd_exit (MooOutputFilter *filter,
int status);
void moo_output_filter_set_active_file (MooOutputFilter *filter,
const char *filename);
const char *path);
void moo_output_filter_set_active_dir (MooOutputFilter *filter,
const char *path);
const char *moo_output_filter_get_active_file (MooOutputFilter *filter);
const char *moo_output_filter_get_active_dir (MooOutputFilter *filter);
void moo_output_filter_set_window (MooOutputFilter *filter,
gpointer window);

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,54 @@
/*
* moooutputfilterregex.h
*
* Copyright (C) 2004-2006 by Yevgen Muntyan <muntyan@math.tamu.edu>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* See COPYING file that comes with this distribution.
*/
#ifndef MOOEDIT_COMPILATION
#error "This file may not be used directly"
#endif
#ifndef __MOO_OUTPUT_FILTER_REGEX_H__
#define __MOO_OUTPUT_FILTER_REGEX_H__
#include <mooedit/moooutputfilter.h>
G_BEGIN_DECLS
#define MOO_TYPE_OUTPUT_FILTER_REGEX (_moo_output_filter_regex_get_type ())
#define MOO_OUTPUT_FILTER_REGEX(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), MOO_TYPE_OUTPUT_FILTER_REGEX, MooOutputFilterRegex))
#define MOO_OUTPUT_FILTER_REGEX_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MOO_TYPE_OUTPUT_FILTER_REGEX, MooOutputFilterRegexClass))
#define MOO_IS_OUTPUT_FILTER_REGEX(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), MOO_TYPE_OUTPUT_FILTER_REGEX))
#define MOO_IS_OUTPUT_FILTER_REGEX_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MOO_TYPE_OUTPUT_FILTER_REGEX))
#define MOO_OUTPUT_FILTER_REGEX_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MOO_TYPE_OUTPUT_FILTER_REGEX, MooOutputFilterRegexClass))
typedef struct _MooOutputFilterRegex MooOutputFilterRegex;
typedef struct _MooOutputFilterRegexPrivate MooOutputFilterRegexPrivate;
typedef struct _MooOutputFilterRegexClass MooOutputFilterRegexClass;
struct _MooOutputFilterRegex {
MooOutputFilter base;
MooOutputFilterRegexPrivate *priv;
};
struct _MooOutputFilterRegexClass {
MooOutputFilterClass base_class;
};
GType _moo_output_filter_regex_get_type (void) G_GNUC_CONST;
void _moo_command_filter_regex_load (void);
G_END_DECLS
#endif /* __MOO_OUTPUT_FILTER_REGEX_SIMPLE_H__ */