[geany/geany] d29b59: Read filetype's mime type from the configuration files

Colomban Wendling git-noreply at xxxxx
Mon Apr 14 18:42:05 UTC 2014


Branch:      refs/heads/master
Author:      Colomban Wendling <ban at herbesfolles.org>
Committer:   Colomban Wendling <ban at herbesfolles.org>
Date:        Tue, 15 Oct 2013 01:06:01 UTC
Commit:      d29b5912fff974b79ef767e7afc75d7ffbc64192
             https://github.com/geany/geany/commit/d29b5912fff974b79ef767e7afc75d7ffbc64192

Log Message:
-----------
Read filetype's mime type from the configuration files

This allows custom filetypes to define a mime type, hence the icon
displayed for this filetype;  as well as moving ones for built-in
filetypes out of the code to the configuration files.


Modified Paths:
--------------
    data/filetypes.Go.conf
    data/filetypes.Graphviz.conf
    data/filetypes.Scala.conf
    data/filetypes.abc
    data/filetypes.actionscript
    data/filetypes.ada
    data/filetypes.c
    data/filetypes.caml
    data/filetypes.cmake
    data/filetypes.cobol
    data/filetypes.cpp
    data/filetypes.cs
    data/filetypes.css
    data/filetypes.d
    data/filetypes.diff
    data/filetypes.docbook
    data/filetypes.erlang
    data/filetypes.f77
    data/filetypes.fortran
    data/filetypes.haskell
    data/filetypes.html
    data/filetypes.java
    data/filetypes.javascript
    data/filetypes.latex
    data/filetypes.lua
    data/filetypes.makefile
    data/filetypes.markdown
    data/filetypes.matlab
    data/filetypes.objectivec
    data/filetypes.pascal
    data/filetypes.perl
    data/filetypes.php
    data/filetypes.po
    data/filetypes.python
    data/filetypes.restructuredtext
    data/filetypes.ruby
    data/filetypes.sh
    data/filetypes.sql
    data/filetypes.tcl
    data/filetypes.txt2tags
    data/filetypes.vala
    data/filetypes.verilog
    data/filetypes.vhdl
    data/filetypes.xml
    data/filetypes.yaml
    doc/geany.txt
    src/filetypes.c
    src/filetypes.h
    src/sidebar.c
    src/ui_utils.c

Modified: data/filetypes.Go.conf
6 files changed, 5 insertions(+), 1 deletions(-)
===================================================================
@@ -13,9 +13,13 @@ docComment=a addindex addtogroup anchor arg attention author authors b brief bug
 [lexer_properties=C]
 
 [settings]
+lexer_filetype=C
+
 # default extension used when saving files
 extension=go
-lexer_filetype=C
+
+# MIME type
+mime_type=text/x-go
 
 # the following characters are these which a "word" can contains, see documentation
 #wordchars=_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789


Modified: data/filetypes.Graphviz.conf
3 files changed, 3 insertions(+), 0 deletions(-)
===================================================================
@@ -18,6 +18,9 @@ lexer_filetype=C
 # default extension used when saving files
 extension=gv
 
+# MIME type
+mime_type=text/vnd.graphviz
+
 # the following characters are these which a "word" can contains, see documentation
 #wordchars=_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
 


Modified: data/filetypes.Scala.conf
3 files changed, 3 insertions(+), 0 deletions(-)
===================================================================
@@ -18,6 +18,9 @@ lexer_filetype=C
 # default extension used when saving files
 extension=scala
 
+# MIME type
+mime_type=text/x-scala
+
 # the following characters are these which a "word" can contains, see documentation
 #wordchars=_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
 


Modified: data/filetypes.abc
2 files changed, 2 insertions(+), 0 deletions(-)
===================================================================
@@ -6,4 +6,6 @@
 # default extension used when saving files
 extension=abc
 
+# MIME type
+mime_type=text/vnd.abc
 


Modified: data/filetypes.actionscript
3 files changed, 3 insertions(+), 0 deletions(-)
===================================================================
@@ -11,6 +11,9 @@ classes=ArgumentError Array Boolean Class Date DefinitionError Error EvalError F
 # default extension used when saving files
 extension=as
 
+# MIME type
+mime_type=application/ecmascript
+
 # the following characters are these which a "word" can contains, see documentation
 #wordchars=_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
 


Modified: data/filetypes.ada
3 files changed, 3 insertions(+), 0 deletions(-)
===================================================================
@@ -23,6 +23,9 @@ primary=abort abs abstract accept access aliased all and array at begin body cas
 # default extension used when saving files
 extension=adb
 
+# MIME type
+mime_type=text/x-adasrc
+
 # the following characters are these which a "word" can contains, see documentation
 #wordchars=_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
 


Modified: data/filetypes.c
3 files changed, 3 insertions(+), 0 deletions(-)
===================================================================
@@ -47,6 +47,9 @@ preprocessor.end.$(file.patterns.cpp)=endif
 # default extension used when saving files
 extension=c
 
+# MIME type
+mime_type=text/x-csrc
+
 # the following characters are these which a "word" can contains, see documentation
 #wordchars=_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
 


