Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>NeoPawn HelperNew to Visual Studio Code? Get it now.
NeoPawn Helper

NeoPawn Helper

saintantony

|
7 installs
| (0) | Free
NeoPawn и классический Pawn в VS Code: ООП, итераторы, хуки, навигация, outline, подсказки, диагностика.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

NeoPawn Helper

Расширение Visual Studio Code для NeoPawn Compiler и классического Pawn. Оно индексирует проект без отдельного языкового сервера, понимает новый ООП-синтаксис и продолжает работать с обычными .pwn, .inc и .module.

Преимущества

  • Полная подсветка class, extends, abstract, final, virtual, override, owned, модификаторов доступа, свойств и полей только для чтения.
  • Переход к объявлению класса, базового класса, конструктора нужной арности, поля, свойства, метода и унаследованного члена.
  • Переход из base(...) к конструктору родителя.
  • Поддержка this.member, обращения к членам без this. внутри методов, object.Member(), Class.Member, Class.Is(...), Class.Cast(...).
  • Свойства с аксессорами property int Value get GetValue set SetValue;: подсветка и переход к методам get/set.
  • Встроенные итераторы: Iterator:Name<N>, Iterator:Name[M]<N>, foreach (new v : It), подсказки и описание всех Iter_*, ITER_NONE, #pragma neo_iterators.
  • Хуки hook, hook public, hook native, continue() и va_args<N>.
  • Outline файла (классы с членами, функции, enum, #define, итераторы) и поиск символов по всему проекту (Ctrl+T).
  • Hover и подсказки параметров (Ctrl+Shift+Space) для функций проекта, методов, конструкторов и встроенных Iter_*; hover показывает значение константы и цвет.
  • Автодополнение функций, констант, классов, ключевых слов и сниппеты foreach, class, hook.
  • Диагностика конструкций, которые отвергает компилятор NeoPawn: #define this. THIS__, hook before (355), хук на метод (356), new Class(...); (361), new Class name; (362), метод вне класса (363), property … { get } (334), множественное наследование и readonly-метод (300), поле через new, метод без тела и int[3] Method() (359), устаревший neo_iterators.inc.
  • Подсказки членов после точки и классов после new с учётом наследования.
  • Hover с сигнатурой члена и указанием класса, от которого он унаследован.
  • Индекс функций, глобальных переменных, #define, enum, диалогов, global/foreign и пространств имён Namespace::Function.
  • Переходы по #include и ссылки между MySQL-запросами и callback-функциями.
  • Подсветка цветов, SQL и спецификаторов mysql_format.
  • Диагностика количества аргументов mysql_format.
  • Встроенные значения простых #define, const и элементов enum.
  • Совместная работа NeoPawn и старого Pawn в одном проекте.

Поддерживаемый ООП-синтаксис

abstract class Entity[128] {
	protected int id;
	public property float Angle;
	public readonly int Model;
	public static int Count;

	Entity(int id, int model)
	{
		this.id = id;
		this.Model = model;
		Entity.Count++;
	}

	abstract int GetValue();

	~Entity()
	{
	}
}

final class Player extends Entity {
	Player(int id, int model)
	{
		base(id, model);
	}

	override int GetValue()
	{
		return this.id;
	}
}

stock System_Use()
{
	owned Player player = new Player(10, 411);
	Entity entity = Entity:player;

	if (Player.Is(entity))
	{
		Player checked = Player.Cast(entity);
		checked.GetValue();
	}
}

Поддерживаются оба варианта наследования: class Player extends Entity и class Player : Entity. Перегруженные конструкторы, деструкторы, статические члены, public/protected/private, property, readonly, virtual/override, абстрактные и финальные классы индексируются как самостоятельные символы.

Итераторы, хуки и свойства с аксессорами:

new Iterator:Player<MAX_PLAYERS>;

class Counter[16] {
	public property int Value get GetValue set SetValue;

	int GetValue() { return 1; }
	void SetValue(int value) { }
}

hook public OnPlayerConnect(playerid)
{
	Iter_Add(Player, playerid);
	foreach (new id : Player) {
		printf("%d", id);
	}
	return continue();
}

Старый псевдо-ООП #define this. THIS__(Type) компилятор NeoPawn больше не принимает: расширение помечает такие места ошибкой, но переходы по ним в классическом Pawn продолжают работать. Для чисто классического Pawn-проекта диагностику NeoPawn можно отключить параметром neoPawnHelper.diagnostics.enabled.

Скорость

  • Файл разбирается за один проход; результат разбора открытого документа кэшируется по версии и используется подсветкой, подсказками, переходами и диагностикой.
  • Изменение файла обновляет индекс инкрементально — пересобираются только записи этого файла, а не весь проект.
  • Файлы проекта читаются параллельно; изменения на диске подхватываются файловым наблюдателем без полной переиндексации.

Команды

Откройте палитру команд через Ctrl+Shift+P:

  • NeoPawn Helper: переиндексировать проект — полностью перестроить индекс;
  • NeoPawn Helper: создать enum из CREATE TABLE — преобразовать выделенный SQL CREATE TABLE в Pawn enum.

Настройки

Параметр Назначение По умолчанию
neoPawnHelper.colors.enabled Подсветка цветовых литералов и именованных цветов true
neoPawnHelper.colors.variables.enabled Отдельная подсветка обращений к именованным цветам true
neoPawnHelper.constants.valueHints.enabled Встроенные значения числовых констант true
neoPawnHelper.definitions.enabled Переходы к определениям и поиск ссылок true
neoPawnHelper.sql.highlighting.enabled Подсветка SQL внутри строк true
neoPawnHelper.sql.diagnostics.enabled Проверка аргументов mysql_format true
neoPawnHelper.diagnostics.enabled Диагностика конструкций, которые отвергает компилятор NeoPawn true
neoPawnHelper.completion.enabled Автодополнение символов проекта и встроенных Iter_* true
neoPawnHelper.index.include Glob-шаблоны индексируемых файлов **/*.{pwn,inc,module}
neoPawnHelper.index.exclude Glob-шаблоны исключений служебные каталоги
neoPawnHelper.index.maxFiles Максимальное число файлов в индексе 20000
neoPawnHelper.index.debounceMs Задержка полной переиндексации 1200 мс
neoPawnHelper.index.documentDebounceMs Задержка обновления открытого файла 250 мс

Пример settings.json:

{
  "neoPawnHelper.index.include": [
    "gamemodes/**/*.{pwn,inc,module}",
    "API/**/*.{pwn,inc,module}"
  ],
  "neoPawnHelper.index.exclude": [
    "**/.git/**",
    "**/build/**"
  ],
  "neoPawnHelper.sql.diagnostics.enabled": true
}

Установка VSIX

  1. Откройте раздел расширений VS Code.
  2. Выберите меню … → Установить из VSIX….
  3. Укажите neopawn-helper-1.1.0.vsix.
  4. Перезагрузите окно редактора.

Разработка

npm test
npm run check
npm run package

npm test проверяет разбор классов, наследования, модификаторов, конструкторов, деструкторов, owned, свойств с аксессорами, итераторов, foreach, инкрементальный индекс, диагностику NeoPawn и совместимый Pawn-синтаксис.

node test/workspace-index.test.js <каталог> индексирует реальный проект и выводит число файлов, символов и классов.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft