evgenyl 18.09.2009 21:15

CodingПлагин к Geany для автоопределения cp1251

Хороший редактор но тут люди жалуются что не может cp1251 детектить.

Набросал сабж для версии 0.18, буду благодарен тому кто сделает Makefile, нет времени разбираться сейчас.

Отдельно файл cp1251.c.



 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#include "geanyplugin.h"	/* plugin API, always comes first */

#include <stdio.h>

#include <string.h>



#define COLLECT_BUF_SIZE 1024



GeanyPlugin *geany_plugin;

GeanyData *geany_data;

GeanyFunctions *geany_functions;



PLUGIN_VERSION_CHECK(147)

PLUGIN_SET_INFO(_("cp1251"), _("Auto detect cp1251 codepage"), VERSION, _("0.1 evgenyl"))



static void open_file(GObject *obj, GeanyDocument *doc, gpointer user_data) {

int i, buf_size, c;

int collect_buf<collect_buf_size>;

float sym_counters<4>;

FILE *f;

f=fopen(doc->real_path,"r");

if (f==NULL) return ;

c = 0;

for (buf_size = 0; (c = fgetc(f)) != EOF && buf_size < COLLECT_BUF_SIZE; ) if (c>127) collect_buf<buf_size> = c;

fclose(f);

if (buf_size==0) return;

sym_counters<0>=sym_counters<1>=sym_counters<2>=sym_counters<3>=0.0;

for ( i = 0; i < buf_size; i++ ) {

if (collect_buf<i>==0xE5) sym_counters<0>+=1; //E

if (collect_buf</i><i>==0xE0) sym_counters<1>+=1; //A

if (collect_buf</i><i>==0xEE) sym_counters<2>+=1; //O

if (collect_buf</i><i>==0xE8) sym_counters<3>+=1; //I

}

for ( i = 0; i < 4; i++ ) if (sym_counters</i><i>>0) sym_counters</i><i>=sym_counters</i><i>/buf_size*100;

if ( (sym_counters<0>+sym_counters<1>+sym_counters<2>+sym_counters<3>)>20 ) document_reload_file( doc, "CP1251");

}



PluginCallback plugin_callbacks
=

{

{ "document-open", (GCallback) &open;_file, FALSE, NULL },

{ NULL, NULL, FALSE, NULL }

};



void plugin_init(GeanyData *data) {

}



void plugin_cleanup(void) {

}

</i></buf_size></collect_buf_size>





как видите, все просто, главное захотеть :)



обновил файлик cp1251.c небыла указанна VERSION

пока нет Makefile компилить так

cc -O3 -fpic -shared cp1251.c -o cp1251.so -I/usr/include/geany -I/usr/include/gtk-2.0 -I/usr/include/glib-2.0/ -I/usr/lib/glib-2.0/include -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/geany/tagmanager -I/usr/include/geany/scintilla

cp1251.so скопировать в /usr/lib/geany


Тэги: 1251 geany
+ 4 -
Похожие Поделиться

kikaha 19.09.2009 00:40 #
для меня это совсем ни разу не просто... но однозначно нужно, допилите ктонибудь плз!
bobry 20.09.2009 02:47 #
дык надо тока Makefile накидать?
evgenyl 20.09.2009 11:43 #
угу
cyrus 20.09.2009 13:57 #
Простым "Makefile"ом не обойтись)) Надо послать в репозиторий плагинов!
http://lists.uvena.de/geany/2008-April/003225.html
ZogG 21.09.2009 06:59 #
скока раз говорил : "тот, кто не использует юникод, плодят зло по всему свету", мало того, что они проблемы себе делают, так еще из-за них другие страдают, а про плагин скажи на форуме или канале, может они его добавят. Я вот тока щас повставил, незнаю его буду ипользовать или anjuta.
muhas 21.09.2009 17:23 #
тот, кто не использует юникод, плодят зло по всему свету
а теперь расскажи это виндузятникам, они слова-то такого не знают - а notepad.exe и дригие вендовые по дефолту cp1251, вот и проблема возникает. Лично мне часто попадаются файлы и не только в cp1251 но и в koi8-r =)
а себе они проблем не делают - у них-то всё работает =)
ZogG 21.09.2009 21:43 #
расскажи мне про это, есть конечно musicbrainz и easytag, но я до сих пор всю коллекцию музыки перевести в ютф-8 ( тэги ) не смог, а вообще иногда iconv полезен
muhas 21.09.2009 22:00 #
гы. а я всё вновсь приходящее из музыки с помощью мутагена конверчу
find -iname '*.mp3' -print0 | xargs -0 mid3iconv -eCP1251 --remove-v1
в 99% случаев помагает.
а виндузятники мучаются с utf текстом ибо в дефолтной винде его нечем прочесть, и судя по mosquito(блог-движок) уйма пользователей не осиливает заменить строку в файле ибо не открыть как надо файл =) в общем у каждого свой геморой
ZogG 21.09.2009 22:07 #
ну ты посмотри musicbrainz, она находит альбомы целые по базе данных, а easytag умеет кучу файлов переименовывать по имени файлы, перекодировать теги, изменять название файлов по тегам, вообщем, позже статью напишу, если не поленюсь
muhas 21.09.2009 22:39 #
пиши обязательно. я их все видел. easytag ужасно непонравился. musicbrainz из последних трех авторов нашел песню и то обозвал её не так (Кино вместо Майк и Цой)
посему по старинке мутаген и изредко Ex Falso
evgenyl 22.09.2009 16:42 #
Немного дополнил пост чтобы можно было пользоваться :)
vitok 21.06.2010 21:27 #
Здравствуйте, на 0.18 версии замечательно работал плагин за что огромное спасибо, а вот с 0.19 версией не собирается, выдает ошибку:
In file included from /usr/include/geany/plugindata.h:43:0,
from /usr/include/geany/geanyplugin.h:35,
from cp1251.c:1:
/usr/include/geany/editor.h:158:2: ошибка: expected specifier-qualifier-list before ‘ScintillaObject’
/usr/include/geany/editor.h:185:17: ошибка: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
In file included from /usr/include/geany/geanyplugin.h:38:0,
from cp1251.c:1:
/usr/include/geany/document.h:182:53: ошибка: expected ‘)’ before ‘*’ token
In file included from /usr/include/geany/geanyplugin.h:42:0,
from cp1251.c:1:
/usr/include/geany/highlighting.h:48:46: ошибка: expected ‘)’ before ‘*’ token


Не могли бы адаптировать и под 0.19 версию?)
evgenyl 29.06.2010 12:43 #
да не вопрос
evgenyl 01.07.2010 13:20 #
нужно добавить опцию -DGTK

т.е. компилировать вот такой строкой
cc -DGTK -O3 -fpic -shared cp1251.c -o cp1251.so -I/usr/include/geany -I/usr/include/gtk-2.0 -I/usr/include/glib-2.0/ -I/usr/lib/glib-2.0/include -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/geany/tagmanager -I/usr/include/geany/scintilla
vitok 02.07.2010 01:43 #
Большое спасибо за обновление)
Кстати для арчеров этот плагин доступен из аура http://aur.archlinux.org/packages.php?ID=36915
А вообще былоб не плохо увидеть в офф подборке модулей.
evgenyl 02.07.2010 10:02 #
Всегда пожалуйста.
vitok 21.10.2010 14:21 #
Здравствуйте, это опять я))

In file included from /usr/include/gtk-2.0/gdk/gdkcairo.h:28:0,
from /usr/include/gtk-2.0/gdk/gdk.h:33,
from /usr/include/gtk-2.0/gtk/gtk.h:32,
from /usr/include/geany/geany.h:34,
from /usr/include/geany/geanyplugin.h:34,
from cp1251.c:1:
/usr/include/gtk-2.0/gdk/gdkpixbuf.h:37:35: фатальная ошибка: gdk-pixbuf/gdk-pixbuf.h: Нет такого файла или каталога
Компиляция прервана.

Что-то у меня такое ощущение что это случилось после апдейта gdk-pixbuf2 в арче.
evgenyl 21.10.2010 16:54 #
Добрый день, завтра посмотрю.
Пишите в личку дополнительно, а то я могу не заметить, редко стал сюда заглядывать.

Кстати я написал на geany, добавить плагин в репозитарий, но они что-то проигнорировали :(
vitok 21.10.2010 17:09 #
Ок, я вообще этот пост составил наверно месяц назад, и все это время он в фф висел,ждал свой кнопки "отправить". Получилось так, что наверно с месяца 3 сменил CMS для разработки сайтов с русской InstantCMS на Drupal после чего мне по сути cp1251 кодировка не интересовала совсем стала)) месяц назад стало интерестно как там мой пакет в ауре поживает, решил пересобрать, а он не собирается, сначала подумал сюда отписать, набрал пост составленный выше, а потом чет решил сам проблему найти, ну и вообщем так и осталась эта страница во вкладкаха фф-а с набранным постом, а сегодня решил почистить лишнии вкладки, гляжу текст, котоырй надо было давно отправить, ну и нажал "отправить", и пошел дальше вкладки чистить, поэтому в личку не отписал.

