Русское сообщество по скриптингу

[Linux] Использование Geany для Pawn

Статьи или фрагменты кода для новичков и уже опытных скриптеров по AMXX.

Модератор: Chuvi

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только обучающему материалу по AMX Mod X.

[Linux] Использование Geany для Pawn

Сообщение Garey » 19 апр 2016, 14:54

В данной статье я расскажу как настроить редактор Geany для написания скриптов для Amxx в среде Ubuntu/Linux.

Если вы хотите использовать последнюю версию Geany и плагинов к нему скачайте исходники Geany и скомпилируйте их, либо добавьте этот репозиторий:
Код: Выделить всё
sudo add-apt-repository ppa:geany-dev/ppa
sudo apt-get update

1. Устанавливаем Geany и плагины:
Код: Выделить всё
sudo apt-get install geany geany-plugins

1.1. Запускаем geany для того чтобы он создал папки для юзер-конфигов.
2. Создаем файл filetypes.Pawn.conf в папке ~/.config/geany/filedefs/:
Можно создать даже используя Geany:
Код: Выделить всё
geany ~/.config/geany/filedefs/filetypes.Pawn.conf

И скопируйте туда:
Код: Выделить всё
# For complete documentation of this file, please see Geany's main documentation
[styling=C]
[keywords]

primary=abstract and array as assert async bool break byte case cast char class const construct continue date datetime decimal dedent def default delegate delete dict div do double downto dynamic else ensures enum errordomain event except exception extern false final finally float for foreach get hash identifier if implements implements in init inline int int16 int32 int64 int8 interface internal is isa list lock long max min namespace namespace native new not null object of or otherwise out override owned params pass print private prop protected public raise raises readonly ref requires return sbyte self set short single sizeof size_t ssize_t static string struct super to true try typeof uint uint32 uint64 uint8 ulong unichar unit16 unless unowned uses uses ushort var virtual void volatile weak when while writeonly yield
docComment=attention author brief bug class code date def enum example exception file fn namespace note param remarks return see since struct throw todo typedef var version warning union

[settings]
lexer_filetype=C
tag_parser=C++
extension=sma
comment_single=//
comment_open=/*
comment_close=*/

[build-menu]
FT_00_LB=_Compile
FT_00_CM=amxxpc "%f"
FT_00_WD=


3. Открываем файл ~/.config/geany/filetype_extensions.conf
3.1 Далее добавляем строчку Pawn=*.sma;*.inc; в раздел [Extensions] и убираем расширение *.inc из языка Pascal.
3.2 Сохраняем.

В принципе редактор готов для редактирования Amxx-скриптов но можно также настроить autocomplete и компиляцию прямо из редактора:

1. Autocomplete
Редактор Geany может создать теги из inc файлов для этого нужна папка include с *.inc файлами:
В терминале введите следующую команду:
Код: Выделить всё
geany -g Amxx.inc.tags $папка_с_inc_файлами$/*.inc

Например у меня это:
Код: Выделить всё
geany -g Amxx.inc.tags ~/AMXX/include/*.inc

Далее откройте/создайте .sma файл в Geany и нажмите Инструменты>Загрузить файл с тегами> И откройте сгенерированный файл тегов Amxx.inc.tags
Autocomplete готов:


2. Компиляция из редактора:
По умолчанию исходя из ранее созданного конфига filetypes.Pawn.conf - Geany компилирует *.sma скрипты используя команду amxxpc, для того что-бы использовать amxxpc глобально из консоли надо скопировать его в папку /usr/bin/ и библиотеку amxxpc32.so в /usr/lib32 (на х64 системе, на x86 не проверял), это все можно сделать следующими командами:
Код: Выделить всё
cd /$Путь_к_компилятору$/
sudo cp amxxpc /usr/bin/amxxpc
sudo chmod +x /usr/bin/amxxpc
sudo cp amxxpc32.so /usr/lib32/amxxpc32.so

Теперь запускаем Geany, пробуем скомпилировать плагин если он ругается то что нету amxmodx то amxxpc установился правильно.
Заходим в настройки сборки (Сборка->Установка команды сборки) и в разделе Compile заменяем:
amxxpc "%f" на amxxpc "%f" -i="путь к папке includes"
например amxxpc "%f" -i=/home/garey/проекты/AMXX/include/
Теперь нажав на Compile (F8) Geany должен начать компиляцию плагина:


Если вам не нравиться стандартная цветовая схема, можно скачать дополнительные цветовые схемы отсюда: Вы должны зарегистрироваться, чтобы видеть ссылки.

Добавлено спустя 1 минуту 38 секунд:
P.S. Кто нибудь использует Sublime для AMXX? Хотелось бы узнать как сделать autocomplete =)
Аватара пользователя
Garey
 
Сообщения: 85
Зарегистрирован: 24 дек 2010, 03:12
Благодарил (а): 4 раз.
Поблагодарили: 37 раз.

Re: [Linux] Использование Geany для Pawn

Сообщение Fedcomp » 19 апр 2016, 20:01

Пробовал atom/sublime?
Не помогаю в ЛС - есть форум.
Плагины тоже не пишу, на форуме достаточно хороших скриптеров.


"я ставлю зависимости потому что мне приятно" - subb98 @ 2017
Аватара пользователя
Fedcomp
Администратор
 
Сообщения: 4936
Зарегистрирован: 28 авг 2009, 20:47
Благодарил (а): 813 раз.
Поблагодарили: 1317 раз.
Языки программирования: =>
pawn / php / python / ruby
javascript / rust

Re: [Linux] Использование Geany для Pawn

Сообщение Garey » 19 апр 2016, 21:26

Пробовал, но что-то также не смог настроить CTags на atom и в sublime :)

Забыл написать: можно добавить "Code Beautifier" или autoindenter - Uncrustify:
Код: Выделить всё
sudo apt-get install uncrustify

Использование:
Код: Выделить всё
uncrustify -c my.cfg foo.d

где my.cfg - конфиг Uncrustify, уже есть готовый для AMXX: Вы должны зарегистрироваться, чтобы видеть ссылки.

Например: uncrustify -c amxmodx.cfg mysource.sma

Но большой код у меня выравнивал неочень правильно (из за того что в одном месте поставил ; после public plugin_init() )
Но в целом если исправить по логам компилятора ошибки - код становится более менее опрятным.
Аватара пользователя
Garey
 
Сообщения: 85
Зарегистрирован: 24 дек 2010, 03:12
Благодарил (а): 4 раз.
Поблагодарили: 37 раз.


Вернуться в Статьи / фрагменты кода

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9

cron