Modified: data/filetypes.caml
3 files changed, 3 insertions(+), 0 deletions(-)
===================================================================
@@ -28,6 +28,9 @@ keywords_optional=option Some None ignore ref
 # default extension used when saving files
 extension=ml
 
+# MIME type
+mime_type=text/x-ocaml
+
 # the following characters are these which a "word" can contains, see documentation
 #wordchars=_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
 


Modified: data/filetypes.cmake
3 files changed, 3 insertions(+), 0 deletions(-)
===================================================================
@@ -28,6 +28,9 @@ userdefined=
 # default extension used when saving files
 extension=cmake
 
+# MIME type
+mime_type=text/x-cmake
+
 # the following characters are these which a "word" can contains, see documentation
 #wordchars=_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
 


Modified: data/filetypes.cobol
3 files changed, 3 insertions(+), 0 deletions(-)
===================================================================
@@ -22,6 +22,9 @@ keywords=accept access add address advancing after alphabet alphabetic alphabeti
 # default extension used when saving files
 extension=cob
 
+# MIME type
+mime_type=text/x-cobol
+
 # the following characters are these which a "word" can contains, see documentation
 #wordchars=_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
 


Modified: data/filetypes.cpp
3 files changed, 3 insertions(+), 0 deletions(-)
===================================================================
@@ -22,6 +22,9 @@ lexer_filetype=C
 # default extension used when saving files
 extension=cpp
 
+# MIME type
+mime_type=text/x-c++src
+
 # the following characters are these which a "word" can contains, see documentation
 #wordchars=_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
 


Modified: data/filetypes.cs
3 files changed, 3 insertions(+), 0 deletions(-)
===================================================================
@@ -22,6 +22,9 @@
 # default extension used when saving files
 extension=cs
 
+# MIME type
+mime_type=text/x-csharp
+
 # the following characters are these which a "word" can contains, see documentation
 #wordchars=_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
 


Modified: data/filetypes.css
3 files changed, 3 insertions(+), 0 deletions(-)
===================================================================
@@ -43,6 +43,9 @@ browser_pseudo_elements=^-ms- ^-apple- ^-epub- ^-moz- ^-o- ^-wap- ^-webkit- ^-xv
 # default extension used when saving files
 extension=css
 
+# MIME type
+mime_type=text/css
+
 # the following characters are these which a "word" can contains, see documentation
 #wordchars=_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
 


Modified: data/filetypes.d
3 files changed, 3 insertions(+), 0 deletions(-)
===================================================================
@@ -35,6 +35,9 @@ fold.d.comment.explicit=0
 # default extension used when saving files
 extension=d
 
+# MIME type
+mime_type=text/x-dsrc
+
 # the following characters are these which a "word" can contains, see documentation
 #wordchars=_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
 


Modified: data/filetypes.diff
3 files changed, 3 insertions(+), 0 deletions(-)
===================================================================
@@ -15,6 +15,9 @@ changed=line_changed
 # default extension used when saving files
 extension=diff
 
+# MIME type
+mime_type=text/x-patch
+
 # the following characters are these which a "word" can contains, see documentation
 #wordchars=_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
 


Modified: data/filetypes.docbook
3 files changed, 3 insertions(+), 0 deletions(-)
===================================================================
@@ -45,6 +45,9 @@ fold.html.preprocessor=1
 # default extension used when saving files
 extension=docbook
 
+# MIME type
+mime_type=application/docbook+xml
+
 # the following characters are these which a "word" can contains, see documentation
 #wordchars=_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
 


Modified: data/filetypes.erlang
3 files changed, 3 insertions(+), 0 deletions(-)
===================================================================
@@ -45,6 +45,9 @@ doc_macro=@date @docRoot @link @module @package @section @time @type @version
 # default extension used when saving files
 extension=erl
 
+# MIME type
+mime_type=text/x-erlang
+
 # the following characters are these which a "word" can contains, see documentation
 #wordchars=_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
 


Modified: data/filetypes.f77
3 files changed, 3 insertions(+), 0 deletions(-)
===================================================================
@@ -28,6 +28,9 @@ primary=access action advance allocatable allocate apostrophe assign assignment
 # default extension used when saving files
 extension=f
 
+# MIME type
+mime_type=text/x-fortran
+
 # the following characters are these which a "word" can contains, see documentation
 #wordchars=_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
 


Modified: data/filetypes.fortran
3 files changed, 3 insertions(+), 0 deletions(-)
===================================================================
@@ -12,6 +12,9 @@ user_functions=cdabs cdcos cdexp cdlog cdsin cdsqrt cotan cotand dcmplx dconjg d
 # default extension used when saving files
 extension=f90
 
+# MIME type
+mime_type=text/x-fortran
+
 # the following characters are these which a "word" can contains, see documentation
 #wordchars=_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
 


Modified: data/filetypes.haskell
3 files changed, 3 insertions(+), 0 deletions(-)
===================================================================
@@ -44,6 +44,9 @@ fold.haskell.imports=0
 # default extension used when saving files
 extension=hs
 
+# MIME type
+mime_type=text/x-haskell
+
 # the following characters are these which a "word" can contains, see documentation
 #wordchars=_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
 


Modified: data/filetypes.html
3 files changed, 3 insertions(+), 0 deletions(-)
===================================================================
@@ -96,6 +96,9 @@
 # default extension used when saving files
 extension=html
 
