Новый релиз, на мой взгляд, плюшки интереснее, чем в официальных релизах ))
1. Прикрутил препроцессор от clang'а к мкл. Теперь можно реализовать любые препроцессорные трюки, даже такое http://jhnet.co.uk/articles/cpp_magic. Весь процесс выглядит так: F7->clang препроцессор->mql препроцессор/компилятор. Для передачи мкл компилятору мкл специфичных конструкций (ну дабы не бесить и путать clang всяким мусором, ему не очень нравится) делать так
#ifndef VIM input int MA_Period=13; // Ну или INPUT макрос input int MA_Shift=0; #else int MA_Period=13; int MA_Shift=0; #endif #ifndef VIM mqlcpp_#import "user32.dll" #endif int GetCursorPos(int ref point[]); int GetWindowRect(HWND hWnd, int ref rect[]); #ifndef VIM mqlcpp_#import #endif
перед директивами мкл препроцессору добавляем mqlcpp__, иначе её начнёт обрабатывать первый препроцессор. Заголовки из стд библиотеки включать следующим образом
#ifndef VIM mqlcpp_#include <Arrays/ArrayObj.mqh> #endif
Почему? В них нет include guard'ов. Если будут (три дополнительных строки в каждый файл), то можно включать обычным образом.
2. Разыменовывать указатели теперь можно нормальным способом, а не так, как захотели в МК
this->member;
pntr->field;
3. С передачей массивов в функции аналогично - можно теперь делать нормальным общепринятым способом
void fn(int ar[]); // в топку &
4. Исходники с кодировкой utf-16 не подойдут (будет таковой если в исходниках есть кириллица). Но перекодировать в utf-8 просто
$ dos2unix file1 ...
Синтаксис получился плюсовым, можно сказать. Удобно для портирования в/из мкл + значит хорошая поддержка со стороны clang (автокомплит и т.п.).
ЗЫ: т.к. поиск на форуме вообще огонь (поиск по форуму через поисковик тоже не айс), буду делать ссылку на последнюю версию на главной странице своего профиля.
#vim_as_mql_ide_1
Плюсану. Заодно и подержу тему наверху, может разрабы почитают.
Смысл в том, что редактор у Вас реально убогий (подсветка всех вхождений переменной, автозамена имени переменной/функции во всем проекте, поиск всех ссылок на переменную и тд.., в общем смотрим любую "взрослую" IDE и сравниваем). Препроцессор вроде и есть, а по факту - обрубок. По шаблонам, то же самое: non-type template-parameter отсутствует, возможность специализации шаблонов отсутствует. Может как-нибудь и развитие в этом направлении запланируете?
Плюсану. Заодно и подержу тему наверху, может разрабы почитают.
Смысл в том, что редактор у Вас реально убогий (подсветка всех вхождений переменной, автозамена имени переменной/функции во всем проекте, поиск всех ссылок на переменную и тд.., в общем смотрим любую "взрослую" IDE и сравниваем). Препроцессор вроде и есть, а по факту - обрубок. По шаблонам, то же самое: non-type template-parameter отсутствует, возможность специализации шаблонов отсутствует. Может как-нибудь и развитие в этом направлении запланируете?
Перед тем как называть убогим, будьте добры написать весь список функционала редактора.
Заодно и увидите, что ваши заявления или устарели или совершенно ошибочны.
Перед тем как называть убогим, будьте добры написать весь список функционала редактора.
Заодно и увидите, что ваши заявления или устарели или совершенно ошибочны.
Редактор:
Подсветка всех вхождений переменной (может кто подскажет как это в редакторе сделать?):
Авто замена имени переменной/функции - я про это:
Поиск всех ссылок на переменную - мне не надо только этот файл или вообще все файлы каталога, мне надо показать все ссылки (аналог Shift+F12 в MVS)
Это только по моим замечаниям.
Перед тем как называть убогим, будьте добры написать весь список функционала редактора.
Заодно и увидите, что ваши заявления или устарели или совершенно ошибочны.
Вы серьёзно? Да элементарный шаблон для вашего редактора непосилен
template <typename T> class Qwerty { public: void func1() {} }; ... Qwerty<int> qwerty; qwerty.
И неужели за столько лет нельзя было добавить цветовых схем (интересует темная, терпеть не могу светлую)? А макросы в виме, жить без них не могу, ...
Но я не здесь не за развите редактора ратую, вокруг столько готовых, зачем переизобретать.
Ребята, не надо на метаэдитор напирать, реально.
Лично мне нравится.
Ну и этот вариант тоже прикольный.
Редактор:
Подсветка всех вхождений переменной (может кто подскажет как это в редакторе сделать?):
Авто замена имени переменной/функции - я про это:
Поиск всех ссылок на переменную - мне не надо только этот файл или вообще все файлы каталога, мне надо показать все ссылки (аналог Shift+F12 в MVS)
Это только по моим замечаниям.
А вызвать "это" горячими клавишами можно??? Думаю что это ctrl+h если это вообще есть. А нажать ctrl+h в редакторе mql мама не разрешает? Прежде чем предъявлять претензии попробуйте варианты не описанные в справке.
Вот с подсветкой всех переменных, согласен. Не помешает, но и без этого не смертельно. Также как и без сворачивания части кода не страдаю.
Подскажу ещё маленькую примочку: клавиши мыши "Вперёд\Назад" работают в редакторе mql как и в других приложениях.
А вызвать "это" горячими клавишами можно??? Думаю что это ctrl+h если это вообще есть. А нажать ctrl+h в редакторе mql мама не разрешает? Прежде чем предъявлять претензии попробуйте варианты не описанные в справке.
Вот с подсветкой всех переменных, согласен. Не помешает, но и без этого не смертельно. Также как и без сворачивания части кода не страдаю.
Подскажу ещё маленькую примочку: клавиши мыши "Вперёд\Назад" работают в редакторе mql как и в других приложениях.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
В общем, захотелось отказаться от metaeditor'a. Получилось весьма годно, хочу поделится.
Требования: 1. ОС - linux (для винды можно, но это не ко мне); 2 - установленная dos2unix утилита; 3 - установленный clangd(LSP сервер); 4 - пакетный менеджер vim-plug для вима https://github.com/junegunn/vim-plug. 5 - директория терминала "~/.wine/drive_c/Program Files/MetaTrader 5"; 6 - я юзаю консольный вим, как там с гуём будет - не проверял.
В прицепе необходимые файлы. Инструкция:
1. Кидаем в ~ .vimrc (ну или скопировать в свой). Запустить vim, выполнить :PlugInstall
2. Перезапустить vim, выполнить :CocConfig, скопировать туда
3. Скопировать coc.nvim_vimrc в ~/.vim/plugged/
4. Скопировать в один из PATH путей compile_mql (при необходимости смените владельца/группу, дайте права на выполнение).
5. mql компилятор отказывается компилировать, когда в путях пробелы, создаём ссылку
6. В ~/.wine/MQL5/Include создаём compile_flags.txt с содержимым (вместо YOUR_HOME_DIR вписать свою домашнюю директорию, ${HOME} не работает):
7. Кидаем в поддиректорию Include (у меня это Include/myincl) vim.mqh (он должен быть включён в каждый скрипт/эксперт).
8. В директории со скриптами/экспертами создаём compile_flags.txt с содержимым:
Вроде всё. Теперь можно вообще не касаться метаэдитора, создали файл, редактируем в виме, компилируем там же. Нужно отметить:
1. Это значительно более совершенный инструмент, чем автокомплит и смежное в метаэдиторе, clangd не запутать ни хитрой макроснёй, ни шаблонами (эдитор на шаблонах не работает даже в простых случаях). Ну и сам вим шустрее (по крайней мере эдитора через вайн).
2. Компилируем в виме через F7, просмотр результатов через :copen или :clist/:cnext/... с возможностью прыгнуть на ошибку/предупреждение, т.е. всё серьезно.
3. Сочетания по всяким кодерским фишкам (перейти к определению/...) смотреть в coc.nvim_vimrc, основное:
4. При передаче массивов в функции заменяем & на ref, иначе не будет показывать sinature help для этой функции (void examp_fn(int ref ar[]). На жалобы clang'a на на точки при разыменовывании указателей забиваем, не критично.
5. В каждый заголовочный файл делаем include guard, вроде этого:
6. clang'у не нравится #propert strict
7. Каждый пост с новой версией файлов будет обромлён хештегом #vim_as_mql_ide_X для удобного поиска среди возможного флуда, где X - версия.
8. vim.mqh содержит декларации функций/констант. Естественно, я не скопипастил всё, будет неплохо если кто-то подключится к процессу и накидает туда деклараций (но не менять форматирование существующий - отступы, комменты; для возможности лeгко сделать diff). Обновлённый vim.mqh можно выслать мне, я его солью в один и выложу.
9. В качестве шпаргалки для вима можно взять https://www.linux.org.ru/forum/general/15373588
#vim_as_mql_ide_0