Merge revisions 2537:2558 from the custom-filetypes branch:
Note: this breaks the API. This commit is to restructure most of the filetypes code that affects the plugin API, custom filetype support is not implemented. Add filetypes_array to GeanyData for plugins to access a dynamic array of filetype pointers. Remove old filetypes array from API. Use a hash table for filetypes, using filetype::name keys. Replace filetypes_get_from_uid() with filetypes_lookup_by_name(). Store filetype::name instead of unique ID when saving sessions. Remove all filetype UID code. Add GEANY_MAX_BUILT_IN_FILETYPES. Remove GEANY_MAX_FILE_TYPES - use filetypes_array->len (or GEANY_MAX_BUILT_IN_FILETYPES) instead. Rename GEANY_FILETYPES_ALL GEANY_FILETYPES_NONE. Make Open dialog file filter work for filetypes added after GEANY_FILETYPES_NONE (really the None filetype should be made the first element in filetypes_array, but this would need rewriting quite a lot of code). Add deprecated aliases for GEANY_MAX_FILE_TYPES and GEANY_FILETYPES_ALL. Remove unused filetype::item field. Create FullFileType private type that 'inherits' from filetype (FullFileType* can be cast to filetype*). This is used in filetype_new() to hide filetype struct fields from the API. Remove radio_items[] and use FullFileType::menu_item instead. Make filetypes_detect_from_extension() work for all filetypes in filetypes_hash. Add filetype_new() to create and initialize a new filetype. Refactor open_session_file() from configuration_open_files(). Refactor get_session_file_string() from configuration_save_session_files(). Refactor create_set_filetype_menu() from filetypes_init(). Move print_filetypes() out of parse_command_line_options(); git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@2559 ea778897-0a13-0410-b9d1-a72fbfd435f5
This commit is contained in:
commit
f20b4e90f1
44
ChangeLog
44
ChangeLog
@ -1,3 +1,47 @@
|
|||||||
|
2008-05-07 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
|
||||||
|
|
||||||
|
* src/templates.c, src/build.c, src/utils.c, src/win32.c,
|
||||||
|
src/highlighting.c, src/dialogs.c, src/plugindata.h,
|
||||||
|
src/msgwindow.c, src/keyfile.c, src/keyfile.h, src/filetypes.c,
|
||||||
|
src/filetypes.h, src/document.c, src/plugins.c, src/main.c,
|
||||||
|
src/symbols.c, src/ui_utils.c, plugins/vcdiff.c,
|
||||||
|
plugins/pluginmacros.h:
|
||||||
|
Merge revisions 2537:2558 from the custom-filetypes branch:
|
||||||
|
Note: this breaks the API.
|
||||||
|
This commit is to restructure most of the filetypes code that
|
||||||
|
affects the plugin API, custom filetype support is not implemented.
|
||||||
|
Add filetypes_array to GeanyData for plugins to access a dynamic
|
||||||
|
array of filetype pointers.
|
||||||
|
Remove old filetypes array from API.
|
||||||
|
Use a hash table for filetypes, using filetype::name keys.
|
||||||
|
Replace filetypes_get_from_uid() with filetypes_lookup_by_name().
|
||||||
|
Store filetype::name instead of unique ID when saving sessions.
|
||||||
|
Remove all filetype UID code.
|
||||||
|
Add GEANY_MAX_BUILT_IN_FILETYPES.
|
||||||
|
Remove GEANY_MAX_FILE_TYPES - use filetypes_array->len (or
|
||||||
|
GEANY_MAX_BUILT_IN_FILETYPES) instead.
|
||||||
|
Rename GEANY_FILETYPES_ALL GEANY_FILETYPES_NONE.
|
||||||
|
Make Open dialog file filter work for filetypes added after
|
||||||
|
GEANY_FILETYPES_NONE (really the None filetype should be made the
|
||||||
|
first element in filetypes_array, but this would need rewriting
|
||||||
|
quite a lot of code).
|
||||||
|
Add deprecated aliases for GEANY_MAX_FILE_TYPES and
|
||||||
|
GEANY_FILETYPES_ALL.
|
||||||
|
Remove unused filetype::item field.
|
||||||
|
Create FullFileType private type that 'inherits' from filetype
|
||||||
|
(FullFileType* can be cast to filetype*). This is used in
|
||||||
|
filetype_new() to hide filetype struct fields from the API.
|
||||||
|
Remove radio_items[] and use FullFileType::menu_item instead.
|
||||||
|
Make filetypes_detect_from_extension() work for all filetypes
|
||||||
|
in filetypes_hash.
|
||||||
|
Add filetype_new() to create and initialize a new filetype.
|
||||||
|
Refactor open_session_file() from configuration_open_files().
|
||||||
|
Refactor get_session_file_string() from
|
||||||
|
configuration_save_session_files().
|
||||||
|
Refactor create_set_filetype_menu() from filetypes_init().
|
||||||
|
Move print_filetypes() out of parse_command_line_options();
|
||||||
|
|
||||||
|
|
||||||
2008-05-06 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
|
2008-05-06 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
|
||||||
|
|
||||||
* doc/geany.txt, doc/geany.html:
|
* doc/geany.txt, doc/geany.html:
|
||||||
|
@ -28,7 +28,8 @@
|
|||||||
#define PLUGINMACROS_H
|
#define PLUGINMACROS_H
|
||||||
|
|
||||||
#define app geany_data->app
|
#define app geany_data->app
|
||||||
#define doc_array geany_data->doc_array
|
#define doc_array geany_data->doc_array /* Allows use of doc_list[] macro */
|
||||||
|
#define filetypes_array geany_data->filetypes_array /* Allows use of filetypes[] macro */
|
||||||
#define prefs geany_data->prefs
|
#define prefs geany_data->prefs
|
||||||
#define project app->project
|
#define project app->project
|
||||||
|
|
||||||
|
@ -286,8 +286,8 @@ static void show_output(const gchar *std_output, const gchar *name_prefix,
|
|||||||
idx = find_by_filename(filename);
|
idx = find_by_filename(filename);
|
||||||
if ( idx == -1)
|
if ( idx == -1)
|
||||||
{
|
{
|
||||||
idx = p_document->new_file(filename,
|
filetype *ft = p_filetypes->lookup_by_name("Diff");
|
||||||
geany_data->filetypes[GEANY_FILETYPES_DIFF], text);
|
idx = p_document->new_file(filename, ft, text);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
10
src/build.c
10
src/build.c
@ -58,7 +58,7 @@
|
|||||||
#include "win32.h"
|
#include "win32.h"
|
||||||
|
|
||||||
|
|
||||||
BuildInfo build_info = {GBO_COMPILE, 0, NULL, GEANY_FILETYPES_ALL, NULL};
|
BuildInfo build_info = {GBO_COMPILE, 0, NULL, GEANY_FILETYPES_NONE, NULL};
|
||||||
|
|
||||||
static gchar *current_dir_entered = NULL;
|
static gchar *current_dir_entered = NULL;
|
||||||
|
|
||||||
@ -66,7 +66,7 @@ static struct
|
|||||||
{
|
{
|
||||||
GPid pid;
|
GPid pid;
|
||||||
gint file_type_id;
|
gint file_type_id;
|
||||||
} run_info = {0, GEANY_FILETYPES_ALL};
|
} run_info = {0, GEANY_FILETYPES_NONE};
|
||||||
|
|
||||||
#ifdef G_OS_WIN32
|
#ifdef G_OS_WIN32
|
||||||
static const gchar RUN_SCRIPT_CMD[] = "geany_run_script.bat";
|
static const gchar RUN_SCRIPT_CMD[] = "geany_run_script.bat";
|
||||||
@ -1642,7 +1642,7 @@ void build_menu_update(gint idx)
|
|||||||
if (idx == -1)
|
if (idx == -1)
|
||||||
idx = document_get_cur_idx();
|
idx = document_get_cur_idx();
|
||||||
if (idx == -1 ||
|
if (idx == -1 ||
|
||||||
(FILETYPE_ID(doc_list[idx].file_type) == GEANY_FILETYPES_ALL &&
|
(FILETYPE_ID(doc_list[idx].file_type) == GEANY_FILETYPES_NONE &&
|
||||||
doc_list[idx].file_name == NULL))
|
doc_list[idx].file_name == NULL))
|
||||||
{
|
{
|
||||||
gtk_widget_set_sensitive(lookup_widget(app->window, "menu_build1"), FALSE);
|
gtk_widget_set_sensitive(lookup_widget(app->window, "menu_build1"), FALSE);
|
||||||
@ -1703,7 +1703,7 @@ void build_menu_update(gint idx)
|
|||||||
((ft->actions->can_compile ||
|
((ft->actions->can_compile ||
|
||||||
ft->actions->can_link ||
|
ft->actions->can_link ||
|
||||||
ft->actions->can_exec) &&
|
ft->actions->can_exec) &&
|
||||||
FILETYPE_ID(ft) != GEANY_FILETYPES_ALL);
|
FILETYPE_ID(ft) != GEANY_FILETYPES_NONE);
|
||||||
if (menu_items->item_set_args)
|
if (menu_items->item_set_args)
|
||||||
gtk_widget_set_sensitive(menu_items->item_set_args, can_set_args);
|
gtk_widget_set_sensitive(menu_items->item_set_args, can_set_args);
|
||||||
|
|
||||||
@ -1776,7 +1776,7 @@ static void set_stop_button(gboolean stop)
|
|||||||
|
|
||||||
|
|
||||||
/* Creates the relevant build menu if necessary.
|
/* Creates the relevant build menu if necessary.
|
||||||
* If filetype_idx is -1, the current filetype is used, or GEANY_FILETYPES_ALL */
|
* If filetype_idx is -1, the current filetype is used, or GEANY_FILETYPES_NONE */
|
||||||
BuildMenuItems *build_get_menu_items(gint filetype_idx)
|
BuildMenuItems *build_get_menu_items(gint filetype_idx)
|
||||||
{
|
{
|
||||||
BuildMenuItems *items;
|
BuildMenuItems *items;
|
||||||
|
@ -87,7 +87,9 @@ on_file_open_dialog_response (GtkDialog *dialog,
|
|||||||
gchar *charset = NULL;
|
gchar *charset = NULL;
|
||||||
gboolean ro = (response == GEANY_RESPONSE_VIEW); /* View clicked */
|
gboolean ro = (response == GEANY_RESPONSE_VIEW); /* View clicked */
|
||||||
|
|
||||||
if (filetype_idx >= 0 && filetype_idx < GEANY_FILETYPES_ALL) ft = filetypes[filetype_idx];
|
/* ignore detect from file item */
|
||||||
|
if (filetype_idx >= 0 && filetype_idx < GEANY_FILETYPES_NONE)
|
||||||
|
ft = filetypes[filetype_idx];
|
||||||
if (encoding_idx >= 0 && encoding_idx < GEANY_ENCODINGS_MAX)
|
if (encoding_idx >= 0 && encoding_idx < GEANY_ENCODINGS_MAX)
|
||||||
charset = encodings[encoding_idx].charset;
|
charset = encodings[encoding_idx].charset;
|
||||||
|
|
||||||
@ -169,7 +171,7 @@ static void create_open_file_dialog(void)
|
|||||||
GtkWidget *filetype_combo, *encoding_combo;
|
GtkWidget *filetype_combo, *encoding_combo;
|
||||||
GtkWidget *viewbtn;
|
GtkWidget *viewbtn;
|
||||||
GtkTooltips *tooltips = GTK_TOOLTIPS(lookup_widget(app->window, "tooltips"));
|
GtkTooltips *tooltips = GTK_TOOLTIPS(lookup_widget(app->window, "tooltips"));
|
||||||
gint i;
|
guint i;
|
||||||
gchar *encoding_string;
|
gchar *encoding_string;
|
||||||
|
|
||||||
ui_widgets.open_filesel = gtk_file_chooser_dialog_new(_("Open File"), GTK_WINDOW(app->window),
|
ui_widgets.open_filesel = gtk_file_chooser_dialog_new(_("Open File"), GTK_WINDOW(app->window),
|
||||||
@ -201,18 +203,21 @@ static void create_open_file_dialog(void)
|
|||||||
|
|
||||||
/* add FileFilters(start with "All Files") */
|
/* add FileFilters(start with "All Files") */
|
||||||
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(ui_widgets.open_filesel),
|
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(ui_widgets.open_filesel),
|
||||||
filetypes_create_file_filter(filetypes[GEANY_FILETYPES_ALL]));
|
filetypes_create_file_filter(filetypes[GEANY_FILETYPES_NONE]));
|
||||||
/* now create meta filter "All Source" */
|
/* now create meta filter "All Source" */
|
||||||
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(ui_widgets.open_filesel),
|
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(ui_widgets.open_filesel),
|
||||||
filetypes_create_file_filter_all_source());
|
filetypes_create_file_filter_all_source());
|
||||||
for (i = 0; i < GEANY_MAX_FILE_TYPES - 1; i++)
|
for (i = 0; i < filetypes_array->len; i++)
|
||||||
{
|
{
|
||||||
|
if (i == GEANY_FILETYPES_NONE)
|
||||||
|
continue;
|
||||||
|
|
||||||
gtk_combo_box_append_text(GTK_COMBO_BOX(filetype_combo), filetypes[i]->title);
|
gtk_combo_box_append_text(GTK_COMBO_BOX(filetype_combo), filetypes[i]->title);
|
||||||
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(ui_widgets.open_filesel),
|
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(ui_widgets.open_filesel),
|
||||||
filetypes_create_file_filter(filetypes[i]));
|
filetypes_create_file_filter(filetypes[i]));
|
||||||
}
|
}
|
||||||
gtk_combo_box_append_text(GTK_COMBO_BOX(filetype_combo), _("Detect by file extension"));
|
gtk_combo_box_append_text(GTK_COMBO_BOX(filetype_combo), _("Detect by file extension"));
|
||||||
gtk_combo_box_set_active(GTK_COMBO_BOX(filetype_combo), GEANY_MAX_FILE_TYPES - 1);
|
gtk_combo_box_set_active(GTK_COMBO_BOX(filetype_combo), filetypes_array->len - 1);
|
||||||
|
|
||||||
/* fill encoding combo box */
|
/* fill encoding combo box */
|
||||||
encoding_combo = lookup_widget(ui_widgets.open_filesel, "encoding_combo");
|
encoding_combo = lookup_widget(ui_widgets.open_filesel, "encoding_combo");
|
||||||
@ -550,7 +555,7 @@ static gboolean gtk_show_save_as(const gchar *initdir)
|
|||||||
{
|
{
|
||||||
gchar *fname = NULL;
|
gchar *fname = NULL;
|
||||||
|
|
||||||
if (doc_list[idx].file_type != NULL && doc_list[idx].file_type->id != GEANY_FILETYPES_ALL &&
|
if (doc_list[idx].file_type != NULL && doc_list[idx].file_type->id != GEANY_FILETYPES_NONE &&
|
||||||
doc_list[idx].file_type->extension != NULL)
|
doc_list[idx].file_type->extension != NULL)
|
||||||
fname = g_strconcat(GEANY_STRING_UNTITLED, ".",
|
fname = g_strconcat(GEANY_STRING_UNTITLED, ".",
|
||||||
doc_list[idx].file_type->extension, NULL);
|
doc_list[idx].file_type->extension, NULL);
|
||||||
|
@ -633,13 +633,13 @@ gint document_new_file(const gchar *filename, filetype *ft, const gchar *text)
|
|||||||
/* store the opened encoding for undo/redo */
|
/* store the opened encoding for undo/redo */
|
||||||
store_saved_encoding(idx);
|
store_saved_encoding(idx);
|
||||||
|
|
||||||
/*document_set_filetype(idx, (ft == NULL) ? filetypes[GEANY_FILETYPES_ALL] : ft);*/
|
/*document_set_filetype(idx, (ft == NULL) ? filetypes[GEANY_FILETYPES_NONE] : ft);*/
|
||||||
if (ft == NULL && filename != NULL) /* guess the filetype from the filename if one is given */
|
if (ft == NULL && filename != NULL) /* guess the filetype from the filename if one is given */
|
||||||
ft = filetypes_detect_from_file(idx);
|
ft = filetypes_detect_from_file(idx);
|
||||||
|
|
||||||
document_set_filetype(idx, ft); /* also clears taglist */
|
document_set_filetype(idx, ft); /* also clears taglist */
|
||||||
if (ft == NULL)
|
if (ft == NULL)
|
||||||
highlighting_set_styles(doc_list[idx].sci, GEANY_FILETYPES_ALL);
|
highlighting_set_styles(doc_list[idx].sci, GEANY_FILETYPES_NONE);
|
||||||
ui_set_window_title(idx);
|
ui_set_window_title(idx);
|
||||||
build_menu_update(idx);
|
build_menu_update(idx);
|
||||||
document_update_tag_list(idx, FALSE);
|
document_update_tag_list(idx, FALSE);
|
||||||
@ -1294,7 +1294,7 @@ gboolean document_save_file_as(gint idx)
|
|||||||
if (! DOC_IDX_VALID(idx)) return FALSE;
|
if (! DOC_IDX_VALID(idx)) return FALSE;
|
||||||
|
|
||||||
/* detect filetype */
|
/* detect filetype */
|
||||||
if (FILETYPE_ID(doc_list[idx].file_type) == GEANY_FILETYPES_ALL)
|
if (FILETYPE_ID(doc_list[idx].file_type) == GEANY_FILETYPES_NONE)
|
||||||
{
|
{
|
||||||
filetype *ft = filetypes_detect_from_file(idx);
|
filetype *ft = filetypes_detect_from_file(idx);
|
||||||
|
|
||||||
|
364
src/filetypes.c
364
src/filetypes.c
@ -37,72 +37,32 @@
|
|||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
#include "document.h"
|
#include "document.h"
|
||||||
#include "sciwrappers.h"
|
#include "sciwrappers.h"
|
||||||
|
#include "ui_utils.h"
|
||||||
|
|
||||||
|
|
||||||
filetype *filetypes[GEANY_MAX_FILE_TYPES];
|
/* This type 'inherits' from filetype so FullFileType* can be cast to filetype*. */
|
||||||
|
typedef struct FullFileType
|
||||||
|
|
||||||
/* This is the order of unique ids used in the config file.
|
|
||||||
* The order must not be changed but can be appended to. */
|
|
||||||
enum
|
|
||||||
{
|
{
|
||||||
FILETYPE_UID_C = 0, /* 0 */
|
filetype public;
|
||||||
FILETYPE_UID_CPP, /* 1 */
|
/* Private fields */
|
||||||
FILETYPE_UID_JAVA, /* 2 */
|
GtkWidget *menu_item; /* holds a pointer to the menu item for this filetype */
|
||||||
FILETYPE_UID_PERL, /* 3 */
|
gboolean keyfile_loaded;
|
||||||
FILETYPE_UID_PHP, /* 4 */
|
}
|
||||||
FILETYPE_UID_XML, /* 5 */
|
FullFileType;
|
||||||
FILETYPE_UID_DOCBOOK, /* 6 */
|
|
||||||
FILETYPE_UID_PYTHON, /* 7 */
|
|
||||||
FILETYPE_UID_LATEX, /* 8 */
|
|
||||||
FILETYPE_UID_PASCAL, /* 9 */
|
|
||||||
FILETYPE_UID_SH, /* 10 */
|
|
||||||
FILETYPE_UID_MAKE, /* 11 */
|
|
||||||
FILETYPE_UID_CSS, /* 12 */
|
|
||||||
FILETYPE_UID_CONF, /* 13 */
|
|
||||||
FILETYPE_UID_ASM, /* 14 */
|
|
||||||
FILETYPE_UID_SQL, /* 15 */
|
|
||||||
FILETYPE_UID_CAML, /* 16 */
|
|
||||||
FILETYPE_UID_OMS, /* 17 */
|
|
||||||
FILETYPE_UID_RUBY, /* 18 */
|
|
||||||
FILETYPE_UID_TCL, /* 19 */
|
|
||||||
FILETYPE_UID_ALL, /* 20 */
|
|
||||||
FILETYPE_UID_D, /* 21 */
|
|
||||||
FILETYPE_UID_FORTRAN, /* 22 */
|
|
||||||
FILETYPE_UID_DIFF, /* 23 */
|
|
||||||
FILETYPE_UID_FERITE, /* 24 */
|
|
||||||
FILETYPE_UID_HTML, /* 25 */
|
|
||||||
FILETYPE_UID_VHDL, /* 26 */
|
|
||||||
FILETYPE_UID_JS, /* 27 */
|
|
||||||
FILETYPE_UID_LUA, /* 28 */
|
|
||||||
FILETYPE_UID_HASKELL, /* 29 */
|
|
||||||
FILETYPE_UID_CS, /* 30 */
|
|
||||||
FILETYPE_UID_BASIC, /* 31 */
|
|
||||||
FILETYPE_UID_HAXE, /* 32 */
|
|
||||||
FILETYPE_UID_REST /* 33 */
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
static GtkWidget *radio_items[GEANY_MAX_FILE_TYPES];
|
GPtrArray *filetypes_array = NULL; /* Dynamic array of filetype pointers */
|
||||||
|
|
||||||
static void filetypes_create_menu_item(GtkWidget *menu, const gchar *label, filetype *ftype);
|
GHashTable *filetypes_hash = NULL; /* Hash of filetype pointers based on name keys */
|
||||||
|
|
||||||
|
|
||||||
/* Create the filetype array and fill it with the known filetypes. */
|
static void create_radio_menu_item(GtkWidget *menu, const gchar *label, filetype *ftype);
|
||||||
void filetypes_init_types()
|
|
||||||
|
|
||||||
|
static void init_builtin_filetypes(void)
|
||||||
{
|
{
|
||||||
filetype_id ft_id;
|
|
||||||
|
|
||||||
for (ft_id = 0; ft_id < GEANY_MAX_FILE_TYPES; ft_id++)
|
|
||||||
{
|
|
||||||
filetypes[ft_id] = g_new0(filetype, 1);
|
|
||||||
filetypes[ft_id]->programs = g_new0(struct build_programs, 1);
|
|
||||||
filetypes[ft_id]->actions = g_new0(struct build_actions, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
#define C /* these macros are only to ease navigation */
|
#define C /* these macros are only to ease navigation */
|
||||||
filetypes[GEANY_FILETYPES_C]->id = GEANY_FILETYPES_C;
|
filetypes[GEANY_FILETYPES_C]->id = GEANY_FILETYPES_C;
|
||||||
filetypes[GEANY_FILETYPES_C]->uid = FILETYPE_UID_C;
|
|
||||||
filetypes[GEANY_FILETYPES_C]->lang = 0;
|
filetypes[GEANY_FILETYPES_C]->lang = 0;
|
||||||
filetypes[GEANY_FILETYPES_C]->name = g_strdup("C");
|
filetypes[GEANY_FILETYPES_C]->name = g_strdup("C");
|
||||||
filetypes[GEANY_FILETYPES_C]->title = g_strdup_printf(_("%s source file"), "C");
|
filetypes[GEANY_FILETYPES_C]->title = g_strdup_printf(_("%s source file"), "C");
|
||||||
@ -113,7 +73,6 @@ void filetypes_init_types()
|
|||||||
|
|
||||||
#define CPP
|
#define CPP
|
||||||
filetypes[GEANY_FILETYPES_CPP]->id = GEANY_FILETYPES_CPP;
|
filetypes[GEANY_FILETYPES_CPP]->id = GEANY_FILETYPES_CPP;
|
||||||
filetypes[GEANY_FILETYPES_CPP]->uid = FILETYPE_UID_CPP;
|
|
||||||
filetypes[GEANY_FILETYPES_CPP]->lang = 1;
|
filetypes[GEANY_FILETYPES_CPP]->lang = 1;
|
||||||
filetypes[GEANY_FILETYPES_CPP]->name = g_strdup("C++");
|
filetypes[GEANY_FILETYPES_CPP]->name = g_strdup("C++");
|
||||||
filetypes[GEANY_FILETYPES_CPP]->title = g_strdup_printf(_("%s source file"), "C++");
|
filetypes[GEANY_FILETYPES_CPP]->title = g_strdup_printf(_("%s source file"), "C++");
|
||||||
@ -125,7 +84,6 @@ void filetypes_init_types()
|
|||||||
|
|
||||||
#define CS
|
#define CS
|
||||||
filetypes[GEANY_FILETYPES_CS]->id = GEANY_FILETYPES_CS;
|
filetypes[GEANY_FILETYPES_CS]->id = GEANY_FILETYPES_CS;
|
||||||
filetypes[GEANY_FILETYPES_CS]->uid = FILETYPE_UID_CS;
|
|
||||||
filetypes[GEANY_FILETYPES_CS]->lang = 25;
|
filetypes[GEANY_FILETYPES_CS]->lang = 25;
|
||||||
filetypes[GEANY_FILETYPES_CS]->name = g_strdup("C#");
|
filetypes[GEANY_FILETYPES_CS]->name = g_strdup("C#");
|
||||||
filetypes[GEANY_FILETYPES_CS]->title = g_strdup_printf(_("%s source file"), "C#");
|
filetypes[GEANY_FILETYPES_CS]->title = g_strdup_printf(_("%s source file"), "C#");
|
||||||
@ -136,7 +94,6 @@ void filetypes_init_types()
|
|||||||
|
|
||||||
#define D
|
#define D
|
||||||
filetypes[GEANY_FILETYPES_D]->id = GEANY_FILETYPES_D;
|
filetypes[GEANY_FILETYPES_D]->id = GEANY_FILETYPES_D;
|
||||||
filetypes[GEANY_FILETYPES_D]->uid = FILETYPE_UID_D;
|
|
||||||
filetypes[GEANY_FILETYPES_D]->lang = 17;
|
filetypes[GEANY_FILETYPES_D]->lang = 17;
|
||||||
filetypes[GEANY_FILETYPES_D]->name = g_strdup("D");
|
filetypes[GEANY_FILETYPES_D]->name = g_strdup("D");
|
||||||
filetypes[GEANY_FILETYPES_D]->title = g_strdup_printf(_("%s source file"), "D");
|
filetypes[GEANY_FILETYPES_D]->title = g_strdup_printf(_("%s source file"), "D");
|
||||||
@ -148,7 +105,6 @@ void filetypes_init_types()
|
|||||||
#define JAVA
|
#define JAVA
|
||||||
filetypes[GEANY_FILETYPES_JAVA]->id = GEANY_FILETYPES_JAVA;
|
filetypes[GEANY_FILETYPES_JAVA]->id = GEANY_FILETYPES_JAVA;
|
||||||
filetypes[GEANY_FILETYPES_JAVA]->name = g_strdup("Java");
|
filetypes[GEANY_FILETYPES_JAVA]->name = g_strdup("Java");
|
||||||
filetypes[GEANY_FILETYPES_JAVA]->uid = FILETYPE_UID_JAVA;
|
|
||||||
filetypes[GEANY_FILETYPES_JAVA]->lang = 2;
|
filetypes[GEANY_FILETYPES_JAVA]->lang = 2;
|
||||||
filetypes[GEANY_FILETYPES_JAVA]->title = g_strdup_printf(_("%s source file"), "Java");
|
filetypes[GEANY_FILETYPES_JAVA]->title = g_strdup_printf(_("%s source file"), "Java");
|
||||||
filetypes[GEANY_FILETYPES_JAVA]->extension = g_strdup("java");
|
filetypes[GEANY_FILETYPES_JAVA]->extension = g_strdup("java");
|
||||||
@ -158,7 +114,6 @@ void filetypes_init_types()
|
|||||||
|
|
||||||
#define PAS /* to avoid warnings when building under Windows, the symbol PASCAL is there defined */
|
#define PAS /* to avoid warnings when building under Windows, the symbol PASCAL is there defined */
|
||||||
filetypes[GEANY_FILETYPES_PASCAL]->id = GEANY_FILETYPES_PASCAL;
|
filetypes[GEANY_FILETYPES_PASCAL]->id = GEANY_FILETYPES_PASCAL;
|
||||||
filetypes[GEANY_FILETYPES_PASCAL]->uid = FILETYPE_UID_PASCAL;
|
|
||||||
filetypes[GEANY_FILETYPES_PASCAL]->lang = 4;
|
filetypes[GEANY_FILETYPES_PASCAL]->lang = 4;
|
||||||
filetypes[GEANY_FILETYPES_PASCAL]->name = g_strdup("Pascal");
|
filetypes[GEANY_FILETYPES_PASCAL]->name = g_strdup("Pascal");
|
||||||
filetypes[GEANY_FILETYPES_PASCAL]->title = g_strdup_printf(_("%s source file"), "Pascal");
|
filetypes[GEANY_FILETYPES_PASCAL]->title = g_strdup_printf(_("%s source file"), "Pascal");
|
||||||
@ -170,7 +125,6 @@ void filetypes_init_types()
|
|||||||
|
|
||||||
#define ASM
|
#define ASM
|
||||||
filetypes[GEANY_FILETYPES_ASM]->id = GEANY_FILETYPES_ASM;
|
filetypes[GEANY_FILETYPES_ASM]->id = GEANY_FILETYPES_ASM;
|
||||||
filetypes[GEANY_FILETYPES_ASM]->uid = FILETYPE_UID_ASM;
|
|
||||||
filetypes[GEANY_FILETYPES_ASM]->lang = 9;
|
filetypes[GEANY_FILETYPES_ASM]->lang = 9;
|
||||||
filetypes[GEANY_FILETYPES_ASM]->name = g_strdup("ASM");
|
filetypes[GEANY_FILETYPES_ASM]->name = g_strdup("ASM");
|
||||||
filetypes[GEANY_FILETYPES_ASM]->title = g_strdup_printf(_("%s source file"), "Assembler");
|
filetypes[GEANY_FILETYPES_ASM]->title = g_strdup_printf(_("%s source file"), "Assembler");
|
||||||
@ -181,7 +135,6 @@ void filetypes_init_types()
|
|||||||
|
|
||||||
#define BASIC
|
#define BASIC
|
||||||
filetypes[GEANY_FILETYPES_BASIC]->id = GEANY_FILETYPES_BASIC;
|
filetypes[GEANY_FILETYPES_BASIC]->id = GEANY_FILETYPES_BASIC;
|
||||||
filetypes[GEANY_FILETYPES_BASIC]->uid = FILETYPE_UID_BASIC;
|
|
||||||
filetypes[GEANY_FILETYPES_BASIC]->lang = 26;
|
filetypes[GEANY_FILETYPES_BASIC]->lang = 26;
|
||||||
filetypes[GEANY_FILETYPES_BASIC]->name = g_strdup("FreeBasic");
|
filetypes[GEANY_FILETYPES_BASIC]->name = g_strdup("FreeBasic");
|
||||||
filetypes[GEANY_FILETYPES_BASIC]->title = g_strdup_printf(_("%s source file"), "FreeBasic");
|
filetypes[GEANY_FILETYPES_BASIC]->title = g_strdup_printf(_("%s source file"), "FreeBasic");
|
||||||
@ -192,7 +145,6 @@ void filetypes_init_types()
|
|||||||
|
|
||||||
#define FORTRAN
|
#define FORTRAN
|
||||||
filetypes[GEANY_FILETYPES_FORTRAN]->id = GEANY_FILETYPES_FORTRAN;
|
filetypes[GEANY_FILETYPES_FORTRAN]->id = GEANY_FILETYPES_FORTRAN;
|
||||||
filetypes[GEANY_FILETYPES_FORTRAN]->uid = FILETYPE_UID_FORTRAN;
|
|
||||||
filetypes[GEANY_FILETYPES_FORTRAN]->lang = 18;
|
filetypes[GEANY_FILETYPES_FORTRAN]->lang = 18;
|
||||||
filetypes[GEANY_FILETYPES_FORTRAN]->name = g_strdup("Fortran");
|
filetypes[GEANY_FILETYPES_FORTRAN]->name = g_strdup("Fortran");
|
||||||
filetypes[GEANY_FILETYPES_FORTRAN]->title = g_strdup_printf(_("%s source file"), "Fortran (F77)");
|
filetypes[GEANY_FILETYPES_FORTRAN]->title = g_strdup_printf(_("%s source file"), "Fortran (F77)");
|
||||||
@ -204,7 +156,6 @@ void filetypes_init_types()
|
|||||||
|
|
||||||
#define CAML
|
#define CAML
|
||||||
filetypes[GEANY_FILETYPES_CAML]->id = GEANY_FILETYPES_CAML;
|
filetypes[GEANY_FILETYPES_CAML]->id = GEANY_FILETYPES_CAML;
|
||||||
filetypes[GEANY_FILETYPES_CAML]->uid = FILETYPE_UID_CAML;
|
|
||||||
filetypes[GEANY_FILETYPES_CAML]->lang = -2;
|
filetypes[GEANY_FILETYPES_CAML]->lang = -2;
|
||||||
filetypes[GEANY_FILETYPES_CAML]->name = g_strdup("CAML");
|
filetypes[GEANY_FILETYPES_CAML]->name = g_strdup("CAML");
|
||||||
filetypes[GEANY_FILETYPES_CAML]->title = g_strdup_printf(_("%s source file"), "(O)Caml");
|
filetypes[GEANY_FILETYPES_CAML]->title = g_strdup_printf(_("%s source file"), "(O)Caml");
|
||||||
@ -215,7 +166,6 @@ void filetypes_init_types()
|
|||||||
|
|
||||||
#define PERL
|
#define PERL
|
||||||
filetypes[GEANY_FILETYPES_PERL]->id = GEANY_FILETYPES_PERL;
|
filetypes[GEANY_FILETYPES_PERL]->id = GEANY_FILETYPES_PERL;
|
||||||
filetypes[GEANY_FILETYPES_PERL]->uid = FILETYPE_UID_PERL;
|
|
||||||
filetypes[GEANY_FILETYPES_PERL]->lang = 5;
|
filetypes[GEANY_FILETYPES_PERL]->lang = 5;
|
||||||
filetypes[GEANY_FILETYPES_PERL]->name = g_strdup("Perl");
|
filetypes[GEANY_FILETYPES_PERL]->name = g_strdup("Perl");
|
||||||
filetypes[GEANY_FILETYPES_PERL]->title = g_strdup_printf(_("%s source file"), "Perl");
|
filetypes[GEANY_FILETYPES_PERL]->title = g_strdup_printf(_("%s source file"), "Perl");
|
||||||
@ -227,7 +177,6 @@ void filetypes_init_types()
|
|||||||
|
|
||||||
#define PHP
|
#define PHP
|
||||||
filetypes[GEANY_FILETYPES_PHP]->id = GEANY_FILETYPES_PHP;
|
filetypes[GEANY_FILETYPES_PHP]->id = GEANY_FILETYPES_PHP;
|
||||||
filetypes[GEANY_FILETYPES_PHP]->uid = FILETYPE_UID_PHP;
|
|
||||||
filetypes[GEANY_FILETYPES_PHP]->lang = 6;
|
filetypes[GEANY_FILETYPES_PHP]->lang = 6;
|
||||||
filetypes[GEANY_FILETYPES_PHP]->name = g_strdup("PHP");
|
filetypes[GEANY_FILETYPES_PHP]->name = g_strdup("PHP");
|
||||||
filetypes[GEANY_FILETYPES_PHP]->title = g_strdup_printf(_("%s source file"), "PHP");
|
filetypes[GEANY_FILETYPES_PHP]->title = g_strdup_printf(_("%s source file"), "PHP");
|
||||||
@ -239,7 +188,6 @@ void filetypes_init_types()
|
|||||||
|
|
||||||
#define JAVASCRIPT
|
#define JAVASCRIPT
|
||||||
filetypes[GEANY_FILETYPES_JS]->id = GEANY_FILETYPES_JS;
|
filetypes[GEANY_FILETYPES_JS]->id = GEANY_FILETYPES_JS;
|
||||||
filetypes[GEANY_FILETYPES_JS]->uid = FILETYPE_UID_JS;
|
|
||||||
filetypes[GEANY_FILETYPES_JS]->lang = 23;
|
filetypes[GEANY_FILETYPES_JS]->lang = 23;
|
||||||
filetypes[GEANY_FILETYPES_JS]->name = g_strdup("Javascript");
|
filetypes[GEANY_FILETYPES_JS]->name = g_strdup("Javascript");
|
||||||
filetypes[GEANY_FILETYPES_JS]->title = g_strdup_printf(_("%s source file"), "Javascript");
|
filetypes[GEANY_FILETYPES_JS]->title = g_strdup_printf(_("%s source file"), "Javascript");
|
||||||
@ -250,7 +198,6 @@ void filetypes_init_types()
|
|||||||
|
|
||||||
#define PYTHON
|
#define PYTHON
|
||||||
filetypes[GEANY_FILETYPES_PYTHON]->id = GEANY_FILETYPES_PYTHON;
|
filetypes[GEANY_FILETYPES_PYTHON]->id = GEANY_FILETYPES_PYTHON;
|
||||||
filetypes[GEANY_FILETYPES_PYTHON]->uid = FILETYPE_UID_PYTHON;
|
|
||||||
filetypes[GEANY_FILETYPES_PYTHON]->lang = 7;
|
filetypes[GEANY_FILETYPES_PYTHON]->lang = 7;
|
||||||
filetypes[GEANY_FILETYPES_PYTHON]->name = g_strdup("Python");
|
filetypes[GEANY_FILETYPES_PYTHON]->name = g_strdup("Python");
|
||||||
filetypes[GEANY_FILETYPES_PYTHON]->title = g_strdup_printf(_("%s source file"), "Python");
|
filetypes[GEANY_FILETYPES_PYTHON]->title = g_strdup_printf(_("%s source file"), "Python");
|
||||||
@ -261,7 +208,6 @@ void filetypes_init_types()
|
|||||||
|
|
||||||
#define RUBY
|
#define RUBY
|
||||||
filetypes[GEANY_FILETYPES_RUBY]->id = GEANY_FILETYPES_RUBY;
|
filetypes[GEANY_FILETYPES_RUBY]->id = GEANY_FILETYPES_RUBY;
|
||||||
filetypes[GEANY_FILETYPES_RUBY]->uid = FILETYPE_UID_RUBY;
|
|
||||||
filetypes[GEANY_FILETYPES_RUBY]->lang = 14;
|
filetypes[GEANY_FILETYPES_RUBY]->lang = 14;
|
||||||
filetypes[GEANY_FILETYPES_RUBY]->name = g_strdup("Ruby");
|
filetypes[GEANY_FILETYPES_RUBY]->name = g_strdup("Ruby");
|
||||||
filetypes[GEANY_FILETYPES_RUBY]->title = g_strdup_printf(_("%s source file"), "Ruby");
|
filetypes[GEANY_FILETYPES_RUBY]->title = g_strdup_printf(_("%s source file"), "Ruby");
|
||||||
@ -272,7 +218,6 @@ void filetypes_init_types()
|
|||||||
|
|
||||||
#define TCL
|
#define TCL
|
||||||
filetypes[GEANY_FILETYPES_TCL]->id = GEANY_FILETYPES_TCL;
|
filetypes[GEANY_FILETYPES_TCL]->id = GEANY_FILETYPES_TCL;
|
||||||
filetypes[GEANY_FILETYPES_TCL]->uid = FILETYPE_UID_TCL;
|
|
||||||
filetypes[GEANY_FILETYPES_TCL]->lang = 15;
|
filetypes[GEANY_FILETYPES_TCL]->lang = 15;
|
||||||
filetypes[GEANY_FILETYPES_TCL]->name = g_strdup("Tcl");
|
filetypes[GEANY_FILETYPES_TCL]->name = g_strdup("Tcl");
|
||||||
filetypes[GEANY_FILETYPES_TCL]->title = g_strdup_printf(_("%s source file"), "Tcl");
|
filetypes[GEANY_FILETYPES_TCL]->title = g_strdup_printf(_("%s source file"), "Tcl");
|
||||||
@ -283,7 +228,6 @@ void filetypes_init_types()
|
|||||||
|
|
||||||
#define LUA
|
#define LUA
|
||||||
filetypes[GEANY_FILETYPES_LUA]->id = GEANY_FILETYPES_LUA;
|
filetypes[GEANY_FILETYPES_LUA]->id = GEANY_FILETYPES_LUA;
|
||||||
filetypes[GEANY_FILETYPES_LUA]->uid = FILETYPE_UID_LUA;
|
|
||||||
filetypes[GEANY_FILETYPES_LUA]->lang = 22;
|
filetypes[GEANY_FILETYPES_LUA]->lang = 22;
|
||||||
filetypes[GEANY_FILETYPES_LUA]->name = g_strdup("Lua");
|
filetypes[GEANY_FILETYPES_LUA]->name = g_strdup("Lua");
|
||||||
filetypes[GEANY_FILETYPES_LUA]->title = g_strdup_printf(_("%s source file"), "Lua");
|
filetypes[GEANY_FILETYPES_LUA]->title = g_strdup_printf(_("%s source file"), "Lua");
|
||||||
@ -294,7 +238,6 @@ void filetypes_init_types()
|
|||||||
|
|
||||||
#define FERITE
|
#define FERITE
|
||||||
filetypes[GEANY_FILETYPES_FERITE]->id = GEANY_FILETYPES_FERITE;
|
filetypes[GEANY_FILETYPES_FERITE]->id = GEANY_FILETYPES_FERITE;
|
||||||
filetypes[GEANY_FILETYPES_FERITE]->uid = FILETYPE_UID_FERITE;
|
|
||||||
filetypes[GEANY_FILETYPES_FERITE]->lang = 19;
|
filetypes[GEANY_FILETYPES_FERITE]->lang = 19;
|
||||||
filetypes[GEANY_FILETYPES_FERITE]->name = g_strdup("Ferite");
|
filetypes[GEANY_FILETYPES_FERITE]->name = g_strdup("Ferite");
|
||||||
filetypes[GEANY_FILETYPES_FERITE]->title = g_strdup_printf(_("%s source file"), "Ferite");
|
filetypes[GEANY_FILETYPES_FERITE]->title = g_strdup_printf(_("%s source file"), "Ferite");
|
||||||
@ -305,7 +248,6 @@ void filetypes_init_types()
|
|||||||
|
|
||||||
#define HASKELL
|
#define HASKELL
|
||||||
filetypes[GEANY_FILETYPES_HASKELL]->id = GEANY_FILETYPES_HASKELL;
|
filetypes[GEANY_FILETYPES_HASKELL]->id = GEANY_FILETYPES_HASKELL;
|
||||||
filetypes[GEANY_FILETYPES_HASKELL]->uid = FILETYPE_UID_HASKELL;
|
|
||||||
filetypes[GEANY_FILETYPES_HASKELL]->lang = 24;
|
filetypes[GEANY_FILETYPES_HASKELL]->lang = 24;
|
||||||
filetypes[GEANY_FILETYPES_HASKELL]->name = g_strdup("Haskell");
|
filetypes[GEANY_FILETYPES_HASKELL]->name = g_strdup("Haskell");
|
||||||
filetypes[GEANY_FILETYPES_HASKELL]->title = g_strdup_printf(_("%s source file"), "Haskell");
|
filetypes[GEANY_FILETYPES_HASKELL]->title = g_strdup_printf(_("%s source file"), "Haskell");
|
||||||
@ -316,7 +258,6 @@ void filetypes_init_types()
|
|||||||
|
|
||||||
#define SH
|
#define SH
|
||||||
filetypes[GEANY_FILETYPES_SH]->id = GEANY_FILETYPES_SH;
|
filetypes[GEANY_FILETYPES_SH]->id = GEANY_FILETYPES_SH;
|
||||||
filetypes[GEANY_FILETYPES_SH]->uid = FILETYPE_UID_SH;
|
|
||||||
filetypes[GEANY_FILETYPES_SH]->lang = 16;
|
filetypes[GEANY_FILETYPES_SH]->lang = 16;
|
||||||
filetypes[GEANY_FILETYPES_SH]->name = g_strdup("Sh");
|
filetypes[GEANY_FILETYPES_SH]->name = g_strdup("Sh");
|
||||||
filetypes[GEANY_FILETYPES_SH]->title = g_strdup(_("Shell script file"));
|
filetypes[GEANY_FILETYPES_SH]->title = g_strdup(_("Shell script file"));
|
||||||
@ -328,7 +269,6 @@ void filetypes_init_types()
|
|||||||
|
|
||||||
#define MAKE
|
#define MAKE
|
||||||
filetypes[GEANY_FILETYPES_MAKE]->id = GEANY_FILETYPES_MAKE;
|
filetypes[GEANY_FILETYPES_MAKE]->id = GEANY_FILETYPES_MAKE;
|
||||||
filetypes[GEANY_FILETYPES_MAKE]->uid = FILETYPE_UID_MAKE;
|
|
||||||
filetypes[GEANY_FILETYPES_MAKE]->lang = 3;
|
filetypes[GEANY_FILETYPES_MAKE]->lang = 3;
|
||||||
filetypes[GEANY_FILETYPES_MAKE]->name = g_strdup("Make");
|
filetypes[GEANY_FILETYPES_MAKE]->name = g_strdup("Make");
|
||||||
filetypes[GEANY_FILETYPES_MAKE]->title = g_strdup(_("Makefile"));
|
filetypes[GEANY_FILETYPES_MAKE]->title = g_strdup(_("Makefile"));
|
||||||
@ -340,7 +280,6 @@ void filetypes_init_types()
|
|||||||
|
|
||||||
#define XML
|
#define XML
|
||||||
filetypes[GEANY_FILETYPES_XML]->id = GEANY_FILETYPES_XML;
|
filetypes[GEANY_FILETYPES_XML]->id = GEANY_FILETYPES_XML;
|
||||||
filetypes[GEANY_FILETYPES_XML]->uid = FILETYPE_UID_XML;
|
|
||||||
filetypes[GEANY_FILETYPES_XML]->lang = -2;
|
filetypes[GEANY_FILETYPES_XML]->lang = -2;
|
||||||
filetypes[GEANY_FILETYPES_XML]->name = g_strdup("XML");
|
filetypes[GEANY_FILETYPES_XML]->name = g_strdup("XML");
|
||||||
filetypes[GEANY_FILETYPES_XML]->title = g_strdup(_("XML document"));
|
filetypes[GEANY_FILETYPES_XML]->title = g_strdup(_("XML document"));
|
||||||
@ -352,7 +291,6 @@ void filetypes_init_types()
|
|||||||
|
|
||||||
#define DOCBOOK
|
#define DOCBOOK
|
||||||
filetypes[GEANY_FILETYPES_DOCBOOK]->id = GEANY_FILETYPES_DOCBOOK;
|
filetypes[GEANY_FILETYPES_DOCBOOK]->id = GEANY_FILETYPES_DOCBOOK;
|
||||||
filetypes[GEANY_FILETYPES_DOCBOOK]->uid = FILETYPE_UID_DOCBOOK;
|
|
||||||
filetypes[GEANY_FILETYPES_DOCBOOK]->lang = 12;
|
filetypes[GEANY_FILETYPES_DOCBOOK]->lang = 12;
|
||||||
filetypes[GEANY_FILETYPES_DOCBOOK]->name = g_strdup("Docbook");
|
filetypes[GEANY_FILETYPES_DOCBOOK]->name = g_strdup("Docbook");
|
||||||
filetypes[GEANY_FILETYPES_DOCBOOK]->title = g_strdup_printf(_("%s source file"), "Docbook");
|
filetypes[GEANY_FILETYPES_DOCBOOK]->title = g_strdup_printf(_("%s source file"), "Docbook");
|
||||||
@ -363,7 +301,6 @@ void filetypes_init_types()
|
|||||||
|
|
||||||
#define HTML
|
#define HTML
|
||||||
filetypes[GEANY_FILETYPES_HTML]->id = GEANY_FILETYPES_HTML;
|
filetypes[GEANY_FILETYPES_HTML]->id = GEANY_FILETYPES_HTML;
|
||||||
filetypes[GEANY_FILETYPES_HTML]->uid = FILETYPE_UID_HTML;
|
|
||||||
filetypes[GEANY_FILETYPES_HTML]->lang = 29;
|
filetypes[GEANY_FILETYPES_HTML]->lang = 29;
|
||||||
filetypes[GEANY_FILETYPES_HTML]->name = g_strdup("HTML");
|
filetypes[GEANY_FILETYPES_HTML]->name = g_strdup("HTML");
|
||||||
filetypes[GEANY_FILETYPES_HTML]->title = g_strdup_printf(_("%s source file"), "HTML");
|
filetypes[GEANY_FILETYPES_HTML]->title = g_strdup_printf(_("%s source file"), "HTML");
|
||||||
@ -375,7 +312,6 @@ void filetypes_init_types()
|
|||||||
|
|
||||||
#define CSS
|
#define CSS
|
||||||
filetypes[GEANY_FILETYPES_CSS]->id = GEANY_FILETYPES_CSS;
|
filetypes[GEANY_FILETYPES_CSS]->id = GEANY_FILETYPES_CSS;
|
||||||
filetypes[GEANY_FILETYPES_CSS]->uid = FILETYPE_UID_CSS;
|
|
||||||
filetypes[GEANY_FILETYPES_CSS]->lang = 13;
|
filetypes[GEANY_FILETYPES_CSS]->lang = 13;
|
||||||
filetypes[GEANY_FILETYPES_CSS]->name = g_strdup("CSS");
|
filetypes[GEANY_FILETYPES_CSS]->name = g_strdup("CSS");
|
||||||
filetypes[GEANY_FILETYPES_CSS]->title = g_strdup(_("Cascading StyleSheet"));
|
filetypes[GEANY_FILETYPES_CSS]->title = g_strdup(_("Cascading StyleSheet"));
|
||||||
@ -386,7 +322,6 @@ void filetypes_init_types()
|
|||||||
|
|
||||||
#define SQL
|
#define SQL
|
||||||
filetypes[GEANY_FILETYPES_SQL]->id = GEANY_FILETYPES_SQL;
|
filetypes[GEANY_FILETYPES_SQL]->id = GEANY_FILETYPES_SQL;
|
||||||
filetypes[GEANY_FILETYPES_SQL]->uid = FILETYPE_UID_SQL;
|
|
||||||
filetypes[GEANY_FILETYPES_SQL]->lang = 11;
|
filetypes[GEANY_FILETYPES_SQL]->lang = 11;
|
||||||
filetypes[GEANY_FILETYPES_SQL]->name = g_strdup("SQL");
|
filetypes[GEANY_FILETYPES_SQL]->name = g_strdup("SQL");
|
||||||
filetypes[GEANY_FILETYPES_SQL]->title = g_strdup(_("SQL Dump file"));
|
filetypes[GEANY_FILETYPES_SQL]->title = g_strdup(_("SQL Dump file"));
|
||||||
@ -397,7 +332,6 @@ void filetypes_init_types()
|
|||||||
|
|
||||||
#define LATEX
|
#define LATEX
|
||||||
filetypes[GEANY_FILETYPES_LATEX]->id = GEANY_FILETYPES_LATEX;
|
filetypes[GEANY_FILETYPES_LATEX]->id = GEANY_FILETYPES_LATEX;
|
||||||
filetypes[GEANY_FILETYPES_LATEX]->uid = FILETYPE_UID_LATEX;
|
|
||||||
filetypes[GEANY_FILETYPES_LATEX]->lang = 8;
|
filetypes[GEANY_FILETYPES_LATEX]->lang = 8;
|
||||||
filetypes[GEANY_FILETYPES_LATEX]->name = g_strdup("LaTeX");
|
filetypes[GEANY_FILETYPES_LATEX]->name = g_strdup("LaTeX");
|
||||||
filetypes[GEANY_FILETYPES_LATEX]->title = g_strdup_printf(_("%s source file"), "LaTeX");
|
filetypes[GEANY_FILETYPES_LATEX]->title = g_strdup_printf(_("%s source file"), "LaTeX");
|
||||||
@ -408,7 +342,6 @@ void filetypes_init_types()
|
|||||||
|
|
||||||
#define OMS
|
#define OMS
|
||||||
filetypes[GEANY_FILETYPES_OMS]->id = GEANY_FILETYPES_OMS;
|
filetypes[GEANY_FILETYPES_OMS]->id = GEANY_FILETYPES_OMS;
|
||||||
filetypes[GEANY_FILETYPES_OMS]->uid = FILETYPE_UID_OMS;
|
|
||||||
filetypes[GEANY_FILETYPES_OMS]->lang = -2;
|
filetypes[GEANY_FILETYPES_OMS]->lang = -2;
|
||||||
filetypes[GEANY_FILETYPES_OMS]->name = g_strdup("O-Matrix");
|
filetypes[GEANY_FILETYPES_OMS]->name = g_strdup("O-Matrix");
|
||||||
filetypes[GEANY_FILETYPES_OMS]->title = g_strdup_printf(_("%s source file"), "O-Matrix");
|
filetypes[GEANY_FILETYPES_OMS]->title = g_strdup_printf(_("%s source file"), "O-Matrix");
|
||||||
@ -419,7 +352,6 @@ void filetypes_init_types()
|
|||||||
|
|
||||||
#define VHDL
|
#define VHDL
|
||||||
filetypes[GEANY_FILETYPES_VHDL]->id = GEANY_FILETYPES_VHDL;
|
filetypes[GEANY_FILETYPES_VHDL]->id = GEANY_FILETYPES_VHDL;
|
||||||
filetypes[GEANY_FILETYPES_VHDL]->uid = FILETYPE_UID_VHDL;
|
|
||||||
filetypes[GEANY_FILETYPES_VHDL]->lang = 21;
|
filetypes[GEANY_FILETYPES_VHDL]->lang = 21;
|
||||||
filetypes[GEANY_FILETYPES_VHDL]->name = g_strdup("VHDL");
|
filetypes[GEANY_FILETYPES_VHDL]->name = g_strdup("VHDL");
|
||||||
filetypes[GEANY_FILETYPES_VHDL]->title = g_strdup_printf(_("%s source file"), "VHDL");
|
filetypes[GEANY_FILETYPES_VHDL]->title = g_strdup_printf(_("%s source file"), "VHDL");
|
||||||
@ -430,7 +362,6 @@ void filetypes_init_types()
|
|||||||
|
|
||||||
#define DIFF
|
#define DIFF
|
||||||
filetypes[GEANY_FILETYPES_DIFF]->id = GEANY_FILETYPES_DIFF;
|
filetypes[GEANY_FILETYPES_DIFF]->id = GEANY_FILETYPES_DIFF;
|
||||||
filetypes[GEANY_FILETYPES_DIFF]->uid = FILETYPE_UID_DIFF;
|
|
||||||
filetypes[GEANY_FILETYPES_DIFF]->lang = 20;
|
filetypes[GEANY_FILETYPES_DIFF]->lang = 20;
|
||||||
filetypes[GEANY_FILETYPES_DIFF]->name = g_strdup("Diff");
|
filetypes[GEANY_FILETYPES_DIFF]->name = g_strdup("Diff");
|
||||||
filetypes[GEANY_FILETYPES_DIFF]->title = g_strdup(_("Diff file"));
|
filetypes[GEANY_FILETYPES_DIFF]->title = g_strdup(_("Diff file"));
|
||||||
@ -441,7 +372,6 @@ void filetypes_init_types()
|
|||||||
|
|
||||||
#define CONF
|
#define CONF
|
||||||
filetypes[GEANY_FILETYPES_CONF]->id = GEANY_FILETYPES_CONF;
|
filetypes[GEANY_FILETYPES_CONF]->id = GEANY_FILETYPES_CONF;
|
||||||
filetypes[GEANY_FILETYPES_CONF]->uid = FILETYPE_UID_CONF;
|
|
||||||
filetypes[GEANY_FILETYPES_CONF]->lang = 10;
|
filetypes[GEANY_FILETYPES_CONF]->lang = 10;
|
||||||
filetypes[GEANY_FILETYPES_CONF]->name = g_strdup("Conf");
|
filetypes[GEANY_FILETYPES_CONF]->name = g_strdup("Conf");
|
||||||
filetypes[GEANY_FILETYPES_CONF]->title = g_strdup(_("Config file"));
|
filetypes[GEANY_FILETYPES_CONF]->title = g_strdup(_("Config file"));
|
||||||
@ -453,7 +383,6 @@ void filetypes_init_types()
|
|||||||
|
|
||||||
#define HAXE
|
#define HAXE
|
||||||
filetypes[GEANY_FILETYPES_HAXE]->id = GEANY_FILETYPES_HAXE;
|
filetypes[GEANY_FILETYPES_HAXE]->id = GEANY_FILETYPES_HAXE;
|
||||||
filetypes[GEANY_FILETYPES_HAXE]->uid = FILETYPE_UID_HAXE;
|
|
||||||
filetypes[GEANY_FILETYPES_HAXE]->lang = 27;
|
filetypes[GEANY_FILETYPES_HAXE]->lang = 27;
|
||||||
filetypes[GEANY_FILETYPES_HAXE]->name = g_strdup("Haxe");
|
filetypes[GEANY_FILETYPES_HAXE]->name = g_strdup("Haxe");
|
||||||
filetypes[GEANY_FILETYPES_HAXE]->title = g_strdup_printf(_("%s source file"), "Haxe");
|
filetypes[GEANY_FILETYPES_HAXE]->title = g_strdup_printf(_("%s source file"), "Haxe");
|
||||||
@ -464,7 +393,6 @@ void filetypes_init_types()
|
|||||||
|
|
||||||
#define REST
|
#define REST
|
||||||
filetypes[GEANY_FILETYPES_REST]->id = GEANY_FILETYPES_REST;
|
filetypes[GEANY_FILETYPES_REST]->id = GEANY_FILETYPES_REST;
|
||||||
filetypes[GEANY_FILETYPES_REST]->uid = FILETYPE_UID_REST;
|
|
||||||
filetypes[GEANY_FILETYPES_REST]->lang = 28;
|
filetypes[GEANY_FILETYPES_REST]->lang = 28;
|
||||||
filetypes[GEANY_FILETYPES_REST]->name = g_strdup("reStructuredText");
|
filetypes[GEANY_FILETYPES_REST]->name = g_strdup("reStructuredText");
|
||||||
filetypes[GEANY_FILETYPES_REST]->title = g_strdup(_("reStructuredText file"));
|
filetypes[GEANY_FILETYPES_REST]->title = g_strdup(_("reStructuredText file"));
|
||||||
@ -475,15 +403,67 @@ void filetypes_init_types()
|
|||||||
filetypes[GEANY_FILETYPES_REST]->comment_close = NULL;
|
filetypes[GEANY_FILETYPES_REST]->comment_close = NULL;
|
||||||
|
|
||||||
#define ALL
|
#define ALL
|
||||||
filetypes[GEANY_FILETYPES_ALL]->id = GEANY_FILETYPES_ALL;
|
filetypes[GEANY_FILETYPES_NONE]->id = GEANY_FILETYPES_NONE;
|
||||||
filetypes[GEANY_FILETYPES_ALL]->name = g_strdup("None");
|
filetypes[GEANY_FILETYPES_NONE]->name = g_strdup("None");
|
||||||
filetypes[GEANY_FILETYPES_ALL]->uid = FILETYPE_UID_ALL;
|
filetypes[GEANY_FILETYPES_NONE]->lang = -2;
|
||||||
filetypes[GEANY_FILETYPES_ALL]->lang = -2;
|
filetypes[GEANY_FILETYPES_NONE]->title = g_strdup(_("All files"));
|
||||||
filetypes[GEANY_FILETYPES_ALL]->title = g_strdup(_("All files"));
|
filetypes[GEANY_FILETYPES_NONE]->extension = g_strdup("*");
|
||||||
filetypes[GEANY_FILETYPES_ALL]->extension = g_strdup("*");
|
filetypes[GEANY_FILETYPES_NONE]->pattern = utils_strv_new("*", NULL);
|
||||||
filetypes[GEANY_FILETYPES_ALL]->pattern = utils_strv_new("*", NULL);
|
filetypes[GEANY_FILETYPES_NONE]->comment_open = NULL;
|
||||||
filetypes[GEANY_FILETYPES_ALL]->comment_open = NULL;
|
filetypes[GEANY_FILETYPES_NONE]->comment_close = NULL;
|
||||||
filetypes[GEANY_FILETYPES_ALL]->comment_close = NULL;
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* initialize fields. */
|
||||||
|
static filetype *filetype_new(void)
|
||||||
|
{
|
||||||
|
FullFileType *fft = g_new0(FullFileType, 1);
|
||||||
|
filetype *ft = (filetype*) fft;
|
||||||
|
|
||||||
|
/*
|
||||||
|
ft->id = GEANY_FILETYPES_OTHER;
|
||||||
|
*/
|
||||||
|
ft->lang = -2; /* assume no tagmanager parser */
|
||||||
|
ft->programs = g_new0(struct build_programs, 1);
|
||||||
|
ft->actions = g_new0(struct build_actions, 1);
|
||||||
|
return ft;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Add a filetype pointer to the list of available filetypes. */
|
||||||
|
static void filetype_add(filetype *ft)
|
||||||
|
{
|
||||||
|
g_return_if_fail(ft);
|
||||||
|
g_return_if_fail(ft->name);
|
||||||
|
|
||||||
|
g_ptr_array_add(filetypes_array, ft);
|
||||||
|
g_hash_table_insert(filetypes_hash, ft->name, ft);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Create the filetypes array and fill it with the known filetypes. */
|
||||||
|
void filetypes_init_types()
|
||||||
|
{
|
||||||
|
filetype_id ft_id;
|
||||||
|
|
||||||
|
g_return_if_fail(filetypes_array == NULL);
|
||||||
|
g_return_if_fail(filetypes_hash == NULL);
|
||||||
|
|
||||||
|
filetypes_array = g_ptr_array_sized_new(GEANY_MAX_BUILT_IN_FILETYPES);
|
||||||
|
filetypes_hash = g_hash_table_new(g_str_hash, g_str_equal);
|
||||||
|
|
||||||
|
/* Create built-in filetypes */
|
||||||
|
for (ft_id = 0; ft_id < GEANY_MAX_BUILT_IN_FILETYPES; ft_id++)
|
||||||
|
{
|
||||||
|
filetypes[ft_id] = filetype_new();
|
||||||
|
}
|
||||||
|
init_builtin_filetypes();
|
||||||
|
|
||||||
|
/* Add built-in filetypes to the hash now the name fields are set */
|
||||||
|
for (ft_id = 0; ft_id < GEANY_MAX_BUILT_IN_FILETYPES; ft_id++)
|
||||||
|
{
|
||||||
|
filetype_add(filetypes[ft_id]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -495,8 +475,7 @@ void filetypes_init_types()
|
|||||||
gtk_widget_show((item));
|
gtk_widget_show((item));
|
||||||
|
|
||||||
|
|
||||||
/* Calls filetypes_init_types() and creates the filetype menu. */
|
static void create_set_filetype_menu()
|
||||||
void filetypes_init()
|
|
||||||
{
|
{
|
||||||
filetype_id ft_id;
|
filetype_id ft_id;
|
||||||
GtkWidget *filetype_menu = lookup_widget(app->window, "set_filetype1_menu");
|
GtkWidget *filetype_menu = lookup_widget(app->window, "set_filetype1_menu");
|
||||||
@ -504,15 +483,13 @@ void filetypes_init()
|
|||||||
GtkWidget *sub_menu_programming, *sub_menu_scripts, *sub_menu_markup, *sub_menu_misc;
|
GtkWidget *sub_menu_programming, *sub_menu_scripts, *sub_menu_markup, *sub_menu_misc;
|
||||||
GtkWidget *sub_item_programming, *sub_item_scripts, *sub_item_markup, *sub_item_misc;
|
GtkWidget *sub_item_programming, *sub_item_scripts, *sub_item_markup, *sub_item_misc;
|
||||||
|
|
||||||
filetypes_init_types();
|
|
||||||
|
|
||||||
create_sub_menu(sub_menu_programming, sub_item_programming, _("_Programming Languages"));
|
create_sub_menu(sub_menu_programming, sub_item_programming, _("_Programming Languages"));
|
||||||
create_sub_menu(sub_menu_scripts, sub_item_scripts, _("_Scripting Languages"));
|
create_sub_menu(sub_menu_scripts, sub_item_scripts, _("_Scripting Languages"));
|
||||||
create_sub_menu(sub_menu_markup, sub_item_markup, _("_Markup Languages"));
|
create_sub_menu(sub_menu_markup, sub_item_markup, _("_Markup Languages"));
|
||||||
create_sub_menu(sub_menu_misc, sub_item_misc, _("M_iscellaneous Languages"));
|
create_sub_menu(sub_menu_misc, sub_item_misc, _("M_iscellaneous Languages"));
|
||||||
|
|
||||||
/* Append all filetypes to the filetype menu */
|
/* Append all filetypes to the filetype menu */
|
||||||
for (ft_id = 0; ft_id < GEANY_MAX_FILE_TYPES; ft_id++)
|
for (ft_id = 0; ft_id < filetypes_array->len; ft_id++)
|
||||||
{
|
{
|
||||||
filetype *ft = filetypes[ft_id];
|
filetype *ft = filetypes[ft_id];
|
||||||
const gchar *title = ft->title;
|
const gchar *title = ft->title;
|
||||||
@ -540,7 +517,7 @@ void filetypes_init()
|
|||||||
sub_menu = sub_menu_misc;
|
sub_menu = sub_menu_misc;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case GEANY_FILETYPES_ALL: /* none */
|
case GEANY_FILETYPES_NONE: /* none */
|
||||||
{
|
{
|
||||||
sub_menu = filetype_menu;
|
sub_menu = filetype_menu;
|
||||||
title = _("None");
|
title = _("None");
|
||||||
@ -548,25 +525,42 @@ void filetypes_init()
|
|||||||
}
|
}
|
||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
ft->item = NULL;
|
create_radio_menu_item(sub_menu, title, ft);
|
||||||
filetypes_create_menu_item(sub_menu, title, ft);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* If uid is valid, return corresponding filetype, otherwise NULL. */
|
void filetypes_init()
|
||||||
filetype *filetypes_get_from_uid(gint uid)
|
|
||||||
{
|
{
|
||||||
gint i;
|
filetypes_init_types();
|
||||||
|
create_set_filetype_menu();
|
||||||
|
}
|
||||||
|
|
||||||
for (i = 0; i < GEANY_MAX_FILE_TYPES; i++)
|
|
||||||
|
static gboolean match_basename(G_GNUC_UNUSED gpointer key, gpointer value, gpointer user_data)
|
||||||
|
{
|
||||||
|
filetype *ft = value;
|
||||||
|
const gchar *base_filename = user_data;
|
||||||
|
gint j;
|
||||||
|
gboolean ret = FALSE;
|
||||||
|
|
||||||
|
/* Don't match '*' because it comes before any custom filetypes */
|
||||||
|
if (ft->id == GEANY_FILETYPES_NONE)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
for (j = 0; ft->pattern[j] != NULL; j++)
|
||||||
{
|
{
|
||||||
filetype *ft = filetypes[i];
|
GPatternSpec *pattern = g_pattern_spec_new(ft->pattern[j]);
|
||||||
|
|
||||||
if (ft->uid == (guint) uid)
|
if (g_pattern_match_string(pattern, base_filename))
|
||||||
return ft;
|
{
|
||||||
|
ret = TRUE;
|
||||||
|
g_pattern_spec_free(pattern);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
g_pattern_spec_free(pattern);
|
||||||
}
|
}
|
||||||
return NULL;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -574,34 +568,22 @@ filetype *filetypes_get_from_uid(gint uid)
|
|||||||
* utf8_filename can include the full path. */
|
* utf8_filename can include the full path. */
|
||||||
filetype *filetypes_detect_from_extension(const gchar *utf8_filename)
|
filetype *filetypes_detect_from_extension(const gchar *utf8_filename)
|
||||||
{
|
{
|
||||||
GPatternSpec *pattern;
|
|
||||||
gchar *base_filename;
|
gchar *base_filename;
|
||||||
gint i, j;
|
filetype *ft;
|
||||||
|
|
||||||
/* to match against the basename of the file(because of Makefile*) */
|
/* to match against the basename of the file (because of Makefile*) */
|
||||||
base_filename = g_path_get_basename(utf8_filename);
|
base_filename = g_path_get_basename(utf8_filename);
|
||||||
#ifdef G_OS_WIN32
|
#ifdef G_OS_WIN32
|
||||||
/* use lower case basename */
|
/* use lower case basename */
|
||||||
setptr(base_filename, g_utf8_strdown(base_filename, -1));
|
setptr(base_filename, g_utf8_strdown(base_filename, -1));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
for(i = 0; i < GEANY_MAX_FILE_TYPES; i++)
|
ft = g_hash_table_find(filetypes_hash, match_basename, base_filename);
|
||||||
{
|
if (ft == NULL)
|
||||||
for (j = 0; filetypes[i]->pattern[j] != NULL; j++)
|
ft = filetypes[GEANY_FILETYPES_NONE];
|
||||||
{
|
|
||||||
pattern = g_pattern_spec_new(filetypes[i]->pattern[j]);
|
|
||||||
if (g_pattern_match_string(pattern, base_filename))
|
|
||||||
{
|
|
||||||
g_free(base_filename);
|
|
||||||
g_pattern_spec_free(pattern);
|
|
||||||
return filetypes[i];
|
|
||||||
}
|
|
||||||
g_pattern_spec_free(pattern);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
g_free(base_filename);
|
g_free(base_filename);
|
||||||
return filetypes[GEANY_FILETYPES_ALL];
|
return ft;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -684,7 +666,7 @@ static filetype *filetypes_detect_from_file_internal(const gchar *utf8_filename,
|
|||||||
return ft;
|
return ft;
|
||||||
|
|
||||||
if (utf8_filename == NULL)
|
if (utf8_filename == NULL)
|
||||||
return filetypes[GEANY_FILETYPES_ALL];
|
return filetypes[GEANY_FILETYPES_NONE];
|
||||||
|
|
||||||
return filetypes_detect_from_extension(utf8_filename);
|
return filetypes_detect_from_extension(utf8_filename);
|
||||||
}
|
}
|
||||||
@ -697,7 +679,7 @@ filetype *filetypes_detect_from_file(gint idx)
|
|||||||
gchar *line;
|
gchar *line;
|
||||||
|
|
||||||
if (! DOC_IDX_VALID(idx))
|
if (! DOC_IDX_VALID(idx))
|
||||||
return filetypes[GEANY_FILETYPES_ALL];
|
return filetypes[GEANY_FILETYPES_NONE];
|
||||||
|
|
||||||
line = sci_get_line(doc_list[idx].sci, 0);
|
line = sci_get_line(doc_list[idx].sci, 0);
|
||||||
ft = filetypes_detect_from_file_internal(doc_list[idx].file_name, line);
|
ft = filetypes_detect_from_file_internal(doc_list[idx].file_name, line);
|
||||||
@ -731,12 +713,16 @@ filetype *filetypes_detect_from_filename(const gchar *utf8_filename)
|
|||||||
|
|
||||||
void filetypes_select_radio_item(const filetype *ft)
|
void filetypes_select_radio_item(const filetype *ft)
|
||||||
{
|
{
|
||||||
|
FullFileType *fft;
|
||||||
|
|
||||||
/* app->ignore_callback has to be set by the caller */
|
/* app->ignore_callback has to be set by the caller */
|
||||||
|
g_return_if_fail(app->ignore_callback);
|
||||||
|
|
||||||
if (ft == NULL)
|
if (ft == NULL)
|
||||||
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(
|
ft = filetypes[GEANY_FILETYPES_NONE];
|
||||||
radio_items[filetypes[GEANY_FILETYPES_ALL]->id]), TRUE);
|
|
||||||
else
|
fft = (FullFileType*)ft;
|
||||||
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(radio_items[ft->id]), TRUE);
|
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(fft->menu_item), TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -751,46 +737,68 @@ on_filetype_change (GtkMenuItem *menuitem,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void filetypes_create_menu_item(GtkWidget *menu, const gchar *label, filetype *ftype)
|
static void create_radio_menu_item(GtkWidget *menu, const gchar *label, filetype *ftype)
|
||||||
{
|
{
|
||||||
static GSList *group = NULL;
|
static GSList *group = NULL;
|
||||||
GtkWidget *tmp;
|
GtkWidget *tmp;
|
||||||
|
FullFileType *fft = (FullFileType*)ftype;
|
||||||
|
|
||||||
tmp = gtk_radio_menu_item_new_with_label(group, label);
|
tmp = gtk_radio_menu_item_new_with_label(group, label);
|
||||||
group = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(tmp));
|
group = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(tmp));
|
||||||
radio_items[ftype->id] = tmp;
|
fft->menu_item = tmp;
|
||||||
gtk_widget_show(tmp);
|
gtk_widget_show(tmp);
|
||||||
gtk_container_add(GTK_CONTAINER(menu), tmp);
|
gtk_container_add(GTK_CONTAINER(menu), tmp);
|
||||||
g_signal_connect((gpointer) tmp, "activate", G_CALLBACK(on_filetype_change), (gpointer) ftype);
|
g_signal_connect((gpointer) tmp, "activate", G_CALLBACK(on_filetype_change), (gpointer) ftype);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
/* Remove a filetype pointer from the list of available filetypes. */
|
||||||
|
static void filetype_remove(filetype *ft)
|
||||||
|
{
|
||||||
|
g_return_if_fail(ft);
|
||||||
|
|
||||||
|
g_ptr_array_remove(filetypes_array, ft);
|
||||||
|
|
||||||
|
if (!g_hash_table_remove(filetypes_hash, ft))
|
||||||
|
g_warning("Could not remove filetype %p!", ft);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
static void filetype_free(gpointer data, G_GNUC_UNUSED gpointer user_data)
|
||||||
|
{
|
||||||
|
filetype *ft = data;
|
||||||
|
|
||||||
|
g_return_if_fail(ft != NULL);
|
||||||
|
|
||||||
|
g_free(ft->name);
|
||||||
|
g_free(ft->title);
|
||||||
|
g_free(ft->extension);
|
||||||
|
g_free(ft->comment_open);
|
||||||
|
g_free(ft->comment_close);
|
||||||
|
g_free(ft->context_action_cmd);
|
||||||
|
g_free(ft->programs->compiler);
|
||||||
|
g_free(ft->programs->linker);
|
||||||
|
g_free(ft->programs->run_cmd);
|
||||||
|
g_free(ft->programs->run_cmd2);
|
||||||
|
g_free(ft->programs);
|
||||||
|
g_free(ft->actions);
|
||||||
|
|
||||||
|
g_strfreev(ft->pattern);
|
||||||
|
g_free(ft);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* frees the array and all related pointers */
|
/* frees the array and all related pointers */
|
||||||
void filetypes_free_types()
|
void filetypes_free_types()
|
||||||
{
|
{
|
||||||
gint i;
|
g_return_if_fail(filetypes_array != NULL);
|
||||||
|
g_return_if_fail(filetypes_hash != NULL);
|
||||||
|
|
||||||
for(i = 0; i < GEANY_MAX_FILE_TYPES; i++)
|
g_ptr_array_foreach(filetypes_array, filetype_free, NULL);
|
||||||
{
|
g_ptr_array_free(filetypes_array, TRUE);
|
||||||
if (filetypes[i])
|
g_hash_table_destroy(filetypes_hash);
|
||||||
{
|
|
||||||
g_free(filetypes[i]->name);
|
|
||||||
g_free(filetypes[i]->title);
|
|
||||||
g_free(filetypes[i]->extension);
|
|
||||||
g_free(filetypes[i]->comment_open);
|
|
||||||
g_free(filetypes[i]->comment_close);
|
|
||||||
g_free(filetypes[i]->context_action_cmd);
|
|
||||||
g_free(filetypes[i]->programs->compiler);
|
|
||||||
g_free(filetypes[i]->programs->linker);
|
|
||||||
g_free(filetypes[i]->programs->run_cmd);
|
|
||||||
g_free(filetypes[i]->programs->run_cmd2);
|
|
||||||
g_free(filetypes[i]->programs);
|
|
||||||
g_free(filetypes[i]->actions);
|
|
||||||
|
|
||||||
g_strfreev(filetypes[i]->pattern);
|
|
||||||
g_free(filetypes[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -900,19 +908,19 @@ static void load_system_keyfile(GKeyFile *key_file, const gchar *file, GKeyFileF
|
|||||||
void filetypes_load_config(gint ft_id)
|
void filetypes_load_config(gint ft_id)
|
||||||
{
|
{
|
||||||
GKeyFile *config, *config_home;
|
GKeyFile *config, *config_home;
|
||||||
static gboolean loaded[GEANY_MAX_FILE_TYPES] = {FALSE};
|
FullFileType *fft = (FullFileType*)filetypes[ft_id];
|
||||||
|
|
||||||
g_return_if_fail(ft_id >= 0 && ft_id < GEANY_MAX_FILE_TYPES);
|
g_return_if_fail(ft_id >= 0 && ft_id < (gint) filetypes_array->len);
|
||||||
|
|
||||||
if (loaded[ft_id])
|
if (fft->keyfile_loaded)
|
||||||
return;
|
return;
|
||||||
loaded[ft_id] = TRUE;
|
fft->keyfile_loaded = TRUE;
|
||||||
|
|
||||||
config = g_key_file_new();
|
config = g_key_file_new();
|
||||||
config_home = g_key_file_new();
|
config_home = g_key_file_new();
|
||||||
{
|
{
|
||||||
/* highlighting uses GEANY_FILETYPES_ALL for common settings */
|
/* highlighting uses GEANY_FILETYPES_NONE for common settings */
|
||||||
gchar *ext = (ft_id != GEANY_FILETYPES_ALL) ?
|
gchar *ext = (ft_id != GEANY_FILETYPES_NONE) ?
|
||||||
filetypes_get_conf_extension(ft_id) : g_strdup("common");
|
filetypes_get_conf_extension(ft_id) : g_strdup("common");
|
||||||
gchar *f0 = g_strconcat(app->datadir, G_DIR_SEPARATOR_S "filetypes.", ext, NULL);
|
gchar *f0 = g_strconcat(app->datadir, G_DIR_SEPARATOR_S "filetypes.", ext, NULL);
|
||||||
gchar *f = g_strconcat(app->configdir,
|
gchar *f = g_strconcat(app->configdir,
|
||||||
@ -957,7 +965,7 @@ void filetypes_save_commands()
|
|||||||
G_DIR_SEPARATOR_S GEANY_FILEDEFS_SUBDIR G_DIR_SEPARATOR_S "filetypes.", NULL);
|
G_DIR_SEPARATOR_S GEANY_FILEDEFS_SUBDIR G_DIR_SEPARATOR_S "filetypes.", NULL);
|
||||||
gint i;
|
gint i;
|
||||||
|
|
||||||
for (i = 0; i < GEANY_FILETYPES_ALL; i++)
|
for (i = 0; i < GEANY_FILETYPES_NONE; i++)
|
||||||
{
|
{
|
||||||
struct build_programs *bp = filetypes[i]->programs;
|
struct build_programs *bp = filetypes[i]->programs;
|
||||||
GKeyFile *config_home;
|
GKeyFile *config_home;
|
||||||
@ -995,19 +1003,21 @@ void filetypes_save_commands()
|
|||||||
GtkFileFilter *filetypes_create_file_filter_all_source()
|
GtkFileFilter *filetypes_create_file_filter_all_source()
|
||||||
{
|
{
|
||||||
GtkFileFilter *new_filter;
|
GtkFileFilter *new_filter;
|
||||||
gint i, j;
|
guint i, j;
|
||||||
|
|
||||||
new_filter = gtk_file_filter_new();
|
new_filter = gtk_file_filter_new();
|
||||||
gtk_file_filter_set_name(new_filter, _("All Source"));
|
gtk_file_filter_set_name(new_filter, _("All Source"));
|
||||||
|
|
||||||
for (i = 0; i < GEANY_FILETYPES_ALL; i++)
|
for (i = 0; i < filetypes_array->len; i++)
|
||||||
{
|
{
|
||||||
|
if (i == GEANY_FILETYPES_NONE)
|
||||||
|
continue;
|
||||||
|
|
||||||
for (j = 0; filetypes[i]->pattern[j]; j++)
|
for (j = 0; filetypes[i]->pattern[j]; j++)
|
||||||
{
|
{
|
||||||
gtk_file_filter_add_pattern(new_filter, filetypes[i]->pattern[j]);
|
gtk_file_filter_add_pattern(new_filter, filetypes[i]->pattern[j]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return new_filter;
|
return new_filter;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1040,3 +1050,17 @@ gboolean filetype_has_tags(filetype *ft)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** Find a filetype pointer from its @c name field. */
|
||||||
|
filetype *filetypes_lookup_by_name(const gchar *name)
|
||||||
|
{
|
||||||
|
filetype *ft;
|
||||||
|
|
||||||
|
g_return_val_if_fail(NZV(name), NULL);
|
||||||
|
|
||||||
|
ft = g_hash_table_lookup(filetypes_hash, name);
|
||||||
|
if (ft == NULL)
|
||||||
|
geany_debug("Could not find filetype '%s'.", name);
|
||||||
|
return ft;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -77,13 +77,13 @@ typedef enum
|
|||||||
GEANY_FILETYPES_REST,
|
GEANY_FILETYPES_REST,
|
||||||
GEANY_FILETYPES_SQL,
|
GEANY_FILETYPES_SQL,
|
||||||
|
|
||||||
GEANY_FILETYPES_ALL, /* must be last filetype, used for 'None' item. */
|
GEANY_FILETYPES_NONE, /* must be last filetype */
|
||||||
GEANY_MAX_FILE_TYPES
|
GEANY_MAX_BUILT_IN_FILETYPES /* Use filetypes_array->len instead */
|
||||||
} filetype_id;
|
} filetype_id;
|
||||||
|
|
||||||
/* Safe wrapper to get the id field of a possibly NULL filetype pointer. */
|
/* Safe wrapper to get the id field of a possibly NULL filetype pointer. */
|
||||||
#define FILETYPE_ID(filetype_ptr) \
|
#define FILETYPE_ID(filetype_ptr) \
|
||||||
(((filetype_ptr) != NULL) ? (filetype_ptr)->id : GEANY_FILETYPES_ALL)
|
(((filetype_ptr) != NULL) ? (filetype_ptr)->id : GEANY_FILETYPES_NONE)
|
||||||
|
|
||||||
|
|
||||||
struct build_actions
|
struct build_actions
|
||||||
@ -105,8 +105,6 @@ struct build_programs
|
|||||||
struct filetype
|
struct filetype
|
||||||
{
|
{
|
||||||
filetype_id id;
|
filetype_id id;
|
||||||
guint uid; /* unique id as reference for saved filetype in config file */
|
|
||||||
GtkWidget *item; /* holds a pointer to the menu item for this filetypes */
|
|
||||||
langType lang; /* represents the langType of tagmanager(see the table */
|
langType lang; /* represents the langType of tagmanager(see the table */
|
||||||
/* in tagmanager/parsers.h), -1 represents all, -2 none */
|
/* in tagmanager/parsers.h), -1 represents all, -2 none */
|
||||||
gchar *name; /* will be used as name for tagmanager */
|
gchar *name; /* will be used as name for tagmanager */
|
||||||
@ -121,11 +119,15 @@ struct filetype
|
|||||||
struct build_actions *actions;
|
struct build_actions *actions;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern filetype *filetypes[GEANY_MAX_FILE_TYPES];
|
extern GPtrArray *filetypes_array;
|
||||||
|
|
||||||
|
/* Wrap filetypes_array so it can be used with C array syntax.
|
||||||
|
* Example: filetypes[GEANY_FILETYPES_C]->name = ...; */
|
||||||
|
#define filetypes ((filetype **)filetypes_array->pdata)
|
||||||
|
|
||||||
|
|
||||||
/* If uid is valid, return corresponding filetype, otherwise NULL. */
|
filetype *filetypes_lookup_by_name(const gchar *name);
|
||||||
filetype *filetypes_get_from_uid(gint uid);
|
|
||||||
|
|
||||||
/* Calls filetypes_init_types() and creates the filetype menu. */
|
/* Calls filetypes_init_types() and creates the filetype menu. */
|
||||||
void filetypes_init(void);
|
void filetypes_init(void);
|
||||||
|
@ -52,7 +52,7 @@ typedef struct
|
|||||||
} StyleSet;
|
} StyleSet;
|
||||||
|
|
||||||
/* each filetype has a styleset except GEANY_FILETYPE_ALL */
|
/* each filetype has a styleset except GEANY_FILETYPE_ALL */
|
||||||
static StyleSet style_sets[GEANY_MAX_FILE_TYPES - 1] = {{NULL, NULL, NULL}};
|
static StyleSet style_sets[GEANY_MAX_BUILT_IN_FILETYPES - 1] = {{NULL, NULL, NULL}};
|
||||||
|
|
||||||
|
|
||||||
enum /* Geany common styling */
|
enum /* Geany common styling */
|
||||||
@ -273,7 +273,7 @@ static void set_sci_style(ScintillaObject *sci, gint style, gint ft, gint stylin
|
|||||||
{
|
{
|
||||||
HighlightingStyle *style_ptr;
|
HighlightingStyle *style_ptr;
|
||||||
|
|
||||||
if (ft == GEANY_FILETYPES_ALL)
|
if (ft == GEANY_FILETYPES_NONE)
|
||||||
style_ptr = &common_style_set.styling[styling_index];
|
style_ptr = &common_style_set.styling[styling_index];
|
||||||
else
|
else
|
||||||
style_ptr = &style_sets[ft].styling[styling_index];
|
style_ptr = &style_sets[ft].styling[styling_index];
|
||||||
@ -289,7 +289,7 @@ void highlighting_free_styles()
|
|||||||
{
|
{
|
||||||
gint i;
|
gint i;
|
||||||
|
|
||||||
for (i = 0; i < GEANY_MAX_FILE_TYPES - 1; i++)
|
for (i = 0; i < GEANY_MAX_BUILT_IN_FILETYPES - 1; i++)
|
||||||
{
|
{
|
||||||
StyleSet *style_ptr;
|
StyleSet *style_ptr;
|
||||||
style_ptr = &style_sets[i];
|
style_ptr = &style_sets[i];
|
||||||
@ -555,10 +555,10 @@ static void styleset_common(ScintillaObject *sci, gint style_bits, filetype_id f
|
|||||||
|
|
||||||
SSM(sci, SCI_SETFOLDMARGINCOLOUR, 1, invert(common_style_set.styling[GCS_MARGIN_FOLDING].background));
|
SSM(sci, SCI_SETFOLDMARGINCOLOUR, 1, invert(common_style_set.styling[GCS_MARGIN_FOLDING].background));
|
||||||
/*SSM(sci, SCI_SETFOLDMARGINHICOLOUR, 1, invert(common_style_set.styling[GCS_MARGIN_FOLDING].background));*/
|
/*SSM(sci, SCI_SETFOLDMARGINHICOLOUR, 1, invert(common_style_set.styling[GCS_MARGIN_FOLDING].background));*/
|
||||||
set_sci_style(sci, STYLE_LINENUMBER, GEANY_FILETYPES_ALL, GCS_MARGIN_LINENUMBER);
|
set_sci_style(sci, STYLE_LINENUMBER, GEANY_FILETYPES_NONE, GCS_MARGIN_LINENUMBER);
|
||||||
set_sci_style(sci, STYLE_BRACELIGHT, GEANY_FILETYPES_ALL, GCS_BRACE_GOOD);
|
set_sci_style(sci, STYLE_BRACELIGHT, GEANY_FILETYPES_NONE, GCS_BRACE_GOOD);
|
||||||
set_sci_style(sci, STYLE_BRACEBAD, GEANY_FILETYPES_ALL, GCS_BRACE_BAD);
|
set_sci_style(sci, STYLE_BRACEBAD, GEANY_FILETYPES_NONE, GCS_BRACE_BAD);
|
||||||
set_sci_style(sci, STYLE_INDENTGUIDE, GEANY_FILETYPES_ALL, GCS_INDENT_GUIDE);
|
set_sci_style(sci, STYLE_INDENTGUIDE, GEANY_FILETYPES_NONE, GCS_INDENT_GUIDE);
|
||||||
|
|
||||||
/* bold = common whitespace settings enabled */
|
/* bold = common whitespace settings enabled */
|
||||||
SSM(sci, SCI_SETWHITESPACEFORE, common_style_set.styling[GCS_WHITE_SPACE].bold,
|
SSM(sci, SCI_SETWHITESPACEFORE, common_style_set.styling[GCS_WHITE_SPACE].bold,
|
||||||
@ -1864,11 +1864,11 @@ static void styleset_docbook(ScintillaObject *sci)
|
|||||||
|
|
||||||
static void styleset_none(ScintillaObject *sci)
|
static void styleset_none(ScintillaObject *sci)
|
||||||
{
|
{
|
||||||
const filetype_id ft_id = GEANY_FILETYPES_ALL;
|
const filetype_id ft_id = GEANY_FILETYPES_NONE;
|
||||||
|
|
||||||
SSM(sci, SCI_SETLEXER, SCLEX_NULL, 0);
|
SSM(sci, SCI_SETLEXER, SCLEX_NULL, 0);
|
||||||
|
|
||||||
set_sci_style(sci, STYLE_DEFAULT, GEANY_FILETYPES_ALL, GCS_DEFAULT);
|
set_sci_style(sci, STYLE_DEFAULT, GEANY_FILETYPES_NONE, GCS_DEFAULT);
|
||||||
|
|
||||||
styleset_common(sci, 5, ft_id);
|
styleset_common(sci, 5, ft_id);
|
||||||
|
|
||||||
@ -2944,12 +2944,12 @@ static void styleset_haxe(ScintillaObject *sci)
|
|||||||
void highlighting_init_styles(gint filetype_idx, GKeyFile *config, GKeyFile *configh)
|
void highlighting_init_styles(gint filetype_idx, GKeyFile *config, GKeyFile *configh)
|
||||||
{
|
{
|
||||||
/* All stylesets depend on filetypes.common */
|
/* All stylesets depend on filetypes.common */
|
||||||
if (filetype_idx != GEANY_FILETYPES_ALL)
|
if (filetype_idx != GEANY_FILETYPES_NONE)
|
||||||
filetypes_load_config(GEANY_FILETYPES_ALL);
|
filetypes_load_config(GEANY_FILETYPES_NONE);
|
||||||
|
|
||||||
switch (filetype_idx)
|
switch (filetype_idx)
|
||||||
{
|
{
|
||||||
init_styleset_case(GEANY_FILETYPES_ALL, common);
|
init_styleset_case(GEANY_FILETYPES_NONE, common);
|
||||||
init_styleset_case(GEANY_FILETYPES_ASM, asm);
|
init_styleset_case(GEANY_FILETYPES_ASM, asm);
|
||||||
init_styleset_case(GEANY_FILETYPES_BASIC, basic);
|
init_styleset_case(GEANY_FILETYPES_BASIC, basic);
|
||||||
init_styleset_case(GEANY_FILETYPES_C, c);
|
init_styleset_case(GEANY_FILETYPES_C, c);
|
||||||
@ -2997,7 +2997,7 @@ void highlighting_set_styles(ScintillaObject *sci, gint filetype_idx)
|
|||||||
filetypes_load_config(filetype_idx); /* load filetypes.ext */
|
filetypes_load_config(filetype_idx); /* load filetypes.ext */
|
||||||
|
|
||||||
/* load tags files (some lexers highlight global typenames) */
|
/* load tags files (some lexers highlight global typenames) */
|
||||||
if (filetype_idx < GEANY_FILETYPES_ALL)
|
if (filetype_idx < GEANY_FILETYPES_NONE)
|
||||||
symbols_global_tags_loaded(filetype_idx);
|
symbols_global_tags_loaded(filetype_idx);
|
||||||
|
|
||||||
switch (filetype_idx)
|
switch (filetype_idx)
|
||||||
@ -3035,7 +3035,7 @@ void highlighting_set_styles(ScintillaObject *sci, gint filetype_idx)
|
|||||||
styleset_case(GEANY_FILETYPES_VHDL, vhdl);
|
styleset_case(GEANY_FILETYPES_VHDL, vhdl);
|
||||||
styleset_case(GEANY_FILETYPES_XML, xml);
|
styleset_case(GEANY_FILETYPES_XML, xml);
|
||||||
default:
|
default:
|
||||||
styleset_case(GEANY_FILETYPES_ALL, none);
|
styleset_case(GEANY_FILETYPES_NONE, none);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3046,7 +3046,7 @@ void highlighting_set_styles(ScintillaObject *sci, gint filetype_idx)
|
|||||||
* style_id is a Scintilla lexer style, see scintilla/SciLexer.h */
|
* style_id is a Scintilla lexer style, see scintilla/SciLexer.h */
|
||||||
const HighlightingStyle *highlighting_get_style(gint ft_id, gint style_id)
|
const HighlightingStyle *highlighting_get_style(gint ft_id, gint style_id)
|
||||||
{
|
{
|
||||||
if (ft_id < 0 || ft_id > GEANY_MAX_FILE_TYPES)
|
if (ft_id < 0 || ft_id > GEANY_MAX_BUILT_IN_FILETYPES)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (style_sets[ft_id].styling == NULL)
|
if (style_sets[ft_id].styling == NULL)
|
||||||
|
128
src/keyfile.c
128
src/keyfile.c
@ -115,6 +115,27 @@ static void save_recent_files(GKeyFile *config)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static gchar *get_session_file_string(gint idx)
|
||||||
|
{
|
||||||
|
gchar *fname;
|
||||||
|
filetype *ft = doc_list[idx].file_type;
|
||||||
|
|
||||||
|
if (ft == NULL) /* can happen when saving a new file when quitting */
|
||||||
|
ft = filetypes[GEANY_FILETYPES_NONE];
|
||||||
|
|
||||||
|
fname = g_strdup_printf("%d;%s;%d;%d;%d;%d;%d;%s;",
|
||||||
|
sci_get_current_position(doc_list[idx].sci),
|
||||||
|
ft->name,
|
||||||
|
doc_list[idx].readonly,
|
||||||
|
encodings_get_idx_from_charset(doc_list[idx].encoding),
|
||||||
|
doc_list[idx].use_tabs,
|
||||||
|
doc_list[idx].auto_indent,
|
||||||
|
doc_list[idx].line_wrapping,
|
||||||
|
doc_list[idx].file_name);
|
||||||
|
return fname;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void configuration_save_session_files(GKeyFile *config)
|
void configuration_save_session_files(GKeyFile *config)
|
||||||
{
|
{
|
||||||
gint idx, npage;
|
gint idx, npage;
|
||||||
@ -133,20 +154,9 @@ void configuration_save_session_files(GKeyFile *config)
|
|||||||
if (idx >= 0 && g_path_is_absolute(DOC_FILENAME(idx)))
|
if (idx >= 0 && g_path_is_absolute(DOC_FILENAME(idx)))
|
||||||
{
|
{
|
||||||
gchar *fname;
|
gchar *fname;
|
||||||
filetype *ft = doc_list[idx].file_type;
|
|
||||||
|
|
||||||
if (ft == NULL) /* can happen when saving a new file when quitting */
|
|
||||||
ft = filetypes[GEANY_FILETYPES_ALL];
|
|
||||||
g_snprintf(entry, 13, "FILE_NAME_%d", j);
|
g_snprintf(entry, 13, "FILE_NAME_%d", j);
|
||||||
fname = g_strdup_printf("%d;%d;%d;%d;%d;%d;%d;%s;",
|
fname = get_session_file_string(idx);
|
||||||
sci_get_current_position(doc_list[idx].sci),
|
|
||||||
ft->uid,
|
|
||||||
doc_list[idx].readonly,
|
|
||||||
encodings_get_idx_from_charset(doc_list[idx].encoding),
|
|
||||||
doc_list[idx].use_tabs,
|
|
||||||
doc_list[idx].auto_indent,
|
|
||||||
doc_list[idx].line_wrapping,
|
|
||||||
doc_list[idx].file_name);
|
|
||||||
g_key_file_set_string(config, "files", entry, fname);
|
g_key_file_set_string(config, "files", entry, fname);
|
||||||
g_free(fname);
|
g_free(fname);
|
||||||
j++;
|
j++;
|
||||||
@ -801,14 +811,58 @@ gboolean configuration_load(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static gboolean open_session_file(gchar **tmp)
|
||||||
|
{
|
||||||
|
guint pos;
|
||||||
|
const gchar *ft_name;
|
||||||
|
gchar *locale_filename;
|
||||||
|
gint enc_idx;
|
||||||
|
gboolean ro, use_tabs, auto_indent, line_wrapping;
|
||||||
|
gboolean ret = FALSE;
|
||||||
|
|
||||||
|
pos = atoi(tmp[0]);
|
||||||
|
ft_name = tmp[1];
|
||||||
|
ro = atoi(tmp[2]);
|
||||||
|
enc_idx = atoi(tmp[3]);
|
||||||
|
use_tabs = atoi(tmp[4]);
|
||||||
|
auto_indent = atoi(tmp[5]);
|
||||||
|
line_wrapping = atoi(tmp[6]);
|
||||||
|
/* try to get the locale equivalent for the filename */
|
||||||
|
locale_filename = utils_get_locale_from_utf8(tmp[7]);
|
||||||
|
|
||||||
|
if (g_file_test(locale_filename, G_FILE_TEST_IS_REGULAR | G_FILE_TEST_IS_SYMLINK))
|
||||||
|
{
|
||||||
|
filetype *ft = filetypes_lookup_by_name(ft_name);
|
||||||
|
gint new_idx = document_open_file_full(
|
||||||
|
-1, locale_filename, pos, ro, ft,
|
||||||
|
(enc_idx >= 0 && enc_idx < GEANY_ENCODINGS_MAX) ?
|
||||||
|
encodings[enc_idx].charset : NULL);
|
||||||
|
|
||||||
|
if (DOC_IDX_VALID(new_idx))
|
||||||
|
{
|
||||||
|
document_set_use_tabs(new_idx, use_tabs);
|
||||||
|
document_set_line_wrapping(new_idx, line_wrapping);
|
||||||
|
doc_list[new_idx].auto_indent = auto_indent;
|
||||||
|
ret = TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
geany_debug("Could not find file '%s'.", tmp[7]);
|
||||||
|
}
|
||||||
|
|
||||||
|
g_free(locale_filename);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Open session files
|
/* Open session files
|
||||||
* Note: notebook page switch handler and adding to recent files list is always disabled
|
* Note: notebook page switch handler and adding to recent files list is always disabled
|
||||||
* for all files opened within this function */
|
* for all files opened within this function */
|
||||||
gboolean configuration_open_files(void)
|
void configuration_open_files(void)
|
||||||
{
|
{
|
||||||
gint i;
|
gint i;
|
||||||
guint pos;
|
gboolean failure = FALSE;
|
||||||
gboolean ret = FALSE, failure = FALSE;
|
|
||||||
|
|
||||||
/* necessary to set it to TRUE for project session support */
|
/* necessary to set it to TRUE for project session support */
|
||||||
main_status.opening_session_files = TRUE;
|
main_status.opening_session_files = TRUE;
|
||||||
@ -822,43 +876,8 @@ gboolean configuration_open_files(void)
|
|||||||
|
|
||||||
if (tmp != NULL && g_strv_length(tmp) == 8)
|
if (tmp != NULL && g_strv_length(tmp) == 8)
|
||||||
{
|
{
|
||||||
gchar *locale_filename;
|
if (! open_session_file(tmp))
|
||||||
gint ft_uid, enc_idx;
|
|
||||||
gboolean ro, use_tabs, auto_indent, line_wrapping;
|
|
||||||
|
|
||||||
pos = atoi(tmp[0]);
|
|
||||||
ft_uid = atoi(tmp[1]);
|
|
||||||
ro = atoi(tmp[2]);
|
|
||||||
enc_idx = atoi(tmp[3]);
|
|
||||||
use_tabs = atoi(tmp[4]);
|
|
||||||
auto_indent = atoi(tmp[5]);
|
|
||||||
line_wrapping = atoi(tmp[6]);
|
|
||||||
/* try to get the locale equivalent for the filename */
|
|
||||||
locale_filename = utils_get_locale_from_utf8(tmp[7]);
|
|
||||||
|
|
||||||
if (g_file_test(locale_filename, G_FILE_TEST_IS_REGULAR | G_FILE_TEST_IS_SYMLINK))
|
|
||||||
{
|
|
||||||
filetype *ft = filetypes_get_from_uid(ft_uid);
|
|
||||||
gint new_idx = document_open_file_full(
|
|
||||||
-1, locale_filename, pos, ro, ft,
|
|
||||||
(enc_idx >= 0 && enc_idx < GEANY_ENCODINGS_MAX) ?
|
|
||||||
encodings[enc_idx].charset : NULL);
|
|
||||||
|
|
||||||
if (DOC_IDX_VALID(new_idx))
|
|
||||||
{
|
|
||||||
document_set_use_tabs(new_idx, use_tabs);
|
|
||||||
document_set_line_wrapping(new_idx, line_wrapping);
|
|
||||||
doc_list[new_idx].auto_indent = auto_indent;
|
|
||||||
ret = TRUE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
failure = TRUE;
|
failure = TRUE;
|
||||||
geany_debug("Could not find file '%s'.", tmp[7]);
|
|
||||||
}
|
|
||||||
|
|
||||||
g_free(locale_filename);
|
|
||||||
}
|
}
|
||||||
g_strfreev(tmp);
|
g_strfreev(tmp);
|
||||||
|
|
||||||
@ -882,7 +901,7 @@ gboolean configuration_open_files(void)
|
|||||||
ui_set_statusbar(TRUE, _("Failed to load one or more session files."));
|
ui_set_statusbar(TRUE, _("Failed to load one or more session files."));
|
||||||
else if (session_notebook_page >= 0)
|
else if (session_notebook_page >= 0)
|
||||||
{
|
{
|
||||||
/* exlicitly allow notebook switch page callback to be called for window title,
|
/* explicitly allow notebook switch page callback to be called for window title,
|
||||||
* encoding settings and so other things */
|
* encoding settings and so other things */
|
||||||
main_status.opening_session_files = FALSE;
|
main_status.opening_session_files = FALSE;
|
||||||
/** TODO if session_notebook_page is equal to the current notebook tab(the last opened)
|
/** TODO if session_notebook_page is equal to the current notebook tab(the last opened)
|
||||||
@ -890,7 +909,6 @@ gboolean configuration_open_files(void)
|
|||||||
gtk_notebook_set_current_page(GTK_NOTEBOOK(app->notebook), session_notebook_page);
|
gtk_notebook_set_current_page(GTK_NOTEBOOK(app->notebook), session_notebook_page);
|
||||||
}
|
}
|
||||||
main_status.opening_session_files = FALSE;
|
main_status.opening_session_files = FALSE;
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -963,7 +981,7 @@ static void generate_filetype_extensions(const gchar *output_dir)
|
|||||||
g_key_file_set_comment(config, NULL, NULL,
|
g_key_file_set_comment(config, NULL, NULL,
|
||||||
"*** This file generated by: geany --generate-data-files ***", NULL);
|
"*** This file generated by: geany --generate-data-files ***", NULL);
|
||||||
/* add filetype keys */
|
/* add filetype keys */
|
||||||
for (i = 0; i < GEANY_MAX_FILE_TYPES; i++)
|
for (i = 0; i < filetypes_array->len; i++)
|
||||||
{
|
{
|
||||||
g_key_file_set_string_list(config, "Extensions", filetypes[i]->name,
|
g_key_file_set_string_list(config, "Extensions", filetypes[i]->name,
|
||||||
(const gchar**) filetypes[i]->pattern, g_strv_length(filetypes[i]->pattern));
|
(const gchar**) filetypes[i]->pattern, g_strv_length(filetypes[i]->pattern));
|
||||||
@ -1008,7 +1026,7 @@ void configuration_read_filetype_extensions(void)
|
|||||||
g_key_file_load_from_file(userconfig, userconfigfile, G_KEY_FILE_NONE, NULL);
|
g_key_file_load_from_file(userconfig, userconfigfile, G_KEY_FILE_NONE, NULL);
|
||||||
|
|
||||||
/* read the keys */
|
/* read the keys */
|
||||||
for (i = 0; i < GEANY_MAX_FILE_TYPES; i++)
|
for (i = 0; i < filetypes_array->len; i++)
|
||||||
{
|
{
|
||||||
gboolean userset =
|
gboolean userset =
|
||||||
g_key_file_has_key(userconfig, "Extensions", filetypes[i]->name, NULL);
|
g_key_file_has_key(userconfig, "Extensions", filetypes[i]->name, NULL);
|
||||||
|
@ -30,7 +30,7 @@ void configuration_save(void);
|
|||||||
|
|
||||||
gboolean configuration_load(void);
|
gboolean configuration_load(void);
|
||||||
|
|
||||||
gboolean configuration_open_files(void);
|
void configuration_open_files(void);
|
||||||
|
|
||||||
void configuration_reload_default_session(void);
|
void configuration_reload_default_session(void);
|
||||||
|
|
||||||
|
27
src/main.c
27
src/main.c
@ -473,6 +473,21 @@ static void locale_init(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void print_filetypes(void)
|
||||||
|
{
|
||||||
|
guint i;
|
||||||
|
|
||||||
|
filetypes_init_types();
|
||||||
|
printf("Geany's internal filetype names:\n");
|
||||||
|
|
||||||
|
for (i = 0; i < filetypes_array->len; i++)
|
||||||
|
{
|
||||||
|
printf("%s\n", filetypes[i]->name);
|
||||||
|
}
|
||||||
|
filetypes_free_types();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static void parse_command_line_options(gint *argc, gchar ***argv)
|
static void parse_command_line_options(gint *argc, gchar ***argv)
|
||||||
{
|
{
|
||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
@ -585,13 +600,7 @@ static void parse_command_line_options(gint *argc, gchar ***argv)
|
|||||||
|
|
||||||
if (ft_names)
|
if (ft_names)
|
||||||
{
|
{
|
||||||
printf("Geany's internal filetype names:\n");
|
print_filetypes();
|
||||||
filetypes_init_types();
|
|
||||||
for (i = 0; i < GEANY_MAX_FILE_TYPES; i++)
|
|
||||||
{
|
|
||||||
printf("%s\n", filetypes[i]->name);
|
|
||||||
}
|
|
||||||
filetypes_free_types();
|
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -870,7 +879,9 @@ gint main(gint argc, gchar **argv)
|
|||||||
load_project_file();
|
load_project_file();
|
||||||
|
|
||||||
/* load session files into tabs, as they are found in the session_files variable */
|
/* load session files into tabs, as they are found in the session_files variable */
|
||||||
if (! configuration_open_files())
|
configuration_open_files();
|
||||||
|
|
||||||
|
if (gtk_notebook_get_n_pages(GTK_NOTEBOOK(app->notebook)) == 0)
|
||||||
{
|
{
|
||||||
ui_update_popup_copy_items(-1);
|
ui_update_popup_copy_items(-1);
|
||||||
ui_update_popup_reundo_items(-1);
|
ui_update_popup_reundo_items(-1);
|
||||||
|
@ -737,7 +737,7 @@ void msgwin_parse_compiler_error_line(const gchar *string, const gchar *dir, gch
|
|||||||
case GEANY_FILETYPES_LATEX:
|
case GEANY_FILETYPES_LATEX:
|
||||||
/* ./kommtechnik_2b.tex:18: Emergency stop. */
|
/* ./kommtechnik_2b.tex:18: Emergency stop. */
|
||||||
case GEANY_FILETYPES_MAKE: /* Assume makefile is building with gcc */
|
case GEANY_FILETYPES_MAKE: /* Assume makefile is building with gcc */
|
||||||
case GEANY_FILETYPES_ALL:
|
case GEANY_FILETYPES_NONE:
|
||||||
default: /* The default is a GNU gcc type error */
|
default: /* The default is a GNU gcc type error */
|
||||||
{
|
{
|
||||||
if (build_info.file_type_id == GEANY_FILETYPES_JAVA &&
|
if (build_info.file_type_id == GEANY_FILETYPES_JAVA &&
|
||||||
|
@ -30,17 +30,17 @@
|
|||||||
**/
|
**/
|
||||||
|
|
||||||
|
|
||||||
#ifndef PLUGIN_H
|
#ifndef PLUGINDATA_H
|
||||||
#define PLUGIN_H
|
#define PLUGINDATA_H
|
||||||
|
|
||||||
/* The API version should be incremented whenever any plugin data types below are
|
/* The API version should be incremented whenever any plugin data types below are
|
||||||
* modified or appended to. */
|
* modified or appended to. */
|
||||||
static const gint api_version = 53;
|
static const gint api_version = 56;
|
||||||
|
|
||||||
/* The ABI version should be incremented whenever existing fields in the plugin
|
/* The ABI version should be incremented whenever existing fields in the plugin
|
||||||
* data types below have to be changed or reordered. It should stay the same if fields
|
* data types below have to be changed or reordered. It should stay the same if fields
|
||||||
* are only appended, as this doesn't affect existing fields. */
|
* are only appended, as this doesn't affect existing fields. */
|
||||||
static const gint abi_version = 24;
|
static const gint abi_version = 27;
|
||||||
|
|
||||||
/** Check the plugin can be loaded by Geany.
|
/** Check the plugin can be loaded by Geany.
|
||||||
* This performs runtime checks that try to ensure:
|
* This performs runtime checks that try to ensure:
|
||||||
@ -155,9 +155,9 @@ typedef struct GeanyData
|
|||||||
{
|
{
|
||||||
GeanyApp *app; /**< Geany application data fields */
|
GeanyApp *app; /**< Geany application data fields */
|
||||||
GtkWidget *tools_menu; /**< Most plugins should add menu items to the Tools menu only */
|
GtkWidget *tools_menu; /**< Most plugins should add menu items to the Tools menu only */
|
||||||
GArray *doc_array; /**< Dynamic array of document pointers */
|
GArray *doc_array; /**< Dynamic array of document structs */
|
||||||
struct filetype **filetypes;
|
GPtrArray *filetypes_array; /**< Dynamic array of filetype pointers */
|
||||||
struct GeanyPrefs *prefs;
|
struct GeanyPrefs *prefs; /* Note: this will be split up in future versions */
|
||||||
struct EditorPrefs *editor_prefs; /**< Editor settings */
|
struct EditorPrefs *editor_prefs; /**< Editor settings */
|
||||||
struct BuildInfo *build_info; /**< Current build information */
|
struct BuildInfo *build_info; /**< Current build information */
|
||||||
|
|
||||||
@ -367,7 +367,7 @@ HighlightingFuncs;
|
|||||||
typedef struct FiletypeFuncs
|
typedef struct FiletypeFuncs
|
||||||
{
|
{
|
||||||
filetype* (*detect_from_filename) (const gchar *utf8_filename);
|
filetype* (*detect_from_filename) (const gchar *utf8_filename);
|
||||||
filetype* (*get_from_uid) (gint uid);
|
filetype* (*lookup_by_name) (const gchar *name);
|
||||||
}
|
}
|
||||||
FiletypeFuncs;
|
FiletypeFuncs;
|
||||||
|
|
||||||
@ -396,7 +396,8 @@ TagManagerFuncs;
|
|||||||
typedef struct NavQueueFuncs
|
typedef struct NavQueueFuncs
|
||||||
{
|
{
|
||||||
gboolean (*goto_line) (gint old_idx, gint new_idx, gint line);
|
gboolean (*goto_line) (gint old_idx, gint new_idx, gint line);
|
||||||
}NavQueueFuncs;
|
}
|
||||||
|
NavQueueFuncs;
|
||||||
|
|
||||||
|
|
||||||
/* Deprecated aliases */
|
/* Deprecated aliases */
|
||||||
@ -407,6 +408,12 @@ typedef GeanyData PluginData; /* for compatibility with API < 7 */
|
|||||||
#define VERSION_CHECK(api_required) \
|
#define VERSION_CHECK(api_required) \
|
||||||
PLUGIN_VERSION_CHECK(api_required)
|
PLUGIN_VERSION_CHECK(api_required)
|
||||||
|
|
||||||
#endif
|
#define GEANY_MAX_FILE_TYPES \
|
||||||
|
filetypes_array->len
|
||||||
|
|
||||||
|
#define GEANY_FILETYPES_ALL \
|
||||||
|
GEANY_FILETYPES_NONE
|
||||||
|
|
||||||
|
#endif /* GEANY_DISABLE_DEPRECATED */
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -227,7 +227,7 @@ static HighlightingFuncs highlighting_funcs = {
|
|||||||
|
|
||||||
static FiletypeFuncs filetype_funcs = {
|
static FiletypeFuncs filetype_funcs = {
|
||||||
&filetypes_detect_from_filename,
|
&filetypes_detect_from_filename,
|
||||||
&filetypes_get_from_uid
|
&filetypes_lookup_by_name
|
||||||
};
|
};
|
||||||
|
|
||||||
static NavQueueFuncs navqueue_funcs = {
|
static NavQueueFuncs navqueue_funcs = {
|
||||||
@ -267,7 +267,7 @@ geany_data_init(void)
|
|||||||
geany_data.app = app;
|
geany_data.app = app;
|
||||||
geany_data.tools_menu = lookup_widget(app->window, "tools1_menu");
|
geany_data.tools_menu = lookup_widget(app->window, "tools1_menu");
|
||||||
geany_data.doc_array = doc_array;
|
geany_data.doc_array = doc_array;
|
||||||
geany_data.filetypes = filetypes;
|
geany_data.filetypes_array = filetypes_array;
|
||||||
geany_data.prefs = &prefs;
|
geany_data.prefs = &prefs;
|
||||||
geany_data.editor_prefs = &editor_prefs;
|
geany_data.editor_prefs = &editor_prefs;
|
||||||
geany_data.build_info = &build_info;
|
geany_data.build_info = &build_info;
|
||||||
|
@ -1102,7 +1102,7 @@ static GHashTable *get_tagfile_hash(const GSList *file_list)
|
|||||||
|
|
||||||
g_free(utf8_fname);
|
g_free(utf8_fname);
|
||||||
|
|
||||||
if (FILETYPE_ID(ft) < GEANY_FILETYPES_ALL)
|
if (FILETYPE_ID(ft) < GEANY_FILETYPES_NONE)
|
||||||
{
|
{
|
||||||
fnames = g_hash_table_lookup(hash, ft); /* may be NULL */
|
fnames = g_hash_table_lookup(hash, ft); /* may be NULL */
|
||||||
fnames = g_list_append(fnames, fname);
|
fnames = g_list_append(fnames, fname);
|
||||||
@ -1138,13 +1138,13 @@ static GHashTable *init_user_tags(void)
|
|||||||
|
|
||||||
static void load_user_tags(filetype_id ft_id)
|
static void load_user_tags(filetype_id ft_id)
|
||||||
{
|
{
|
||||||
static guchar tags_loaded[GEANY_FILETYPES_ALL] = {0};
|
static guchar tags_loaded[GEANY_FILETYPES_NONE] = {0};
|
||||||
static GHashTable *lang_hash = NULL;
|
static GHashTable *lang_hash = NULL;
|
||||||
GList *fnames;
|
GList *fnames;
|
||||||
const GList *node;
|
const GList *node;
|
||||||
const filetype *ft = filetypes[ft_id];
|
const filetype *ft = filetypes[ft_id];
|
||||||
|
|
||||||
g_return_if_fail(ft_id < GEANY_FILETYPES_ALL);
|
g_return_if_fail(ft_id < GEANY_FILETYPES_NONE);
|
||||||
|
|
||||||
if (tags_loaded[ft_id])
|
if (tags_loaded[ft_id])
|
||||||
return;
|
return;
|
||||||
|
@ -226,7 +226,7 @@ if __name__ == '__main__': main()\n\
|
|||||||
";
|
";
|
||||||
|
|
||||||
static gchar *templates[GEANY_MAX_TEMPLATES];
|
static gchar *templates[GEANY_MAX_TEMPLATES];
|
||||||
static gchar *ft_templates[GEANY_MAX_FILE_TYPES] = {NULL};
|
static gchar *ft_templates[GEANY_MAX_BUILT_IN_FILETYPES] = {NULL};
|
||||||
|
|
||||||
|
|
||||||
/* some simple macros to reduce code size and make the code readable */
|
/* some simple macros to reduce code size and make the code readable */
|
||||||
@ -290,7 +290,7 @@ static void init_ft_templates(const gchar *year, const gchar *date)
|
|||||||
{
|
{
|
||||||
filetype_id ft_id;
|
filetype_id ft_id;
|
||||||
|
|
||||||
for (ft_id = 0; ft_id < GEANY_MAX_FILE_TYPES; ft_id++)
|
for (ft_id = 0; ft_id < GEANY_MAX_BUILT_IN_FILETYPES; ft_id++)
|
||||||
{
|
{
|
||||||
gchar *ext = filetypes_get_conf_extension(ft_id);
|
gchar *ext = filetypes_get_conf_extension(ft_id);
|
||||||
gchar *shortname = g_strconcat("filetype.", ext, NULL);
|
gchar *shortname = g_strconcat("filetype.", ext, NULL);
|
||||||
@ -298,7 +298,7 @@ static void init_ft_templates(const gchar *year, const gchar *date)
|
|||||||
|
|
||||||
switch (ft_id)
|
switch (ft_id)
|
||||||
{
|
{
|
||||||
case GEANY_FILETYPES_ALL: TEMPLATES_CREATE_FILE(fname, templates_filetype_none); break;
|
case GEANY_FILETYPES_NONE: TEMPLATES_CREATE_FILE(fname, templates_filetype_none); break;
|
||||||
case GEANY_FILETYPES_C: TEMPLATES_CREATE_FILE(fname, templates_filetype_c); break;
|
case GEANY_FILETYPES_C: TEMPLATES_CREATE_FILE(fname, templates_filetype_c); break;
|
||||||
case GEANY_FILETYPES_CPP: TEMPLATES_CREATE_FILE(fname, templates_filetype_cpp); break;
|
case GEANY_FILETYPES_CPP: TEMPLATES_CREATE_FILE(fname, templates_filetype_cpp); break;
|
||||||
case GEANY_FILETYPES_D: TEMPLATES_CREATE_FILE(fname, templates_filetype_d); break;
|
case GEANY_FILETYPES_D: TEMPLATES_CREATE_FILE(fname, templates_filetype_d); break;
|
||||||
@ -338,7 +338,7 @@ static void create_new_menu_items(void)
|
|||||||
GtkWidget *template_menu = lookup_widget(app->window, "menu_new_with_template1_menu");
|
GtkWidget *template_menu = lookup_widget(app->window, "menu_new_with_template1_menu");
|
||||||
filetype_id ft_id;
|
filetype_id ft_id;
|
||||||
|
|
||||||
for (ft_id = 0; ft_id < GEANY_MAX_FILE_TYPES; ft_id++)
|
for (ft_id = 0; ft_id < GEANY_MAX_BUILT_IN_FILETYPES; ft_id++)
|
||||||
{
|
{
|
||||||
GtkWidget *tmp_menu, *tmp_button;
|
GtkWidget *tmp_menu, *tmp_button;
|
||||||
filetype *ft = filetypes[ft_id];
|
filetype *ft = filetypes[ft_id];
|
||||||
@ -346,7 +346,7 @@ static void create_new_menu_items(void)
|
|||||||
|
|
||||||
if (ft_templates[ft_id] == NULL)
|
if (ft_templates[ft_id] == NULL)
|
||||||
continue;
|
continue;
|
||||||
if (ft_id == GEANY_FILETYPES_ALL)
|
if (ft_id == GEANY_FILETYPES_NONE)
|
||||||
label = _("None");
|
label = _("None");
|
||||||
tmp_menu = gtk_menu_item_new_with_label(label);
|
tmp_menu = gtk_menu_item_new_with_label(label);
|
||||||
tmp_button = gtk_menu_item_new_with_label(label);
|
tmp_button = gtk_menu_item_new_with_label(label);
|
||||||
@ -482,7 +482,7 @@ static gchar *make_comment_block(const gchar *comment_text, gint filetype_idx, g
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case GEANY_FILETYPES_ALL:
|
case GEANY_FILETYPES_NONE:
|
||||||
{
|
{
|
||||||
line_prefix = "";
|
line_prefix = "";
|
||||||
break;
|
break;
|
||||||
@ -545,7 +545,7 @@ gchar *templates_get_template_fileheader(gint filetype_idx, const gchar *fname)
|
|||||||
|
|
||||||
if (fname == NULL)
|
if (fname == NULL)
|
||||||
{
|
{
|
||||||
if (ft_id == GEANY_FILETYPES_ALL)
|
if (ft_id == GEANY_FILETYPES_NONE)
|
||||||
shortname = g_strdup(GEANY_STRING_UNTITLED);
|
shortname = g_strdup(GEANY_STRING_UNTITLED);
|
||||||
else
|
else
|
||||||
shortname = g_strconcat(GEANY_STRING_UNTITLED, ".", ft->extension, NULL);
|
shortname = g_strconcat(GEANY_STRING_UNTITLED, ".", ft->extension, NULL);
|
||||||
@ -580,7 +580,7 @@ gchar *templates_get_template_new_file(struct filetype *ft)
|
|||||||
gchar *ft_template = NULL;
|
gchar *ft_template = NULL;
|
||||||
gchar *file_header = NULL;
|
gchar *file_header = NULL;
|
||||||
|
|
||||||
if (FILETYPE_ID(ft) == GEANY_FILETYPES_ALL)
|
if (FILETYPE_ID(ft) == GEANY_FILETYPES_NONE)
|
||||||
return get_file_template(ft);
|
return get_file_template(ft);
|
||||||
|
|
||||||
file_header = templates_get_template_fileheader(ft->id, NULL); /* file template only used for new files */
|
file_header = templates_get_template_fileheader(ft->id, NULL); /* file template only used for new files */
|
||||||
|
@ -130,8 +130,8 @@ void ui_update_statusbar(gint idx, gint pos)
|
|||||||
const gchar *cur_tag;
|
const gchar *cur_tag;
|
||||||
gchar *filetype_name;
|
gchar *filetype_name;
|
||||||
|
|
||||||
/* workaround to make the name of filetype GEANY_FILETYPES_ALL translatable */
|
/* workaround to make the name of filetype GEANY_FILETYPES_NONE translatable */
|
||||||
if (doc_list[idx].file_type == NULL || doc_list[idx].file_type->id == GEANY_FILETYPES_ALL)
|
if (doc_list[idx].file_type == NULL || doc_list[idx].file_type->id == GEANY_FILETYPES_NONE)
|
||||||
filetype_name = _("None");
|
filetype_name = _("None");
|
||||||
else
|
else
|
||||||
filetype_name = doc_list[idx].file_type->name;
|
filetype_name = doc_list[idx].file_type->name;
|
||||||
|
@ -607,7 +607,7 @@ gint utils_get_current_function(gint idx, const gchar **tagname)
|
|||||||
/* parse the current function name here because TM line numbers may have changed,
|
/* parse the current function name here because TM line numbers may have changed,
|
||||||
* and it would take too long to reparse the whole file. */
|
* and it would take too long to reparse the whole file. */
|
||||||
if (doc_list[idx].file_type != NULL &&
|
if (doc_list[idx].file_type != NULL &&
|
||||||
doc_list[idx].file_type->id != GEANY_FILETYPES_ALL)
|
doc_list[idx].file_type->id != GEANY_FILETYPES_NONE)
|
||||||
{
|
{
|
||||||
const gint fn_fold = get_function_fold_number(idx);
|
const gint fn_fold = get_function_fold_number(idx);
|
||||||
|
|
||||||
|
14
src/win32.c
14
src/win32.c
@ -88,14 +88,14 @@ static gchar *get_file_filters()
|
|||||||
GString *all_patterns = g_string_sized_new(100);
|
GString *all_patterns = g_string_sized_new(100);
|
||||||
gchar *tmp;
|
gchar *tmp;
|
||||||
|
|
||||||
for (i = 0; i < GEANY_MAX_FILE_TYPES; i++)
|
for (i = 0; i < filetypes_array->len; i++)
|
||||||
{
|
{
|
||||||
tmp = g_strjoinv(";", filetypes[i]->pattern);
|
tmp = g_strjoinv(";", filetypes[i]->pattern);
|
||||||
g_string_append_printf(str, "%s\t%s\t", filetypes[i]->title, tmp);
|
g_string_append_printf(str, "%s\t%s\t", filetypes[i]->title, tmp);
|
||||||
g_free(tmp);
|
g_free(tmp);
|
||||||
}
|
}
|
||||||
/* create meta file filter "All Source" */
|
/* create meta file filter "All Source" */
|
||||||
for (i = 0; i < GEANY_MAX_FILE_TYPES; i++)
|
for (i = 0; i < filetypes_array->len; i++)
|
||||||
{
|
{
|
||||||
for (j = 0; filetypes[i]->pattern[j] != NULL; j++)
|
for (j = 0; filetypes[i]->pattern[j] != NULL; j++)
|
||||||
{
|
{
|
||||||
@ -128,14 +128,14 @@ static gchar *get_filters(gboolean project_files)
|
|||||||
if (project_files)
|
if (project_files)
|
||||||
{
|
{
|
||||||
string = g_strconcat(_("Geany project files"), "\t", "*." GEANY_PROJECT_EXT, "\t",
|
string = g_strconcat(_("Geany project files"), "\t", "*." GEANY_PROJECT_EXT, "\t",
|
||||||
filetypes[GEANY_FILETYPES_ALL]->title, "\t",
|
filetypes[GEANY_FILETYPES_NONE]->title, "\t",
|
||||||
filetypes[GEANY_FILETYPES_ALL]->pattern[0], "\t", NULL);
|
filetypes[GEANY_FILETYPES_NONE]->pattern[0], "\t", NULL);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
string = g_strconcat(_("Executables"), "\t", "*.exe;*.bat;*.cmd", "\t",
|
string = g_strconcat(_("Executables"), "\t", "*.exe;*.bat;*.cmd", "\t",
|
||||||
filetypes[GEANY_FILETYPES_ALL]->title, "\t",
|
filetypes[GEANY_FILETYPES_NONE]->title, "\t",
|
||||||
filetypes[GEANY_FILETYPES_ALL]->pattern[0], "\t", NULL);
|
filetypes[GEANY_FILETYPES_NONE]->pattern[0], "\t", NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* replace all "\t"s by \0 */
|
/* replace all "\t"s by \0 */
|
||||||
@ -332,7 +332,7 @@ gboolean win32_show_file_dialog(gboolean file_open, const gchar *initial_dir)
|
|||||||
of.lpstrFilter = filters;
|
of.lpstrFilter = filters;
|
||||||
|
|
||||||
of.lpstrCustomFilter = NULL;
|
of.lpstrCustomFilter = NULL;
|
||||||
of.nFilterIndex = GEANY_FILETYPES_ALL + 1;
|
of.nFilterIndex = GEANY_FILETYPES_NONE + 1;
|
||||||
of.lpstrFile = fname;
|
of.lpstrFile = fname;
|
||||||
of.lpstrInitialDir = initial_dir;
|
of.lpstrInitialDir = initial_dir;
|
||||||
of.nMaxFile = 2048;
|
of.nMaxFile = 2048;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user