如何将 Go 添加到 gitg 的可见源列表?
Posted
技术标签:
【中文标题】如何将 Go 添加到 gitg 的可见源列表?【英文标题】:How do I add the Go to gitg's list of viewable sources? 【发布时间】:2011-02-14 07:56:57 【问题描述】:我刚刚开始第一次“git”,并从 Ubuntu 10.4 / AMD64 发行版安装了 git 和 gitg(即,可能不是“最新”版本,但不是古老的)。
我正在尝试查看我通过 gitg 提交的 go 代码,并在“树选项卡”中显示:
Cannot display file content as text.
但是,“详细信息选项卡”可以很好地显示同一文件的差异。
我知道 gitg 的“树形选项卡”正在工作,因为我可以在 *.c
/ *.html
/ *.txt
等上使用树形视图。
<question>
有没有办法让 gitg 理解“*.go”只是文本? </question>
更多上下文:
安装的 gitg 版本是 0.0.5 - 即最新版本 - 0.0.6 - 我现在正在寻找的源代码。我确实有一个工作的/usr/share/gtksourceview-2.0/language-specs/go.lang
。
它在 gedit 中作为荧光笔工作得很好。
看来 gitg 可能需要可显示文件的 mime 类型为“text/plain
”,所以我将其添加到 go.lang
没有快乐。 gitg 在*.go
上仍然失败。
我相对确定修复很简单,只是不知道在哪里看。
【问题讨论】:
【参考方案1】:当谈到 gitg alt text http://trac.novowork.com/gitg/chrome/site/logo.png(针对 gtk+/GNOME 的 git 存储库查看器)时,look at its code (also here) 可能会很有趣:
特别是,gitg-commit-view.c
显示该消息,因为它的函数 gitg_utils_can_display_content_type()
返回用于文本显示目的的未知类型。
gboolean
gitg_utils_can_display_content_type(gchar const *content_type)
return g_content_type_is_a(content_type, "text/plain") ||
g_content_type_equals(content_type, "application/octet-stream");
因此,您确实需要将 go 文件类型声明为 text/plain
(在 gitg 中,而不是“to go.lang”),它应该可以工作。
其实gitg中没有声明:g_content_type_is_a
是glib\gio\gcontenttype.c
(project glib)的函数,它调用get_registry_classes_key()
,读取注册表(HKEY_CLASSES_ROOT
对于 Windows,mime type registered for Unix)。
所以如果你注册了 go 文件,它应该可以工作:
xdg-icon-resource install --context mimetypes --size 48 go-type.png plain/text
要注册的 xml 文件(由OP Hotei 找到,干得好!)
<?xml version="1.0" encoding="utf-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
<mime-type type="application/x-extension-go">
<sub-class-of type="text/plain"/>
<comment>go for files</comment>
<glob pattern="*.go"/>
</mime-type>
</mime-info>
xdg-mime install go-mime.xml
update-desktop-database
【讨论】:
VonC,看到那条线。我假设 gitg 在决定哪些文件是可显示的时是“表驱动的”,并且它会询问 gtk 的答案。然后 Gtk 将在 sourceview-2.0 目录中查找并检查 *.lang 是否匹配。我以前没有使用过 GTK,所以这是一个猜测,但我相对确定它是正确的。我寻找这里提到的函数...返回 g_content_type_is_a(content_type, "text/plain") 但 gitg/gitg 目录中的 grep 返回 nil。这让我相信这个函数是 gtk 包的一部分,而不是 gitg。仍在搜索... @Hotei:同样的 grep,同样的结果! @Hotei:右:部分 glib (gtk.org/download.html),位于 gio/gcontenttype.c。立即查找。 VonC,运行 xdg-mime install go-mime.xml 没有错误。再次测试 gitg ... 还没有。我觉得我应该使用“update-mime-database /usr/share/mime”来更新 mime 数据库,但是在这样做之后,我收到了一些错误消息,但仍然没有乐趣。 /usr/share/mime/text 目录中没有 x-go.xml,这告诉我安装/更新“不完整”。所以目前我仍然卡住了。 @Hotei:该死,我以为我已经搞定了 ;) 你在xdg-mime install
命令之后尝试了update-desktop-database
吗?并尝试在您的命令周围使用简单的引号:有关一些示例,请参见 gitorious.com/listaller/listaller/commit/…。以上是关于如何将 Go 添加到 gitg 的可见源列表?的主要内容,如果未能解决你的问题,请参考以下文章
在键盘打开时将项目添加到 RecyclerView 时向下滚动
当列表视图的项目在颤动的视口中可见时,如何更改项目颜色并执行一些操作?