Kateの日本語自動認識パッチだが、先日時間を見つけてファイルのオープン時にダイアログでencodingを指定できるようにkdebase/kateの方にも修正を加えるパッチを作成してみた。
まだまだ検証が足りていないのとでexperimentalバージョンとしてkdelibs用、kdebase用を公開しておく。両方を当てて、実行してみて欲しい。(kdebase用がいかにいい加減かはパッチを見てもらえれば一目瞭然だが……)
ただし、このパッチでは”Auto”なるencodingが存在するかのように振る舞っており、それに対応せず、encoding()の妥当性をチェックしない環境では動作が保証できないこと、KateのInterfaceとしてはBICパッチとなっている可能性があることから以前のパッチよりもものとしてはいまいちと考えて欲しい。
現在、”Auto”ではなく、””を自動認識かどうかのフラグにしようと変更を行なっているが、正直いうとKTextEditor::encodingInterfaceの変更まで考えておいたほうが実用的だと思う。もっとも、そうなった場合にはQTextCodecのような雰囲気のKDetectEncoding(仮) classがあった方がいろいろとつぶしが効くし、便利だ。となると、どのようなメソッドがあればいいのかを含めて検討した方がいいなぁ。ある程度のめどがつけばKDE-3.3へ向けての提案として出せると思うが。
たとえば、こんな感じか。
class QTextCodec;
class Q_EXPORT KDetectEncoding
{
public:
? ? virtual ~KDetectEncoding();
? ? static KDetectEncoding* detecterForMib(int mib);
? ? static KDetectEncoding* detecterForName(const char* hint, int accuracy=0);
? ? static KDetectEncoding* detecterForCodec(QTextCodec *codec);
? ? static KDetectEncoding* detecterForIndex(int i);
? ? static KDetectEncoding* detecterForLocale();
? ? static KDetectEncoding* detecterForLanguage(const char *lang);
? ? static void setCodecForLocale(KDetectEncoding *c);
? ? static void deleteAllDetecters();
? ? // static const char* locale();
? ? virtual const char* name() const = 0;
? ? virtual const char* language() const = 0;
? ? virtual const QStringList &supportEncodings() const = 0;
? ? virtual const char *detect(const char* chars, int len);
? ? virtual bool isAmbiguous() const;
? ? virtual bool isUnknown() const;
? ? virtual int heuristicContentMatch(const char* chars, int len) const = 0;
? ? virtual int heuristicNameMatch(const char* hint) const;
protected:
? ? KDetectEncoding();
? ? static int simpleHeuristicNameMatch(const char* name, const char* hint);
};
Warning: count(): Parameter must be an array or an object that implements Countable in /home/asaki/www/wordpress/wp-includes/class-wp-comment-query.php on line 405