А поповоду игнора в репозитарии geany это чет совсем не радует...
evgenyl 22.10.2010 14:55 #
забавно :)
Мне сказали что-то вроде, поставьте дефолтовую кодировку cp1251 и не парьтесь :(
vitok 23.10.2010 02:19 #
хм... походу они не имели дел с cp1251 ^^
или просто бортонули... что не особо радует.
vitok 23.10.2010 13:03 #
кстати проблема решина "The solution was to add -I/usr/include/gdk-pixbuf-2.0 to cc line"
evgenyl 25.10.2010 10:59 #
Воо, сам решил, молодец !
А я заболел, только к компу подошел за 2 дня :(
vitok 25.10.2010 21:32 #
Ничесе.
А решения не я нашел, его в коментах к пакету в ауре отписали, выше была цитата от туда.
evgenyl 26.10.2010 09:42 #
ясно :) ну ты же послужил рычагом к решению )
vitok 27.10.2010 14:49 #
тогда уж скорей промежуточным звеном) не написал бы ты плагин не было б проблемы с его сборкой ^?^ а поскольку штука нужная, люди ищут решения мелких проблем сами, а собрать пакет для арча, вообще не сложно, не то что для дебиана...
evgenyl 02.12.2010 12:50 #
Поставили "-" и хер знает за что :\, вот поэтому я захожу сюда редко и перестал писать сюда статьи.
vitok 02.12.2010 22:50 #
Походу какой-то "фанатик" дебиана, посчитал что я обидел его светлые чувства к дебиану ^?^
Нет "Идеального" дистрибутива Linux, везде свои бока, косяки, и неудобства!
А по поводу "+" и "-" пофиг, я вообще гуглом пользуюсь ;)
evgenyl 04.12.2010 23:58 #
А я обожаю линукс во всех его проявлениях ) это как пластелин все открыто и понятно, все что угодно можно изменить так как удобно и привычно, тут всегда есть чему поучится и для этого не нужно задавать 100500 вопросов просто открой исходый код :)
Я люблю эту ОС.
vitok 06.12.2010 13:13 #
А я и не говорил что линукс фигня! я виндой уже 4 года не пользуюсь. и за эти 4 года перепробовал кучу дистрибутивов и понял что идеального (в плане завершенности для конечного пользователя) дистрибутива линукса нет! везде свои нюансы. А насчет пластилина и конструкторов это конечно все хорошо, но иногда надоедает, всетаки операционная система для того чтоб в ней что-то делать, а не заниматься только ей. у меня как-то получилось что пол года в арче вообще ничего не происходило, обновлялся, и ничего после настраивать/ковырять не надо было. так я от скуки Blender осваивать начал :)
evgenyl 07.12.2010 10:32 #
Прости, я не это имел ввиду(про линукс) :)
Я обычно gentoo использую, вопреки общему мнению - нет маниакальности ее бесконечно собирать ) только когда умрет винт )
Я программист и основной род моего занятия писать софт, gentoo более приспособлена к компилированию и девелопменгу )

А я вот от скуки..
Занимаюсь немного авиа моделями, конкретно вертолетами, вот есть идея написать 3D телеметрию для 2х стереокамер на вертолете которые будут на землю передавать в реальном времени картинку и все полетные данные, короче получится 100% эффект присутствия в кабине вертолета )
vitok 07.12.2010 16:31 #
Офигеть))) а по поводу генты, я ее месяц юзал, потом утомило все и вся компелить, в общем сидел я на ней до первой пересборки мира, когда понял, что пока первый раз собирал накосячил, и надо мир пересобрать с новыми флагами, решил другой дистр попробовать. В конце концов, остановился на арче. Но это я ни как не сточки зрения разработчика рассуждаю, хотя в этом плане в арче вроде тоже все просто.
digiwhite 02.12.2010 23:21 #
Лучше бы клали на эти +/- и писали статьи :)
evgenyl 05.12.2010 00:16 #
Хорошо, что-нить напишу скоро )
Mac 13.01.2011 04:50 #
А может кто-нибудь поделится готовым файликом, чтобы без геммора поставить плагин?
evgenyl 24.01.2011 12:21 #
тебе под что ?