geany  1.38
About: Geany is a text editor (using GTK2) with basic features of an integrated development environment (syntax highlighting, code folding, symbol name auto-completion, ...). F: office T: editor programming GTK+ IDE
  Fossies Dox: geany-1.38.tar.bz2  ("unofficial" and yet experimental doxygen-generated source code documentation)  

filetypes.h
Go to the documentation of this file.
1/*
2 * filetypes.h - this file is part of Geany, a fast and lightweight IDE
3 *
4 * Copyright 2005 The Geany contributors
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License along
17 * with this program; if not, write to the Free Software Foundation, Inc.,
18 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19 */
20
21
22#ifndef GEANY_FILETYPES_H
23#define GEANY_FILETYPES_H 1
24
25#include "geany.h" /* for GEANY() macro */
26#include "tm_parser.h" /* for TMParserType */
27
28#include "gtkcompat.h" /* Needed by ScintillaWidget.h */
29#include "Scintilla.h" /* Needed by ScintillaWidget.h */
30#include "ScintillaWidget.h" /* for ScintillaObject */
31
32#include <glib.h>
33
34
35G_BEGIN_DECLS
36
37/* Forward-declared to avoid including document.h since it includes this header */
38struct GeanyDocument;
39
40/** IDs of known filetypes
41 *
42 * @ref filetypes will contain an item for each. Use GeanyData::filetypes_array to
43 * determine the known filetypes at runtime */
44typedef enum
45{
46 GEANY_FILETYPES_NONE = 0, /* first filetype is always None & must be 0 */
47
49 GEANY_FILETYPES_BASIC, /* FreeBasic */
111 /* ^ append items here */
112 GEANY_MAX_BUILT_IN_FILETYPES /* Don't use this, use filetypes_array->len instead */
115
116#ifndef GEANY_DISABLE_DEPRECATED
117/* compat define - should be removed in the future */
119#endif /* GEANY_DISABLE_DEPRECATED */
120
121/** @gironly
122 * Filetype categories
123 *
124 * These are used to provide submenus for each category in the GUI */
125typedef enum
126{
135
136
137/* Safe wrapper to get the id field of a possibly NULL filetype pointer.
138 * This shouldn't be necessary since GeanyDocument::file_type is always non-NULL. */
139#define FILETYPE_ID(filetype_ptr) \
140 (((filetype_ptr) != NULL) ? (filetype_ptr)->id : GEANY_FILETYPES_NONE)
141
142/** Represents a filetype. */
143typedef struct GeanyFiletype
144{
145 GeanyFiletypeID id; /**< Index in @ref filetypes. */
146 /* Represents the TMParserType of tagmanager (see the table
147 * in src/tagmanager/tm_parser.h). */
149 /** Untranslated short name, such as "C", "None".
150 * Must not be translated as it's used for hash table lookups - use
151 * filetypes_get_display_name() instead. */
152 gchar *name;
153 /** Shown in the file open dialog, such as "C source file". */
154 gchar *title;
155 gchar *extension; /**< Default file extension for new files, or @c NULL. */
156 gchar **pattern; /**< Array of filename-matching wildcard strings. */
164 gchar *mime_type;
165 GIcon *icon;
166 gchar *comment_single; /* single-line comment */
167 /* filetype indent settings, -1 if not set */
170
171 struct GeanyFiletypePrivate *priv; /* must be last, append fields before this item */
172}
174
175/** Wraps @ref GeanyData::filetypes_array so it can be used with C array syntax.
176 * Example: filetypes[GEANY_FILETYPES_C]->name = ...;
177 * @see filetypes_index(). */
178#define filetypes ((GeanyFiletype **)GEANY(filetypes_array)->pdata)
179
180
181GeanyFiletype *filetypes_detect_from_file(const gchar *utf8_filename);
182
184
186
188
189const GSList *filetypes_get_sorted_by_name(void);
190
191#define GEANY_TYPE_FILETYPE (filetype_get_type())
192
193GType filetype_get_type (void);
194
195#ifdef GEANY_PRIVATE
196
197extern GPtrArray *filetypes_array;
198
199extern GSList *filetypes_by_title;
200
201
202void filetypes_init(void);
203
204void filetypes_init_types(void);
205
207
208void filetypes_reload(void);
209
210
212
213GeanyFiletype *filetypes_detect_from_extension(const gchar *utf8_filename);
214
215void filetypes_free_types(void);
216
217void filetypes_load_config(guint ft_id, gboolean reload);
218
220
222
223GtkFileFilter *filetypes_create_file_filter(const GeanyFiletype *ft);
224
225GtkFileFilter *filetypes_create_file_filter_all_source(void);
226
227gboolean filetype_has_tags(GeanyFiletype *ft);
228
229gboolean filetypes_parse_error_message(GeanyFiletype *ft, const gchar *message,
230 gchar **filename, gint *line);
231
232gboolean filetype_get_comment_open_close(const GeanyFiletype *ft, gboolean single_first,
233 const gchar **co, const gchar **cc);
234
235#endif /* GEANY_PRIVATE */
236
237G_END_DECLS
238
239#endif /* GEANY_FILETYPES_H */
Interface to the edit control.
const gchar * name
Definition: document.c:3219
GeanyFiletype * filetypes_detect_from_file(const gchar *utf8_filename)
Detects filetype based on a shebang line in the file or the filename extension.
Definition: filetypes.c:759
const GSList * filetypes_get_sorted_by_name(void)
Gets a list of filetype pointers sorted by name.
Definition: filetypes.c:234
GeanyFiletypeID
IDs of known filetypes.
Definition: filetypes.h:45
@ GEANY_FILETYPES_BIBTEX
Definition: filetypes.h:108
@ GEANY_FILETYPES_MATLAB
Definition: filetypes.h:50
@ GEANY_FILETYPES_JAVA
Definition: filetypes.h:65
@ GEANY_FILETYPES_HAXE
Definition: filetypes.h:79
@ GEANY_FILETYPES_VERILOG
Definition: filetypes.h:94
@ GEANY_FILETYPES_PO
Definition: filetypes.h:58
@ GEANY_FILETYPES_R
Definition: filetypes.h:68
@ GEANY_FILETYPES_CS
Definition: filetypes.h:72
@ GEANY_FILETYPES_CPP
Definition: filetypes.h:80
@ GEANY_FILETYPES_PHP
Definition: filetypes.h:48
@ GEANY_FILETYPES_FORTH
Definition: filetypes.h:95
@ GEANY_FILETYPES_ADA
Definition: filetypes.h:89
@ GEANY_FILETYPES_SH
Definition: filetypes.h:81
@ GEANY_FILETYPES_NONE
Definition: filetypes.h:46
@ GEANY_FILETYPES_HASKELL
Definition: filetypes.h:64
@ GEANY_FILETYPES_CMAKE
Definition: filetypes.h:90
@ GEANY_FILETYPES_PYTHON
Definition: filetypes.h:71
@ GEANY_FILETYPES_SMALLTALK
Definition: filetypes.h:109
@ GEANY_FILETYPES_SQL
Definition: filetypes.h:83
@ GEANY_FILETYPES_DIFF
Definition: filetypes.h:69
@ GEANY_FILETYPES_AS
Definition: filetypes.h:67
@ GEANY_FILETYPES_TCL
Definition: filetypes.h:60
@ GEANY_FILETYPES_PASCAL
Definition: filetypes.h:75
@ GEANY_FILETYPES_F77
Definition: filetypes.h:84
@ GEANY_FILETYPES_D
Definition: filetypes.h:86
@ GEANY_FILETYPES_VALA
Definition: filetypes.h:74
@ GEANY_FILETYPES_COFFEESCRIPT
Definition: filetypes.h:105
@ GEANY_FILETYPES_ABAQUS
Definition: filetypes.h:101
@ GEANY_FILETYPES_JULIA
Definition: filetypes.h:110
@ GEANY_FILETYPES_ABC
Definition: filetypes.h:93
@ GEANY_FILETYPES_NSIS
Definition: filetypes.h:56
@ GEANY_FILETYPES_CAML
Definition: filetypes.h:66
@ GEANY_FILETYPES_ASCIIDOC
Definition: filetypes.h:100
@ GEANY_FILETYPES_ERLANG
Definition: filetypes.h:97
@ GEANY_FILETYPES_POWERSHELL
Definition: filetypes.h:103
@ GEANY_FILETYPES_C
Definition: filetypes.h:55
@ GEANY_MAX_BUILT_IN_FILETYPES
Definition: filetypes.h:112
@ GEANY_FILETYPES_XML
Definition: filetypes.h:61
@ GEANY_FILETYPES_CONF
Definition: filetypes.h:78
@ GEANY_FILETYPES_DOCBOOK
Definition: filetypes.h:85
@ GEANY_FILETYPES_RUST
Definition: filetypes.h:104
@ GEANY_FILETYPES_ZEPHIR
Definition: filetypes.h:107
@ GEANY_FILETYPES_LATEX
Definition: filetypes.h:76
@ GEANY_FILETYPES_TXT2TAGS
Definition: filetypes.h:92
@ GEANY_FILETYPES_MARKDOWN
Definition: filetypes.h:91
@ GEANY_FILETYPES_GLSL
Definition: filetypes.h:57
@ GEANY_FILETYPES_FERITE
Definition: filetypes.h:53
@ GEANY_FILETYPES_GO
Definition: filetypes.h:106
@ GEANY_FILETYPES_JS
Definition: filetypes.h:87
@ GEANY_FILETYPES_HTML
Definition: filetypes.h:70
@ GEANY_FILETYPES_REST
Definition: filetypes.h:63
@ GEANY_FILETYPES_PERL
Definition: filetypes.h:73
@ GEANY_FILETYPES_FORTRAN
Definition: filetypes.h:82
@ GEANY_FILETYPES_YAML
Definition: filetypes.h:54
@ GEANY_FILETYPES_COBOL
Definition: filetypes.h:98
@ GEANY_FILETYPES_CSS
Definition: filetypes.h:62
@ GEANY_FILETYPES_RUBY
Definition: filetypes.h:51
@ GEANY_FILETYPES_ASM
Definition: filetypes.h:77
@ GEANY_FILETYPES_LISP
Definition: filetypes.h:96
@ GEANY_FILETYPES_OBJECTIVEC
Definition: filetypes.h:99
@ GEANY_FILETYPES_MAKE
Definition: filetypes.h:59
@ GEANY_FILETYPES_VHDL
Definition: filetypes.h:88
@ GEANY_FILETYPES_LUA
Definition: filetypes.h:52
@ GEANY_FILETYPES_BATCH
Definition: filetypes.h:102
@ GEANY_FILETYPES_BASIC
Definition: filetypes.h:49
GeanyFiletype * filetypes_index(gint idx)
Accessor function for GeanyData::filetypes_array items.
Definition: filetypes.c:1489
GeanyFiletypeGroupID
Definition: filetypes.h:126
@ GEANY_FILETYPE_GROUP_MISC
Definition: filetypes.h:131
@ GEANY_FILETYPE_GROUP_COUNT
Definition: filetypes.h:132
@ GEANY_FILETYPE_GROUP_MARKUP
Definition: filetypes.h:130
@ GEANY_FILETYPE_GROUP_SCRIPT
Definition: filetypes.h:129
@ GEANY_FILETYPE_GROUP_NONE
Definition: filetypes.h:127
@ GEANY_FILETYPE_GROUP_COMPILED
Definition: filetypes.h:128
struct GeanyFiletype GeanyFiletype
Represents a filetype.
const gchar * filetypes_get_display_name(GeanyFiletype *ft)
Gets ft->name or a translation for filetype None.
Definition: filetypes.c:1527
GType filetype_get_type(void)
GeanyFiletype * filetypes_lookup_by_name(const gchar *name)
Finds a filetype pointer from its name field.
Definition: filetypes.c:1242
#define GEANY_DEPRECATED_FOR(x)
Definition: geany.h:63
vString * line
Definition: geany_cobol.c:133
GtkWidget * reload
Definition: sidebar.c:58
void filetypes_reload(void)
Definition: filetypes.c:1495
void filetypes_select_radio_item(const GeanyFiletype *ft)
Definition: filetypes.c:784
gboolean filetypes_parse_error_message(GeanyFiletype *ft, const gchar *message, gchar **filename, gint *line)
Definition: filetypes.c:1272
void filetypes_init_types(void)
Definition: filetypes.c:314
void filetypes_reload_extensions(void)
Definition: filetypes.c:1464
void filetypes_init(void)
Definition: filetypes.c:461
GSList * filetypes_by_title
Definition: filetypes.c:59
void filetypes_save_commands(GeanyFiletype *ft)
Definition: filetypes.c:1164
GeanyFiletype * filetypes_detect_from_extension(const gchar *utf8_filename)
Definition: filetypes.c:517
GPtrArray * filetypes_array
Definition: filetypes.c:57
GtkFileFilter * filetypes_create_file_filter(const GeanyFiletype *ft)
Definition: filetypes.c:1204
void filetypes_free_types(void)
Definition: filetypes.c:854
GtkFileFilter * filetypes_create_file_filter_all_source(void)
Definition: filetypes.c:1182
gboolean filetype_has_tags(GeanyFiletype *ft)
Definition: filetypes.c:1227
void filetypes_load_config(guint ft_id, gboolean reload)
Definition: filetypes.c:1089
gboolean filetype_get_comment_open_close(const GeanyFiletype *ft, gboolean single_first, const gchar **co, const gchar **cc)
Definition: filetypes.c:1536
GeanyFiletype * filetypes_detect_from_document(GeanyDocument *doc)
Definition: filetypes.c:723
const gchar filename[]
Definition: stash-example.c:4
Structure for representing an open tab with all its properties.
Definition: document.h:81
Represents a filetype.
Definition: filetypes.h:144
gchar * name
Untranslated short name, such as "C", "None".
Definition: filetypes.h:152
GIcon * icon
Definition: filetypes.h:165
GeanyFiletypeID id
Index in filetypes.
Definition: filetypes.h:145
gint indent_width
Definition: filetypes.h:169
gchar * comment_close
Definition: filetypes.h:159
TMParserType lang
Definition: filetypes.h:148
GeanyFiletypeGroupID group
Definition: filetypes.h:161
gchar * context_action_cmd
Definition: filetypes.h:157
gchar * comment_open
Definition: filetypes.h:158
gchar * error_regex_string
Definition: filetypes.h:162
gchar * mime_type
Definition: filetypes.h:164
gint indent_type
Definition: filetypes.h:168
gchar * title
Shown in the file open dialog, such as "C source file".
Definition: filetypes.h:154
struct GeanyFiletypePrivate * priv
Definition: filetypes.h:171
gchar * comment_single
Definition: filetypes.h:166
struct GeanyFiletype * lexer_filetype
Definition: filetypes.h:163
gchar * extension
Default file extension for new files, or NULL.
Definition: filetypes.h:155
gchar ** pattern
Array of filename-matching wildcard strings.
Definition: filetypes.h:156
gboolean comment_use_indent
Definition: filetypes.h:160
gint TMParserType
Definition: tm_parser.h:52