+# MIME type
+mime_type=text/html
+
 # the following characters are these which a "word" can contains, see documentation
 #wordchars=_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
 


Modified: data/filetypes.java
3 files changed, 3 insertions(+), 0 deletions(-)
===================================================================
@@ -13,6 +13,9 @@
 # default extension used when saving files
 extension=java
 
+# MIME type
+mime_type=text/x-java
+
 # the following characters are these which a "word" can contains, see documentation
 #wordchars=_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
 


Modified: data/filetypes.javascript
3 files changed, 3 insertions(+), 0 deletions(-)
===================================================================
@@ -10,6 +10,9 @@ secondary=Array Boolean Date Function Math Number Object String RegExp EvalError
 # default extension used when saving files
 extension=js
 
+# MIME type
+mime_type=application/javascript
+
 # the following characters are these which a "word" can contains, see documentation
 #wordchars=_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
 


Modified: data/filetypes.latex
3 files changed, 3 insertions(+), 0 deletions(-)
===================================================================
@@ -25,6 +25,9 @@ primary=above abovedisplayshortskip abovedisplayskip abovewithdelims accent adjd
 # default extension used when saving files
 extension=tex
 
+# MIME type
+mime_type=text/x-tex
+
 # the following characters are these which a "word" can contains, see documentation
 #wordchars=_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
 


Modified: data/filetypes.lua
3 files changed, 3 insertions(+), 0 deletions(-)
===================================================================
@@ -42,6 +42,9 @@ user4=
 # default extension used when saving files
 extension=lua
 
+# MIME type
+mime_type=text/x-lua
+
 # the following characters are these which a "word" can contains, see documentation
 #wordchars=_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
 


Modified: data/filetypes.makefile
3 files changed, 3 insertions(+), 0 deletions(-)
===================================================================
@@ -13,6 +13,9 @@ ideol=type
 # default extension used when saving files
 extension=mak
 
+# MIME type
+mime_type=text/x-makefile
+
 # the following characters are these which a "word" can contains, see documentation
 #wordchars=_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
 


Modified: data/filetypes.markdown
3 files changed, 3 insertions(+), 0 deletions(-)
===================================================================
@@ -23,6 +23,9 @@ codebk=attribute_unknown
 # default extension used when saving files
 extension=mdml
 
+# MIME type
+mime_type=text/x-markdown
+
 # sort tags by appearance
 symbol_list_sort_mode=1
 


Modified: data/filetypes.matlab
3 files changed, 3 insertions(+), 0 deletions(-)
===================================================================
@@ -19,6 +19,9 @@ primary=break case catch classdef continue else elseif end enumeration events fo
 # default extension used when saving files
 extension=m
 
+# MIME type
+mime_type=text/x-matlab
+
 # the following characters are these which a "word" can contains, see documentation
 #wordchars=_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
 


Modified: data/filetypes.objectivec
3 files changed, 3 insertions(+), 0 deletions(-)
===================================================================
@@ -14,6 +14,9 @@ docComment=attention author brief bug class code date def enum example exception
 # default extension used when saving files
 extension=m
 
+# MIME type
+mime_type=text/x-objc
+
 # the following characters are these which a "word" can contains, see documentation
 #wordchars=_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
 


Modified: data/filetypes.pascal
3 files changed, 3 insertions(+), 0 deletions(-)
===================================================================
@@ -30,6 +30,9 @@ lexer.pascal.smart.highlighting=1
 # default extension used when saving files
 extension=pas
 
+# MIME type
+mime_type=text/x-pascal
+
 # the following characters are these which a "word" can contains, see documentation
 #wordchars=_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
 


Modified: data/filetypes.perl
3 files changed, 3 insertions(+), 0 deletions(-)
===================================================================
@@ -61,6 +61,9 @@
 # default extension used when saving files
 extension=pl
 
+# MIME type
+mime_type=application/x-perl
+
 # the following characters are these which a "word" can contains, see documentation
 #wordchars=_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
 


Modified: data/filetypes.php
3 files changed, 3 insertions(+), 0 deletions(-)
===================================================================
@@ -10,6 +10,9 @@
 # default extension used when saving files
 extension=php
 
+# MIME type
+mime_type=application/x-php
+
 # the following characters are these which a "word" can contains, see documentation
 #wordchars=_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
 


Modified: data/filetypes.po
3 files changed, 3 insertions(+), 0 deletions(-)
===================================================================
@@ -22,6 +22,9 @@ error=error
 # default extension used when saving files
 extension=po
 
+# MIME type
+mime_type=text/x-gettext-translation
+
 # the following characters are these which a "word" can contains, see documentation
 #wordchars=_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
 


Modified: data/filetypes.python
3 files changed, 3 insertions(+), 0 deletions(-)
===================================================================
@@ -33,6 +33,9 @@ fold.quotes.python=1
 # default extension used when saving files
 extension=py
 
+# MIME type
+mime_type=text/x-python
+
 # the following characters are these which a "word" can contains, see documentation
 #wordchars=_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
 


Modified: data/filetypes.restructuredtext
3 files changed, 3 insertions(+), 0 deletions(-)
===================================================================
@@ -6,6 +6,9 @@
 # default extension used when saving files
 extension=rst
 
