From cd8b75e8d2fd842e022352af0c01954985a924fc Mon Sep 17 00:00:00 2001 From: Stefano Zacchiroli Date: Sat, 11 Jun 2005 10:23:27 +0000 Subject: [PATCH] fixed segfault issue with matching bracket search --- helm/DEVEL/lablgtksourceview/ACKNOWLEDGEMENTS | 0 .../lablgtksourceview/ml_gtk_sourceview.c | 2 +- helm/DEVEL/lablgtksourceview/test/test.lang | 128 ++++++++++++++++++ helm/DEVEL/lablgtksourceview/test/test.ml | 51 ++++--- 4 files changed, 160 insertions(+), 21 deletions(-) create mode 100644 helm/DEVEL/lablgtksourceview/ACKNOWLEDGEMENTS create mode 100644 helm/DEVEL/lablgtksourceview/test/test.lang diff --git a/helm/DEVEL/lablgtksourceview/ACKNOWLEDGEMENTS b/helm/DEVEL/lablgtksourceview/ACKNOWLEDGEMENTS new file mode 100644 index 000000000..e69de29bb diff --git a/helm/DEVEL/lablgtksourceview/ml_gtk_sourceview.c b/helm/DEVEL/lablgtksourceview/ml_gtk_sourceview.c index 5d813d446..965618d26 100644 --- a/helm/DEVEL/lablgtksourceview/ml_gtk_sourceview.c +++ b/helm/DEVEL/lablgtksourceview/ml_gtk_sourceview.c @@ -90,7 +90,7 @@ ml_gtk_source_languages_manager_set_lang_files_dirs(GObject *obj, value list) #define GtkSourceTagTable_val(val) check_cast(GTK_SOURCE_TAG_TABLE,val) #define GtkSourceBuffer_val(val) check_cast(GTK_SOURCE_BUFFER,val) #define GtkSourceView_val(val) check_cast(GTK_SOURCE_VIEW,val) -#define GtkTextIter_val(val) ((GtkTextIter*)Data_custom_val(val)) +#define GtkTextIter_val(val) ((GtkTextIter*)MLPointer_val(val)) #define Val_option_GtkAny(v) Val_option(v,Val_GtkAny) #define string_list_of_GSList(l) Val_GSList(l, (value_in) Val_string) /* #define GSList_of_string_list(l) GSList_val(l, String_val) */ diff --git a/helm/DEVEL/lablgtksourceview/test/test.lang b/helm/DEVEL/lablgtksourceview/test/test.lang new file mode 100644 index 000000000..0478120ad --- /dev/null +++ b/helm/DEVEL/lablgtksourceview/test/test.lang @@ -0,0 +1,128 @@ + + + + + \ + + + // + + + + /\* + \*/ + + + + ^[ \t]*#[ \t]*if[ \t]*0 + [ \t]*#[ \t]*(endif|else) + + + + " + " + + + + ^#[ \t]*(include|pragma) + \n + + + + asm + break + case + continue + default + do + else + for + fortran + goto + if + return + sizeof + switch + while + + + + _Bool + _Complex + _Imaginary + auto + char + const + double + enum + extern + float + int + inline + long + register + restrict + short + signed + static + struct + typedef + union + unsigned + void + volatile + + + + ' + ' + + + + \b([1-9][0-9]*|0)([Uu]([Ll]|LL|ll)?|([Ll]|LL|ll)[Uu]?)?\b + + + + \b([0-9]+[Ee][-]?[0-9]+|([0-9]*\.[0-9]+|[0-9]+\.)([Ee][-]?[0-9]+)?)[fFlL]? + + + + \b0[0-7]+([Uu]([Ll]|LL|ll)?|([Ll]|LL|ll)[Uu]?)?\b + + + + \b0[xX][0-9a-fA-F]+([Uu]([Ll]|LL|ll)?|([Ll]|LL|ll)[Uu]?)?\b + + + + NULL + TRUE + FALSE + MAX + MIN + __LINE__ + __DATA__ + __FILE__ + __func__ + __TIME__ + __STDC__ + + + + if + ifdef + ifndef + else + elif + define + endif + undef + error + pragma + line + + + diff --git a/helm/DEVEL/lablgtksourceview/test/test.ml b/helm/DEVEL/lablgtksourceview/test/test.ml index ed9622af1..d0e140249 100644 --- a/helm/DEVEL/lablgtksourceview/test/test.ml +++ b/helm/DEVEL/lablgtksourceview/test/test.ml @@ -1,26 +1,22 @@ -(* Copyright (C) 2005: - * Claudio Sacerdoti Coen , - * Stefano Zacchiroli +(* + * lablgtksourceview, OCaml binding for the GtkSourceView text widget * - * This file is part of lablgtksourceview, the OCaml binding for the - * GtkSourceView widget. + * Copyright (C) 2005 Stefano Zacchiroli * - * lablgtksourceview 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 + * This library is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of the * License, or (at your option) any later version. - * - * lablgtksourceview is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of + * + * This library 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 lablgtksourceview; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - * 02111-1307, USA. + * Lesser General Public License for more details. * - * For details, send a mail to the authors. + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + * USA *) open Printf @@ -28,6 +24,7 @@ open Printf let lang_mime_type = "text/x-c" let lang_file = "test.lang" let use_mime_type = false +let font_name = "Monospace 10" let print_lang lang = prerr_endline (sprintf "language: %s" lang#get_name) @@ -39,7 +36,10 @@ let print_lang_dirs languages_manager = languages_manager#lang_files_dirs let win = GWindow.window ~title:"LablGtkSourceView test" () -let scrolled_win = GBin.scrolled_window ~packing:win#add () +let vbox = GPack.vbox ~packing:win#add () +let hbox = GPack.hbox ~packing:vbox#add () +let bracket_button = GButton.button ~label:"( ... )" ~packing:hbox#add () +let scrolled_win = GBin.scrolled_window ~packing:vbox#add () let source_view = GSourceView.source_view ~auto_indent:true @@ -52,6 +52,7 @@ let source_view = (* let languages_manager = GSourceView.source_languages_manager ~lang_files_dirs:["/etc"] () *) let languages_manager = GSourceView.source_languages_manager () + let lang = if use_mime_type then match languages_manager#get_language_from_mime_type lang_mime_type with @@ -63,6 +64,15 @@ let lang = with | None -> failwith (sprintf "can't load %s" lang_file) | Some lang -> lang + +let matching_bracket () = + let iter = source_view#source_buffer#get_iter_at_mark `INSERT in + match GSourceView.find_matching_bracket iter with + | None -> prerr_endline "no matching bracket" + | Some iter -> + source_view#source_buffer#place_cursor iter; + source_view#misc#grab_focus () + let _ = let text = let ic = open_in "test.txt" in @@ -73,13 +83,14 @@ let _ = buf in win#set_allow_shrink true; - source_view#misc#modify_font_by_name "Monospace 10"; + source_view#misc#modify_font_by_name font_name; print_lang_dirs languages_manager; print_lang lang; source_view#source_buffer#set_language lang; source_view#source_buffer#set_highlight true; source_view#source_buffer#set_text text; ignore (win#connect#destroy (fun _ -> GMain.quit ())); + ignore (bracket_button#connect#clicked matching_bracket); (* ignore (source_view#connect#move_cursor (fun _ _ ~extend -> prerr_endline "move_cursor")); ignore (source_view#connect#undo (fun _ -> prerr_endline "undo")); *) -- 2.39.2