SF.net SVN: geany:[3305] trunk
ntrel at users.sourceforge.net
ntrel at xxxxx
Tue Dec 2 16:34:32 UTC 2008
Revision: 3305
http://geany.svn.sourceforge.net/geany/?rev=3305&view=rev
Author: ntrel
Date: 2008-12-02 16:34:32 +0000 (Tue, 02 Dec 2008)
Log Message:
-----------
Generate plugin API header geanyfunctions.h containing macros to
avoid having to type the function pointer names manually.
E.g. plugin_add_toolbar_item(...) is expanded to
p_plugin->add_toolbar_item(...).
Note: For now, building on Windows or with Waf needs genapi.py to be
run manually when adding plugin API functions.
Modified Paths:
--------------
trunk/ChangeLog
trunk/plugins/Makefile.am
trunk/src/Makefile.am
Added Paths:
-----------
trunk/plugins/geanyfunctions.h
trunk/plugins/genapi.py
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2008-12-02 13:38:55 UTC (rev 3304)
+++ trunk/ChangeLog 2008-12-02 16:34:32 UTC (rev 3305)
@@ -1,3 +1,15 @@
+2008-12-02 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
+
+ * src/Makefile.am, plugins/geanyfunctions.h, plugins/Makefile.am,
+ plugins/genapi.py:
+ Generate plugin API header geanyfunctions.h containing macros to
+ avoid having to type the function pointer names manually.
+ E.g. plugin_add_toolbar_item(...) is expanded to
+ p_plugin->add_toolbar_item(...).
+ Note: For now, building on Windows or with Waf needs genapi.py to be
+ run manually when adding plugin API functions.
+
+
2008-12-01 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
* src/keyfile.c, src/vte.c, doc/geany.txt, doc/geany.html:
@@ -2,3 +14,4 @@
Make VTE emulation pref hidden, because libvte only comes with an
- xterm termcaps file and the GUI pref can be confusing.
+ xterm termcaps file and the GUI pref can be confusing (closes
+ #2340966).
* src/stash.c, src/keyfile.c:
Modified: trunk/plugins/Makefile.am
===================================================================
--- trunk/plugins/Makefile.am 2008-12-02 13:38:55 UTC (rev 3304)
+++ trunk/plugins/Makefile.am 2008-12-02 16:34:32 UTC (rev 3305)
@@ -2,12 +2,16 @@
EXTRA_DIST = \
makefile.win32 \
- pluginmacros.h
+ pluginmacros.h \
+ geanyfunctions.h \
+ genapi.py
plugindir = $(libdir)/geany
plugins_includedir = $(includedir)/geany/
-plugins_include_HEADERS = pluginmacros.h
+plugins_include_HEADERS = \
+ pluginmacros.h \
+ geanyfunctions.h
demoplugin_la_LDFLAGS = -module -avoid-version
classbuilder_la_LDFLAGS = -module -avoid-version
Added: trunk/plugins/geanyfunctions.h
===================================================================
--- trunk/plugins/geanyfunctions.h (rev 0)
+++ trunk/plugins/geanyfunctions.h 2008-12-02 16:34:32 UTC (rev 3305)
@@ -0,0 +1,220 @@
+#define plugin_add_toolbar_item \
+ p_plugin->add_toolbar_item
+#define document_new_file \
+ p_document->new_file
+#define document_get_current \
+ p_document->get_current
+#define document_get_from_page \
+ p_document->get_from_page
+#define document_find_by_filename \
+ p_document->find_by_filename
+#define document_find_by_real_path \
+ p_document->find_by_real_path
+#define document_save_file \
+ p_document->save_file
+#define document_open_file \
+ p_document->open_file
+#define document_open_files \
+ p_document->open_files
+#define document_remove_page \
+ p_document->remove_page
+#define document_reload_file \
+ p_document->reload_file
+#define document_set_encoding \
+ p_document->set_encoding
+#define document_set_text_changed \
+ p_document->set_text_changed
+#define document_set_filetype \
+ p_document->set_filetype
+#define document_close \
+ p_document->close
+#define editor_get_indent_prefs \
+ p_editor->get_indent_prefs
+#define editor_create_widget \
+ p_editor->create_widget
+#define editor_indicator_set_on_range \
+ p_editor->indicator_set_on_range
+#define editor_indicator_set_on_line \
+ p_editor->indicator_set_on_line
+#define editor_indicator_clear \
+ p_editor->indicator_clear
+#define editor_set_indent_type \
+ p_editor->set_indent_type
+#define scintilla_send_message \
+ p_scintilla->send_message
+#define sci_cmd \
+ p_sci->cmd
+#define sci_start_undo_action \
+ p_sci->start_undo_action
+#define sci_end_undo_action \
+ p_sci->end_undo_action
+#define sci_set_text \
+ p_sci->set_text
+#define sci_insert_text \
+ p_sci->insert_text
+#define sci_get_text \
+ p_sci->get_text
+#define sci_get_length \
+ p_sci->get_length
+#define sci_get_current_position \
+ p_sci->get_current_position
+#define sci_set_current_position \
+ p_sci->set_current_position
+#define sci_get_col_from_position \
+ p_sci->get_col_from_position
+#define sci_get_line_from_position \
+ p_sci->get_line_from_position
+#define sci_get_position_from_line \
+ p_sci->get_position_from_line
+#define sci_replace_sel \
+ p_sci->replace_sel
+#define sci_get_selected_text \
+ p_sci->get_selected_text
+#define sci_get_selected_text_length \
+ p_sci->get_selected_text_length
+#define sci_get_selection_start \
+ p_sci->get_selection_start
+#define sci_get_selection_end \
+ p_sci->get_selection_end
+#define sci_get_selection_mode \
+ p_sci->get_selection_mode
+#define sci_set_selection_mode \
+ p_sci->set_selection_mode
+#define sci_set_selection_start \
+ p_sci->set_selection_start
+#define sci_set_selection_end \
+ p_sci->set_selection_end
+#define sci_get_text_range \
+ p_sci->get_text_range
+#define sci_get_line \
+ p_sci->get_line
+#define sci_get_line_length \
+ p_sci->get_line_length
+#define sci_get_line_count \
+ p_sci->get_line_count
+#define sci_get_line_is_visible \
+ p_sci->get_line_is_visible
+#define sci_ensure_line_is_visible \
+ p_sci->ensure_line_is_visible
+#define sci_scroll_caret \
+ p_sci->scroll_caret
+#define sci_find_matching_brace \
+ p_sci->find_matching_brace
+#define sci_get_style_at \
+ p_sci->get_style_at
+#define sci_get_char_at \
+ p_sci->get_char_at
+#define sci_get_current_line \
+ p_sci->get_current_line
+#define sci_has_selection \
+ p_sci->has_selection
+#define sci_get_tab_width \
+ p_sci->get_tab_width
+#define sci_indicator_clear \
+ p_sci->indicator_clear
+#define sci_indicator_set \
+ p_sci->indicator_set
+#define templates_get_template_fileheader \
+ p_templates->get_template_fileheader
+#define utils_str_equal \
+ p_utils->str_equal
+#define utils_string_replace_all \
+ p_utils->string_replace_all
+#define utils_get_file_list \
+ p_utils->get_file_list
+#define utils_write_file \
+ p_utils->write_file
+#define utils_get_locale_from_utf \
+ p_utils->get_locale_from_utf
+#define utils_get_utf \
+ p_utils->get_utf
+#define utils_remove_ext_from_filename \
+ p_utils->remove_ext_from_filename
+#define utils_mkdir \
+ p_utils->mkdir
+#define utils_get_setting_boolean \
+ p_utils->get_setting_boolean
+#define utils_get_setting_integer \
+ p_utils->get_setting_integer
+#define utils_get_setting_string \
+ p_utils->get_setting_string
+#define utils_spawn_sync \
+ p_utils->spawn_sync
+#define utils_spawn_async \
+ p_utils->spawn_async
+#define utils_str_casecmp \
+ p_utils->str_casecmp
+#define utils_get_date_time \
+ p_utils->get_date_time
+#define ui_dialog_vbox_new \
+ p_ui->dialog_vbox_new
+#define ui_frame_new_with_alignment \
+ p_ui->frame_new_with_alignment
+#define ui_set_statusbar \
+ p_ui->set_statusbar
+#define ui_table_add_row \
+ p_ui->table_add_row
+#define ui_path_box_new \
+ p_ui->path_box_new
+#define ui_button_new_with_image \
+ p_ui->button_new_with_image
+#define ui_add_document_sensitive \
+ p_ui->add_document_sensitive
+#define ui_widget_set_tooltip_text \
+ p_ui->widget_set_tooltip_text
+#define ui_image_menu_item_new \
+ p_ui->image_menu_item_new
+#define dialogs_show_question \
+ p_dialogs->show_question
+#define dialogs_show_msgbox \
+ p_dialogs->show_msgbox
+#define dialogs_show_save_as \
+ p_dialogs->show_save_as
+#define lookup_widget \
+ p_lookup->widget
+#define msgwin_status_add \
+ p_msgwin->status_add
+#define msgwin_compiler_add_fmt \
+ p_msgwin->compiler_add_fmt
+#define msgwin_msg_add_fmt \
+ p_msgwin->msg_add_fmt
+#define msgwin_clear_tab \
+ p_msgwin->clear_tab
+#define msgwin_switch_tab \
+ p_msgwin->switch_tab
+#define encodings_convert_to_utf \
+ p_encodings->convert_to_utf
+#define encodings_convert_to_utf \
+ p_encodings->convert_to_utf
+#define encodings_get_charset_from_index \
+ p_encodings->get_charset_from_index
+#define keybindings_send_command \
+ p_keybindings->send_command
+#define keybindings_set_item \
+ p_keybindings->set_item
+#define tm_get_real_path \
+ p_tm->get_real_path
+#define tm_source_file_new \
+ p_tm->source_file_new
+#define tm_workspace_add_object \
+ p_tm->workspace_add_object
+#define tm_source_file_update \
+ p_tm->source_file_update
+#define tm_work_object_free \
+ p_tm->work_object_free
+#define tm_workspace_remove_object \
+ p_tm->workspace_remove_object
+#define search_show_find_in_files_dialog \
+ p_search->show_find_in_files_dialog
+#define highlighting_get_style \
+ p_highlighting->get_style
+#define filetypes_detect_from_file \
+ p_filetypes->detect_from_file
+#define filetypes_lookup_by_name \
+ p_filetypes->lookup_by_name
+#define navqueue_goto_line \
+ p_navqueue->goto_line
+#define main_reload_configuration \
+ p_main->reload_configuration
+#define main_locale_init \
+ p_main->locale_init
Property changes on: trunk/plugins/geanyfunctions.h
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/plugins/genapi.py
===================================================================
--- trunk/plugins/genapi.py (rev 0)
+++ trunk/plugins/genapi.py 2008-12-02 16:34:32 UTC (rev 3305)
@@ -0,0 +1,71 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+#
+# genapi.py - this file is part of Geany, a fast and lightweight IDE
+#
+# Copyright 2008 Nick Treleaven <nick.treleaven<at>btinternet.com>
+# Copyright 2008 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# $(Id)
+
+r"""
+Creates macros for each plugin API function pointer, e.g.:
+
+#define plugin_add_toolbar_item \
+ p_plugin->add_toolbar_item
+"""
+
+
+import re, sys
+
+def get_function_names():
+ names = []
+ try:
+ f = open('../src/plugins.c')
+ while 1:
+ l = f.readline()
+ if l == "":
+ break;
+ m = re.match("^\t&([a-z_]+)", l)
+ if m:
+ s = m.group(1)
+ if not s.endswith('_funcs'):
+ names.append(s)
+ f.close
+ except:
+ pass
+ return names
+
+def get_api_tuple(str):
+ m = re.match("^([a-z]+)_([a-z_]+)$", str)
+ return 'p_' + m.group(1), m.group(2)
+
+
+if __name__ == "__main__":
+ outfile = 'geanyfunctions.h'
+
+ fnames = get_function_names()
+ if not fnames:
+ sys.exit("No function names read!")
+
+ f = open(outfile, 'w')
+ for fname in fnames:
+ ptr, name = get_api_tuple(fname)
+ print >>f, '#define ' + fname + ' \\\n\t' + ptr + '->' + name
+ f.close
+
+ print 'Generated ' + outfile
Property changes on: trunk/plugins/genapi.py
___________________________________________________________________
Added: svn:executable
+ *
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Modified: trunk/src/Makefile.am
===================================================================
--- trunk/src/Makefile.am 2008-12-02 13:38:55 UTC (rev 3304)
+++ trunk/src/Makefile.am 2008-12-02 16:34:32 UTC (rev 3305)
@@ -73,6 +73,14 @@
# tell automake we have a C++ file so it uses the C++ linker we need for Scintilla
nodist_EXTRA_geany_SOURCES = dummy.cxx
+
+# generate geanyfunctions.h here so we can read geany_include_HEADERS
+../plugins/geanyfunctions.h: $(geany_include_HEADERS) ../plugins/genapi.py
+ cd ../plugins && python genapi.py || echo -n
+
+all: ../plugins/geanyfunctions.h
+
+
if MINGW
# build Geany for Windows on non-Windows systems (cross-compile)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Commits
mailing list