+# MIME type
+mime_type=text/x-rst
+
 # the following characters are these which a "word" can contains, see documentation
 #wordchars=_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
 


Modified: data/filetypes.ruby
3 files changed, 3 insertions(+), 0 deletions(-)
===================================================================
@@ -45,6 +45,9 @@ primary=__FILE__ load define_method attr_accessor attr_writer attr_reader and de
 # default extension used when saving files
 extension=rb
 
+# MIME type
+mime_type=application/x-ruby
+
 # the following characters are these which a "word" can contains, see documentation
 #wordchars=_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
 


Modified: data/filetypes.sh
3 files changed, 3 insertions(+), 0 deletions(-)
===================================================================
@@ -24,6 +24,9 @@ primary=break case continue do done elif else esac eval exit export fi for funct
 # default extension used when saving files
 extension=sh
 
+# MIME type
+mime_type=application/x-shellscript
+
 # the following characters are these which a "word" can contains, see documentation
 #wordchars=_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
 


Modified: data/filetypes.sql
3 files changed, 3 insertions(+), 0 deletions(-)
===================================================================
@@ -29,6 +29,9 @@ keywords=absolute action add admin after aggregate alias all allocate alter and
 # default extension used when saving files
 extension=sql
 
+# MIME type
+mime_type=text/x-sql
+
 # the following characters are these which a "word" can contains, see documentation
 #wordchars=_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
 


Modified: data/filetypes.tcl
3 files changed, 3 insertions(+), 0 deletions(-)
===================================================================
@@ -33,6 +33,9 @@ expand=
 # default extension used when saving files
 extension=tcl
 
+# MIME type
+mime_type=text/x-tcl
+
 # the following characters are these which a "word" can contains, see documentation
 #wordchars=_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
 


Modified: data/filetypes.txt2tags
3 files changed, 3 insertions(+), 0 deletions(-)
===================================================================
@@ -28,6 +28,9 @@ postproc=preprocessor
 # default extension used when saving files
 extension=txt2tags
 
+# MIME type
+mime_type=text/x-txt2tags
+
 # sort tags by appearance
 symbol_list_sort_mode=1
 


Modified: data/filetypes.vala
3 files changed, 3 insertions(+), 0 deletions(-)
===================================================================
@@ -23,6 +23,9 @@ lexer_filetype=C
 # default extension used when saving files
 extension=vala
 
+# MIME type
+mime_type=text/x-vala
+
 # the following characters are these which a "word" can contains, see documentation
 #wordchars=_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
 


Modified: data/filetypes.verilog
3 files changed, 3 insertions(+), 0 deletions(-)
===================================================================
@@ -26,6 +26,9 @@ word3=real integer time reg wire input output inout
 # default extension used when saving files
 extension=v
 
+# MIME type
+mime_type=text/x-verilog
+
 # the following characters are these which a "word" can contains, see documentation
 #wordchars=_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
 


Modified: data/filetypes.vhdl
3 files changed, 3 insertions(+), 0 deletions(-)
===================================================================
@@ -31,6 +31,9 @@ userwords=
 # default extension used when saving files
 extension=vhd
 
+# MIME type
+mime_type=text/x-vhdl
+
 # the following characters are these which a "word" can contains, see documentation
 #wordchars=_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
 


Modified: data/filetypes.xml
3 files changed, 3 insertions(+), 0 deletions(-)
===================================================================
@@ -7,6 +7,9 @@
 # default extension used when saving files
 extension=xml
 
+# MIME type
+mime_type=application/xml
+
 # the following characters are these which a "word" can contains, see documentation
 #wordchars=_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
 


Modified: data/filetypes.yaml
3 files changed, 3 insertions(+), 0 deletions(-)
===================================================================
@@ -21,6 +21,9 @@ keywords=true false yes no
 # default extension used when saving files
 extension=yaml
 
+# MIME type
+mime_type=application/x-yaml
+
 # the following characters are these which a "word" can contains, see documentation
 #wordchars=_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
 


Modified: doc/geany.txt
4 files changed, 4 insertions(+), 0 deletions(-)
===================================================================
@@ -4204,6 +4204,10 @@ xml_indent_tags
     to filetypes for which the HTML or XML lexer is used. Such filetypes have
     this setting in their system configuration files.
 
