Не, мкл это какой-то недоязык. Зачем его надо было так уродовать этими типа улучшениями? Начал юзать свою поделку, так оказалось, что и шаблоны сделали криво особенно, это сильно выбешивает шланг:
Неужели нельзя было тупо сделать как в плюсах. В общем надоело бороться со всеми этими фишками, приводить код потоковыми редакторами в потребный вид. Может кому пригодится - в прицепе vim.mqh со всеми декларациями мкл.
Не, мкл это какой-то недоязык. Зачем его надо было так уродовать этими типа улучшениями? Начал юзать свою поделку, так оказалось, что и шаблоны сделали криво особенно, это сильно выбешивает шланг:
Неужели нельзя было тупо сделать как в плюсах. В общем надоело бороться со всеми этими фишками, приводить код потоковыми редакторами в потребный вид. Может кому пригодится - в прицепе vim.mqh со всеми декларациями мкл.
Может вам лучше другой форум посещать?
Или просто вы не умеете нормально выражать свои претензии - без эпитетов школьной столовой?
2. Решил отказаться от серьёзных правок в стд файлы, тупо отгородить их от clang анализатора при включении:
#ifndef VIM
#include <Object.hh>
#endif
если хочется подсказки по типам оттуда, то нужно делать соответствующие декларации (мне не надо).
README файл:
//--------------------------------------------------------------
// Описание |
//--------------------------------------------------------------
1. Компиляция (общая схема процесса)
F7->clang препроцессор->правка исходников потоковыми
редакторами(во временном файле)->mql препроцессор/компилятор.
Просмотр ошибок :copen или :clist
2. Правка исходников. Цель - максимально писать в c++ подобном
стиле (дабы угодить clang анализатору, да и приятней как-то),
для этого (исходники правятся автоматически при каждой
компиляции, во временном файле):
* меняем -> на .
* добавляется амперсанд при передаче массива в функцию
* убираем угловые скобки при объявлении функции-члена
шаблонного класса (во второй строке)
-------------code begin-----------
template <typename Tr_, typename Cbspec_>
double Trend3_cml<Tr_, Cbspec_>::get_breakprice() {}
void f(Type ar[]) {}
ptr->call()
-------------code end-------------
3. Рекомендую использовать расширение hh для заголовочных
файлов, так будет подсказка при вводе имени файла при
его включении.
4. Запись мкл специфичных конструкций
Во время написания кода в виме определён макрос VIM,
благодаря которому можно прятать от clang анализатора
ошибочные (с его точки зрения) конструкции:
-------------code begin-----------
#ifndef VIM
input int i; // input мкл специфичная
#else
int i;
#endif
-------------code end-------------
В такое же макроусловие оборачиваем включение файлов
стандартной библиотеки (там может быть что угодно,
clang анализатор может споткнуться).
-------------code begin-----------
#ifndef VIM
#include <Object.hh>
#endif
-------------code end-------------
5. Передача директив мкл препроцессору. Во время правки
исходников префикс mqlcpp_ будет удалён.
-------------code begin-----------
#ifndef VIM
mqlcpp_#property strict
#endif
-------------code end-------------
6. При первой компиляции в файлы стандартной библиотеки
добавляются include guard'ы (первая компиляция - нет
guard'а в Object.mqh). Пользовательские файлы не
модифицируются, поддиректории MQL/Include с пользовательскими
данными задаются через compile_mql::user_include_subdir. В свои
mqh добавлять guard'ы самостоятельно. Также при первой
компиляции будет изменено расширение файлов стд на hh,
если compile_mql::subst_std_extension='1'.
7. Подавление предупреждений мкл компилятора. Коды
предупреждений задаются через compile_mql::waring_black_list
8. Автокомплит, переход к определению, ... реализованы через
clangd(lsp сервер)<-->coc(lsp клиент). Основные сочетания
клавиш
gd - defenition
gy - type defenition
gy - implementation
gr - reference
K - show documentation
[g - diagnost previous
]g - diagnost next
<leadir>rn - rename (у меня leadir - ,)
<space>a - diagnost list
<space>o - outline list
<space>s - symbol list
9. Кодировка исходников должна быть utf-8 (mqh из std
конвертируются автоматически). Для пользовательских файлов
$ dos2unix file1 file2 ...
//--------------------------------------------------------------
// Установка |
//--------------------------------------------------------------
1. Зависимости: clang, clangd, dos2unix, nodejs, neovim
2. Cоздаём ссылку без пробелов на Meta Trader/MQL, указываем
путь к ссылке в compile_mql::mql_link
(дефолтно mql_link="$HOME/.wine/MQL5")
3. Копируем файлы в соответствующие директории (compile_mql, ..).
vim.hh кидаем в поддиректорию Include (у меня это
Include/myincl) (он должен быть включён в каждый
скрипт/эксперт).
4. В виме выполнить :PlugInstall
5. В MQL/Include создаём compile_flags.txt с содержимым (вместо
YOUR_HOME_DIR вписать свою домашнюю директорию, ${HOME} не
работает):
-xc++-header
-IYOUR_HOME_DIR/.wine/MQL5/Include
-DVIM
6. В директории со скриптами/экспертами создаём
compile_flags.txt с содержимым:
-xc++
-IYOUR_HOME_DIR/.wine/MQL5/Include
-DVIM
7. Правим compile_mql::user_include_subdir (дефолтно ''),
делаем компиляцию чего-нибудь (для вставки guard'ов в стд),
иначе правильная работа невозможна.
ЗЫ: vim.hh содержит все мкл декларации кроме стд, т.е. автодополнение полноценное.
Какая разница на чем программировать (язык) и в каком IDE, главное не среда. а голова!
Я, например, программирую на Паскале (Делфи), когда в первый раз познакомился с МЕ (МТ5),
через три минуты уже программировал как на родном.
Когда коту делать нечего, он яйца лижет...
Сложно объяснить людям, которые vim не умеют. Это не просто редактор и к нему прирастаешь, юлозить мышью в "блокнотах" становится анатомически некомфортно. Мне просто нужен удобный инструмент, по-моему, нормальное желание.
Честно, когда вижу открывающийся МетаЭдитор, то желание кодить убавляется, что отрицательно сказывается на продуктивности, зачем мне этот раздражающий фактор?
Сложно объяснить людям, которые vim не умеют. Это не просто редактор и к нему прирастаешь, юлозить мышью в "блокнотах" становится анатомически некомфортно. Мне просто нужен удобный инструмент, по-моему, нормальное желание.
Честно, когда вижу открывающийся МетаЭдитор, то желание кодить убавляется, что отрицательно сказывается на продуктивности, зачем мне этот раздражающий фактор?
Не нужно ничего объяснять!
Вам нравится vim, - отлично, пользуйтесь,
но Вам этого мало, Вы начали навязывать свои взгляды другим людям.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Хотел спросить что такое вим...
точно так и есть, не смог закрыть, психанул, удалил
кто придумал это убожество понятия не имею и не хочу
Не, мкл это какой-то недоязык. Зачем его надо было так уродовать этими типа улучшениями? Начал юзать свою поделку, так оказалось, что и шаблоны сделали криво особенно, это сильно выбешивает шланг:
Неужели нельзя было тупо сделать как в плюсах. В общем надоело бороться со всеми этими фишками, приводить код потоковыми редакторами в потребный вид. Может кому пригодится - в прицепе vim.mqh со всеми декларациями мкл.
Не, мкл это какой-то недоязык. Зачем его надо было так уродовать этими типа улучшениями? Начал юзать свою поделку, так оказалось, что и шаблоны сделали криво особенно, это сильно выбешивает шланг:
Неужели нельзя было тупо сделать как в плюсах. В общем надоело бороться со всеми этими фишками, приводить код потоковыми редакторами в потребный вид. Может кому пригодится - в прицепе vim.mqh со всеми декларациями мкл.
Ребят, решил допилить. Основные изменения
1. Объявляем функции-члены шаблонных классов как положено:
2. Решил отказаться от серьёзных правок в стд файлы, тупо отгородить их от clang анализатора при включении:
если хочется подсказки по типам оттуда, то нужно делать соответствующие декларации (мне не надо).
README файл:
ЗЫ: vim.hh содержит все мкл декларации кроме стд, т.е. автодополнение полноценное.
#vim_as_mql_ide_4
Когда-то думал, что с++ программисты, это люди с гибким и светлым разумом... Оказывается не все.
Ты умеешь с++? Да, удивил.
Ты умеешь с++? Да, удивил.
Какая разница на чем программировать (язык) и в каком IDE, главное не среда. а голова!
Я, например, программирую на Паскале (Делфи), когда в первый раз познакомился с МЕ (МТ5),
через три минуты уже программировал как на родном.
Когда коту делать нечего, он яйца лижет...
Какая разница на чем программировать (язык) и в каком IDE, главное не среда. а голова!
Я, например, программирую на Паскале (Делфи), когда в первый раз познакомился с МЕ (МТ5),
через три минуты уже программировал как на родном.
Когда коту делать нечего, он яйца лижет...
Сложно объяснить людям, которые vim не умеют. Это не просто редактор и к нему прирастаешь, юлозить мышью в "блокнотах" становится анатомически некомфортно. Мне просто нужен удобный инструмент, по-моему, нормальное желание.
Честно, когда вижу открывающийся МетаЭдитор, то желание кодить убавляется, что отрицательно сказывается на продуктивности, зачем мне этот раздражающий фактор?Сложно объяснить людям, которые vim не умеют. Это не просто редактор и к нему прирастаешь, юлозить мышью в "блокнотах" становится анатомически некомфортно. Мне просто нужен удобный инструмент, по-моему, нормальное желание.
Честно, когда вижу открывающийся МетаЭдитор, то желание кодить убавляется, что отрицательно сказывается на продуктивности, зачем мне этот раздражающий фактор?Не нужно ничего объяснять!
Вам нравится vim, - отлично, пользуйтесь,
но Вам этого мало, Вы начали навязывать свои взгляды другим людям.
Не стоит продолжать далее.
Не нужно ничего объяснять!
Вам нравится vim, - отлично, пользуйтесь,
но Вам этого мало, Вы начали навязывать свои взгляды другим людям.
Не стоит продолжать далее.
:) я вам ниего не навязываю, это вы пришли в мою тему. Вас сюда насильно не гнали, продолжать ли - решу сам.