On Sun, Nov 19, 2006, Osamu Aoki wrote:
> under GTK_IM_MODULE=xim, [EMAIL PROTECTED], above program works fine just
> like any other aplications while gedit still freezes.

 Please try disabling all Gedit plugins, does it help?

 Could you please try the attached python script which uses a
 GtkSourceView widget instead of a GtkTextView one.

-- 
Loïc Minier <[EMAIL PROTECTED]>
        10 SIN
        20 GO TO ROBOT HELL             -- Temple of Robotology
#!/usr/bin/python

import sys, os, gnomevfs

import pygtk

pygtk.require("2.0")
import gtk

import gtksourceview

def load_file(buffer, uri):
    buffer.begin_not_undoable_action()
    # TODO: use g_io_channel when pygtk supports it
    try:
        txt = open(uri.path).read()
    except:
        return False
    buffer.set_text(txt)
    buffer.set_data('filename', uri.path)
    buffer.end_not_undoable_action()

    buffer.set_modified(False)
    buffer.place_cursor(buffer.get_start_iter())
    return True


def open_file(buffer, filename):
    # get the new language for the file mimetype
    manager = buffer.get_data('languages-manager')

    if os.path.isabs(filename):
        path = filename
    else:
        path = os.path.abspath(filename)
    uri = gnomevfs.URI(path)

    mime_type = gnomevfs.get_mime_type(path) # needs ASCII filename, not URI
    if mime_type:
        language = manager.get_language_from_mime_type(mime_type)
        if language:
            buffer.set_highlight(True)
            buffer.set_language(language)
        else:
            print 'No language found for mime type "%s"' % mime_type
            buffer.set_highlight(False)
    else:
        print 'Couldn\'t get mime type for file "%s"' % filename
        buffer.set_highlight(False)

    #remove_all_markers(buffer)
    load_file(buffer, uri) # TODO: check return
    return True



lm = gtksourceview.SourceLanguagesManager()
buffer = gtksourceview.SourceBuffer()
buffer.set_data('languages-manager', lm)
open_file(buffer, sys.argv[0])
view = gtksourceview.SourceView(buffer)

window = gtk.Window(gtk.WINDOW_TOPLEVEL)
window.add(view)
window.resize(400, 600)
window.show_all()
gtk.main()

Reply via email to