+mime_type
+    The MIME type for this file type, e.g. "text/x-csrc".  This is used
+    for example to chose the icon to display for this file type.
+
 
 [indentation] section
 `````````````````````


Modified: src/filetypes.c
79 files changed, 27 insertions(+), 52 deletions(-)
===================================================================
@@ -107,7 +107,6 @@ static void init_builtin_filetypes(void)
 	ft->lang = 0;
 	ft->name = g_strdup("C");
 	filetype_make_title(ft, TITLE_SOURCE_FILE);
-	ft->mime_type = g_strdup("text/x-csrc");
 	ft->group = GEANY_FILETYPE_GROUP_COMPILED;
 
 #define CPP
@@ -115,7 +114,6 @@ static void init_builtin_filetypes(void)
 	ft->lang = 1;
 	ft->name = g_strdup("C++");
 	filetype_make_title(ft, TITLE_SOURCE_FILE);
-	ft->mime_type = g_strdup("text/x-c++src");
 	ft->group = GEANY_FILETYPE_GROUP_COMPILED;
 
 #define OBJECTIVEC
@@ -123,7 +121,6 @@ static void init_builtin_filetypes(void)
 	ft->lang = 42;
 	ft->name = g_strdup("Objective-C");
 	filetype_make_title(ft, TITLE_SOURCE_FILE);
-	ft->mime_type = g_strdup("text/x-objc");
 	ft->group = GEANY_FILETYPE_GROUP_COMPILED;
 
 #define CS
@@ -131,7 +128,6 @@ static void init_builtin_filetypes(void)
 	ft->lang = 25;
 	ft->name = g_strdup("C#");
 	filetype_make_title(ft, TITLE_SOURCE_FILE);
-	ft->mime_type = g_strdup("text/x-csharp");
 	ft->group = GEANY_FILETYPE_GROUP_COMPILED;
 
 #define VALA
@@ -139,7 +135,6 @@ static void init_builtin_filetypes(void)
 	ft->lang = 33;
 	ft->name = g_strdup("Vala");
 	filetype_make_title(ft, TITLE_SOURCE_FILE);
-	ft->mime_type = g_strdup("text/x-vala");
 	ft->group = GEANY_FILETYPE_GROUP_COMPILED;
 
 #define D
@@ -147,7 +142,6 @@ static void init_builtin_filetypes(void)
 	ft->lang = 17;
 	ft->name = g_strdup("D");
 	filetype_make_title(ft, TITLE_SOURCE_FILE);
-	ft->mime_type = g_strdup("text/x-dsrc");
 	ft->group = GEANY_FILETYPE_GROUP_COMPILED;
 
 #define JAVA
@@ -155,7 +149,6 @@ static void init_builtin_filetypes(void)
 	ft->lang = 2;
 	ft->name = g_strdup("Java");
 	filetype_make_title(ft, TITLE_SOURCE_FILE);
-	ft->mime_type = g_strdup("text/x-java");
 	ft->group = GEANY_FILETYPE_GROUP_COMPILED;
 
 #define PAS /* to avoid warnings when building under Windows, the symbol PASCAL is there defined */
@@ -163,7 +156,6 @@ static void init_builtin_filetypes(void)
 	ft->lang = 4;
 	ft->name = g_strdup("Pascal");
 	filetype_make_title(ft, TITLE_SOURCE_FILE);
-	ft->mime_type = g_strdup("text/x-pascal");
 	ft->group = GEANY_FILETYPE_GROUP_COMPILED;
 
 #define ASM
@@ -185,7 +177,6 @@ static void init_builtin_filetypes(void)
 	ft->lang = 18;
 	ft->name = g_strdup("Fortran");
 	ft->title = g_strdup_printf(_("%s source file"), "Fortran (F90)");
-	ft->mime_type = g_strdup("text/x-fortran");
 	ft->group = GEANY_FILETYPE_GROUP_COMPILED;
 
 #define F77
@@ -193,7 +184,6 @@ static void init_builtin_filetypes(void)
 	ft->lang = 30;
 	ft->name = g_strdup("F77");
 	ft->title = g_strdup_printf(_("%s source file"), "Fortran (F77)");
-	ft->mime_type = g_strdup("text/x-fortran");
 	ft->group = GEANY_FILETYPE_GROUP_COMPILED;
 
 #define GLSL
@@ -207,7 +197,6 @@ static void init_builtin_filetypes(void)
 	ft = filetypes[GEANY_FILETYPES_CAML];
 	ft->name = g_strdup("CAML");
 	ft->title = g_strdup_printf(_("%s source file"), "(O)Caml");
-	ft->mime_type = g_strdup("text/x-ocaml");
 	ft->group = GEANY_FILETYPE_GROUP_COMPILED;
 
 #define PERL
@@ -215,7 +204,6 @@ static void init_builtin_filetypes(void)
 	ft->lang = 5;
 	ft->name = g_strdup("Perl");
 	filetype_make_title(ft, TITLE_SOURCE_FILE);
-	ft->mime_type = g_strdup("application/x-perl");
 	ft->group = GEANY_FILETYPE_GROUP_SCRIPT;
 
 #define PHP
@@ -223,7 +211,6 @@ static void init_builtin_filetypes(void)
 	ft->lang = 6;
 	ft->name = g_strdup("PHP");
 	filetype_make_title(ft, TITLE_SOURCE_FILE);
-	ft->mime_type = g_strdup("application/x-php");
 	ft->group = GEANY_FILETYPE_GROUP_SCRIPT;
 
 #define JAVASCRIPT
@@ -231,7 +218,6 @@ static void init_builtin_filetypes(void)
 	ft->lang = 23;
 	ft->name = g_strdup("Javascript");
 	filetype_make_title(ft, TITLE_SOURCE_FILE);
-	ft->mime_type = g_strdup("application/javascript");
 	ft->group = GEANY_FILETYPE_GROUP_SCRIPT;
 
 #define PYTHON
@@ -239,7 +225,6 @@ static void init_builtin_filetypes(void)
 	ft->lang = 7;
 	ft->name = g_strdup("Python");
 	filetype_make_title(ft, TITLE_SOURCE_FILE);
-	ft->mime_type = g_strdup("text/x-python");
 	ft->group = GEANY_FILETYPE_GROUP_SCRIPT;
 
 #define RUBY
@@ -247,7 +232,6 @@ static void init_builtin_filetypes(void)
 	ft->lang = 14;
 	ft->name = g_strdup("Ruby");
 	filetype_make_title(ft, TITLE_SOURCE_FILE);
-	ft->mime_type = g_strdup("application/x-ruby");
 	ft->group = GEANY_FILETYPE_GROUP_SCRIPT;
 
 #define TCL
@@ -255,7 +239,6 @@ static void init_builtin_filetypes(void)
 	ft->lang = 15;
 	ft->name = g_strdup("Tcl");
 	filetype_make_title(ft, TITLE_SOURCE_FILE);
-	ft->mime_type = g_strdup("text/x-tcl");
 	ft->group = GEANY_FILETYPE_GROUP_SCRIPT;
 
 #define LUA
@@ -263,7 +246,6 @@ static void init_builtin_filetypes(void)
 	ft->lang = 22;
 	ft->name = g_strdup("Lua");
 	filetype_make_title(ft, TITLE_SOURCE_FILE);
-	ft->mime_type = g_strdup("text/x-lua");
 	ft->group = GEANY_FILETYPE_GROUP_SCRIPT;
 
 #define FERITE
@@ -278,7 +260,6 @@ static void init_builtin_filetypes(void)
 	ft->lang = 24;
 	ft->name = g_strdup("Haskell");
 	filetype_make_title(ft, TITLE_SOURCE_FILE);
-	ft->mime_type = g_strdup("text/x-haskell");
 	ft->group = GEANY_FILETYPE_GROUP_COMPILED;
 
 #define MARKDOWN
@@ -286,7 +267,6 @@ static void init_builtin_filetypes(void)
 	ft->lang = 36;
 	ft->name = g_strdup("Markdown");
 	filetype_make_title(ft, TITLE_SOURCE_FILE);
-	ft->mime_type = g_strdup("text/x-markdown");
 	ft->group = GEANY_FILETYPE_GROUP_MARKUP;
 
 #define TXT2TAGS
@@ -294,7 +274,6 @@ static void init_builtin_filetypes(void)
 	ft->lang = 37;
 	ft->name = g_strdup("Txt2tags");
 	filetype_make_title(ft, TITLE_SOURCE_FILE);
-	ft->mime_type = g_strdup("text/x-txt2tags");
 	ft->group = GEANY_FILETYPE_GROUP_MARKUP;
 
 #define ABC
@@ -309,7 +288,6 @@ static void init_builtin_filetypes(void)
 	ft->lang = 16;
 	ft->name = g_strdup("Sh");
 	ft->title = g_strdup(_("Shell script"));
-	ft->mime_type = g_strdup("application/x-shellscript");
 	ft->group = GEANY_FILETYPE_GROUP_SCRIPT;
 
 #define MAKE
@@ -317,14 +295,12 @@ static void init_builtin_filetypes(void)
 	ft->lang = 3;
 	ft->name = g_strdup("Make");
 	ft->title = g_strdup(_("Makefile"));
-	ft->mime_type = g_strdup("text/x-makefile");
 	ft->group = GEANY_FILETYPE_GROUP_SCRIPT;
 
 #define XML
 	ft = filetypes[GEANY_FILETYPES_XML];
 	ft->name = g_strdup("XML");
 	ft->title = g_strdup(_("XML document"));
-	ft->mime_type = g_strdup("application/xml");
 	ft->group = GEANY_FILETYPE_GROUP_MARKUP;
 
 #define DOCBOOK
@@ -332,7 +308,6 @@ static void init_builtin_filetypes(void)
 	ft->lang = 12;
 	ft->name = g_strdup("Docbook");
 	filetype_make_title(ft, TITLE_SOURCE_FILE);
-	ft->mime_type = g_strdup("application/docbook+xml");
 	ft->group = GEANY_FILETYPE_GROUP_MARKUP;
 
 #define HTML
@@ -340,7 +315,6 @@ static void init_builtin_filetypes(void)
 	ft->lang = 29;
 	ft->name = g_strdup("HTML");
 	filetype_make_title(ft, TITLE_SOURCE_FILE);
-	ft->mime_type = g_strdup("text/html");
 	ft->group = GEANY_FILETYPE_GROUP_MARKUP;
 
 #define CSS
@@ -348,7 +322,6 @@ static void init_builtin_filetypes(void)
 	ft->lang = 13;
 	ft->name = g_strdup("CSS");
 	ft->title = g_strdup(_("Cascading StyleSheet"));
-	ft->mime_type = g_strdup("text/css");
 	ft->group = GEANY_FILETYPE_GROUP_MARKUP;	/* not really markup but fit quite well to HTML */
 
 #define SQL
@@ -356,7 +329,6 @@ static void init_builtin_filetypes(void)
 	ft->lang = 11;
 	ft->name = g_strdup("SQL");
 	filetype_make_title(ft, TITLE_FILE);
-	ft->mime_type = g_strdup("text/x-sql");
 	ft->group = GEANY_FILETYPE_GROUP_MISC;
 
 #define COBOL
@@ -364,7 +336,6 @@ static void init_builtin_filetypes(void)
 	ft->lang = 41;
 	ft->name = g_strdup("COBOL");
 	filetype_make_title(ft, TITLE_SOURCE_FILE);
-	ft->mime_type = g_strdup("text/x-cobol");
 	ft->group = GEANY_FILETYPE_GROUP_COMPILED;
 
 #define LATEX
@@ -372,7 +343,6 @@ static void init_builtin_filetypes(void)
 	ft->lang = 8;
 	ft->name = g_strdup("LaTeX");
 	filetype_make_title(ft, TITLE_SOURCE_FILE);
-	ft->mime_type = g_strdup("text/x-tex");
 	ft->group = GEANY_FILETYPE_GROUP_MARKUP;
 
 #define VHDL
@@ -380,7 +350,6 @@ static void init_builtin_filetypes(void)
 	ft->lang = 21;
 	ft->name = g_strdup("VHDL");
 	filetype_make_title(ft, TITLE_SOURCE_FILE);
-	ft->mime_type = g_strdup("text/x-vhdl");
 	ft->group = GEANY_FILETYPE_GROUP_COMPILED;
 
 #define VERILOG
@@ -388,7 +357,6 @@ static void init_builtin_filetypes(void)
 	ft->lang = 39;
 	ft->name = g_strdup("Verilog");
 	filetype_make_title(ft, TITLE_SOURCE_FILE);
-	ft->mime_type = g_strdup("text/x-verilog");
 	ft->group = GEANY_FILETYPE_GROUP_COMPILED;
 
 #define DIFF
@@ -396,7 +364,6 @@ static void init_builtin_filetypes(void)
 	ft->lang = 20;
 	ft->name = g_strdup("Diff");
 	filetype_make_title(ft, TITLE_FILE);
-	ft->mime_type = g_strdup("text/x-patch");
 	ft->group = GEANY_FILETYPE_GROUP_MISC;
 
 #define LISP
@@ -409,7 +376,6 @@ static void init_builtin_filetypes(void)
 	ft = filetypes[GEANY_FILETYPES_ERLANG];
 	ft->name = g_strdup("Erlang");
 	filetype_make_title(ft, TITLE_SOURCE_FILE);
-	ft->mime_type = g_strdup("text/x-erlang");
 	ft->group = GEANY_FILETYPE_GROUP_SCRIPT;
 
 #define CONF
@@ -423,7 +389,6 @@ static void init_builtin_filetypes(void)
 	ft = filetypes[GEANY_FILETYPES_PO];
 	ft->name = g_strdup("Po");
 	ft->title = g_strdup(_("Gettext translation file"));
-	ft->mime_type = g_strdup("text/x-gettext-translation");
 	ft->group = GEANY_FILETYPE_GROUP_MISC;
 
 #define HAXE
@@ -438,7 +403,6 @@ static void init_builtin_filetypes(void)
 	ft->lang = 34;
 	ft->name = g_strdup("ActionScript");
 	filetype_make_title(ft, TITLE_SOURCE_FILE);
-	ft->mime_type = g_strdup("application/ecmascript");
 	ft->group = GEANY_FILETYPE_GROUP_SCRIPT;
 
 #define R
@@ -460,21 +424,18 @@ static void init_builtin_filetypes(void)
 	ft->lang = 32;
 	ft->name = g_strdup("Matlab/Octave");
 	filetype_make_title(ft, TITLE_SOURCE_FILE);
-	ft->mime_type = g_strdup("text/x-matlab");
 	ft->group = GEANY_FILETYPE_GROUP_SCRIPT;
 
 #define YAML
 	ft = filetypes[GEANY_FILETYPES_YAML];
 	ft->name = g_strdup("YAML");
 	filetype_make_title(ft, TITLE_FILE);
-	ft->mime_type = g_strdup("application/x-yaml");
 	ft->group = GEANY_FILETYPE_GROUP_MISC;
 
 #define CMAKE
 	ft = filetypes[GEANY_FILETYPES_CMAKE];
 	ft->name = g_strdup("CMake");
 	filetype_make_title(ft, TITLE_SOURCE_FILE);
-	ft->mime_type = g_strdup("text/x-cmake");
 	ft->group = GEANY_FILETYPE_GROUP_SCRIPT;
 
 #define NSIS
@@ -488,7 +449,6 @@ static void init_builtin_filetypes(void)
 	ft = filetypes[GEANY_FILETYPES_ADA];
 	ft->name = g_strdup("Ada");
 	filetype_make_title(ft, TITLE_SOURCE_FILE);
-	ft->mime_type = g_strdup("text/x-adasrc");
 	ft->group = GEANY_FILETYPE_GROUP_COMPILED;
 
 #define FORTH
@@ -591,9 +551,6 @@ static void filetype_add(GeanyFiletype *ft)
 
 	/* list will be sorted later */
 	filetypes_by_title = g_slist_prepend(filetypes_by_title, ft);
-
-	if (!ft->mime_type)
-		ft->mime_type = g_strdup("text/plain");
 }
 
 
@@ -763,16 +720,7 @@ static void create_set_filetype_menu(void)
 
 void filetypes_init()
 {
-	GSList *node;
-
 	filetypes_init_types();
-
-	/* this has to be here as GTK isn't initialized in filetypes_init_types(). */
-	foreach_slist(node, filetypes_by_title)
-	{
-		GeanyFiletype *ft = node->data;
-		ft->icon = ui_get_mime_icon(ft->mime_type, GTK_ICON_SIZE_MENU);
-	}
 	create_set_filetype_menu();
 	setup_config_file_menus();
 }
@@ -1212,6 +1160,10 @@ static void load_settings(guint ft_id, GKeyFile *config, GKeyFile *configh)
 		SETPTR(filetypes[ft_id]->extension, result);
 	}
 
+	/* MIME type */
+	result = utils_get_setting(string, configh, config, "settings", "mime_type", "text/plain");
+	SETPTR(filetypes[ft_id]->mime_type, result);
+
 	/* read comment notes */
 	result = utils_get_setting(string, configh, config, "settings", "comment_open", NULL);
 	if (result != NULL)
@@ -1432,6 +1384,12 @@ void filetypes_load_config(guint ft_id, gboolean reload)
 	load_settings(ft_id, config, config_home);
 	highlighting_init_styles(ft_id, config, config_home);
 
+	if (reload && ft->icon)
+	{
+		g_object_unref(ft->icon);
+		ft->icon = NULL;
+	}
+
 	g_key_file_free(config);
 	g_key_file_free(config_home);
 }
@@ -1840,3 +1798,20 @@ gboolean filetype_get_comment_open_close(const GeanyFiletype *ft, gboolean singl
 
 	return !EMPTY(*co);
 }
+
+
+/* gets the filetype icon, possibly rendering it if not yet done
+ * Returns the filetype's icon, should not be freed
+ * 
+ * This requires the mime_type setting so has to be done after the filetype
+ * is loaded, but we don't necessarily have GTK in filetypes_load_config(),
+ * so use a helper function that renders the icon if needed */
+GdkPixbuf *filetype_get_icon(GeanyFiletype *ft)
+{
+	g_return_val_if_fail(ft != NULL, NULL);
+
+	if (! ft->icon)
+		ft->icon = ui_get_mime_icon(ft->mime_type, GTK_ICON_SIZE_MENU);
+
+	return ft->icon;
+}


Modified: src/filetypes.h
2 files changed, 2 insertions(+), 0 deletions(-)
===================================================================
@@ -218,6 +218,8 @@ gboolean filetypes_parse_error_message(GeanyFiletype *ft, const gchar *message,
 gboolean filetype_get_comment_open_close(const GeanyFiletype *ft, gboolean single_first,
 		const gchar **co, const gchar **cc);
 
+GdkPixbuf *filetype_get_icon(GeanyFiletype *ft);
+
 G_END_DECLS
 
 #endif


Modified: src/sidebar.c
5 files changed, 3 insertions(+), 2 deletions(-)
===================================================================
@@ -456,6 +456,7 @@ void sidebar_openfiles_add(GeanyDocument *doc)
 	gchar *basename;
 	const GdkColor *color = document_get_status_color(doc);
 	static GdkPixbuf *file_icon = NULL;
+	GdkPixbuf *ft_icon = doc->file_type ? filetype_get_icon(doc->file_type) : NULL;
 
 	gtk_tree_store_append(store_openfiles, iter, parent);
 
@@ -474,7 +475,7 @@ void sidebar_openfiles_add(GeanyDocument *doc)
 
 	basename = g_path_get_basename(DOC_FILENAME(doc));
 	gtk_tree_store_set(store_openfiles, iter,
-		DOCUMENTS_ICON, (doc->file_type && doc->file_type->icon) ? doc->file_type->icon : file_icon,
+		DOCUMENTS_ICON, ft_icon ? ft_icon : file_icon,
 		DOCUMENTS_SHORTNAME, basename, DOCUMENTS_DOCUMENT, doc, DOCUMENTS_COLOR, color,
 		DOCUMENTS_FILENAME, DOC_FILENAME(doc), -1);
 	g_free(basename);
@@ -505,7 +506,7 @@ void sidebar_openfiles_update(GeanyDocument *doc)
 	{
 		/* just update color and the icon */
 		const GdkColor *color = document_get_status_color(doc);
-		GdkPixbuf *icon = doc->file_type->icon;
+		GdkPixbuf *icon = filetype_get_icon(doc->file_type);
 
 		gtk_tree_store_set(store_openfiles, iter, DOCUMENTS_COLOR, color, -1);
 		if (icon)


Modified: src/ui_utils.c
2 files changed, 1 insertions(+), 1 deletions(-)
===================================================================
@@ -2587,7 +2587,7 @@ void ui_menu_add_document_items_sorted(GtkMenu *menu, GeanyDocument *active,
 
 		base_name = g_path_get_basename(DOC_FILENAME(doc));
 		menu_item = gtk_image_menu_item_new_with_label(base_name);
-		image = gtk_image_new_from_pixbuf(doc->file_type->icon);
+		image = gtk_image_new_from_pixbuf(filetype_get_icon(doc->file_type));
 		gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menu_item), image);
 
 		gtk_widget_show(menu_item);



--------------
This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).


More information about the Commits mailing list