Vim como ideal para mql - página 10

 
Dmitry Fedoseev:

Queria perguntar o que é vim...


exatamente o que é, não conseguia fechá-lo, assustou-se, apagou-o.

Não tenho idéia de quem inventou esse bastardo e não quero fazê-lo.

 

Não, o μl é algum tipo de sub-língua. Por que eles tiveram que bagunçar tanto com esse tipo de melhorias? Comecei a usar minha própria coisa, e acontece que os modelos eramtortuosos em particular, isso realmente irrita a mangueira:

template <typename T>
class Q {
public:
  void fn() {}
};
template <typename T> void Q<T>::fn() {}  // запрещено по плюсовому
template <typename T> void Q::fn() {}

Eles não poderiam ter feito isso estupidamente, como nos profissionais. Em geral, estou cansado de lutar com todos esses chips e de usar editores de fluxo para modificar o código. Talvez alguém o considere útil - anexar vim.mqh com todas as declarações de µl.

Arquivos anexados:
vim.mqh  87 kb
 
Vict:

Não, o μl é algum tipo de sub-língua. Por que eles tiveram que bagunçar tanto com todo esse tipo de melhorias? Comecei a usar minha própria coisa, e acontece que os modelos foram feitostortos especialmente, isso realmente irrita a mangueira:

Eles não poderiam ter feito isso estupidamente, como nos profissionais. Em geral, estou cansado de lutar com todos esses chips e de usar editores de fluxo para modificar o código. Talvez alguém o considere útil - anexar vim.mqh com todas as declarações µl.

Talvez você devesse visitar um fórum diferente?
Ou talvez você simplesmente não saiba como expressar suas reivindicações corretamente - sem epítetos da cantina da escola?
 

Rapazes, decidi terminar isto. As principais mudanças são

1. declarar as funções dos membros das classes modelo como devem ser:

template <typename Tr_, typename Cbspec_>
double Trend3_cml<Tr_, Cbspec_>::get_breakprice() {}

2. Decidi não fazer nenhuma edição séria nos arquivos std, apenas cortá-los do analisador de clang quando os liguei:

#ifndef  VIM
#include <Object.hh>
#endif

Se você quiser dicas de digitação de lá, deve fazer as declarações correspondentes (não preciso delas).


README arquivo:

//--------------------------------------------------------------
// Описание                                                    |
//--------------------------------------------------------------
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'ов в стд),
   иначе правильная работа невозможна.


HH: vim.hh contém todas as declarações exceto std, ou seja, auto-completar.

#vim_as_mql_ide_4

Arquivos anexados:
 
Eu costumava pensar que os programadores C++ eram pessoas com uma mente flexível e brilhante. Acontece que nem todos o são.
 
Dmitry Fedoseev:
Eu costumava pensar que os programadores C++ eram pessoas com uma mente flexível e brilhante. Acontece que nem todos o são.

Você pode fazer C++? Sim, me surpreende.

 
Vict:

Você conhece C++? Sim, você me surpreendeu.

Que diferença faz na programação em que (linguagem) e em que IDE, o principal não é o ambiente, mas a cabeça!

Eu, por exemplo, programei em Pascal (Delphi) quando me familiarizei pela primeira vez com ME (MT5),

Em três minutos eu estava programando como em minha língua nativa.

Quando um gato não tem nada a fazer, lambe as bolas.

 
prostotrader:

Que diferença faz qual programação (linguagem) e em qual IDE, o principal não é o ambiente, mas a cabeça!

Eu, por exemplo, programei em Pascal (Delphi) quando me familiarizei pela primeira vez com ME (MT5),

Em três minutos eu estava programando como em minha língua nativa.

Quando um gato não tem nada a fazer, lambe as bolas.

É difícil explicar às pessoas que não sabem como usar o vim. Não é apenas um editor e você fica viciado nele, torna-se anatomicamente desconfortável escumar com um mouse em 'blocos de notas'. Eu só quero uma ferramenta útil, em minha opinião, um desejo normal.

Honestamente, quando vejo o MetaEditor se abrindo, o desejo de codificar diminui, o que afeta negativamente a produtividade, por que eu iria querer esse fator irritante?
 
Vict:

É difícil explicar às pessoas que não sabem como usar o vim. Não é apenas um editor e você fica viciado nele, torna-se anatomicamente desconfortável escumar com um mouse em "blocos de notas". Eu só quero uma ferramenta útil, em minha opinião, um desejo normal.

Honestamente, quando vejo o MetaEditor se abrindo, o desejo de codificar diminui, o que afeta negativamente a produtividade, por que eu iria querer esse fator irritante?

Você não precisa explicar nada!

Você gosta de vim, tudo bem, use-o,

mas isso não é suficiente para você, você começou a impor suas opiniões a outras pessoas.

Não vale a pena ir mais longe.

 
prostotrader:

Você não precisa explicar nada!

Você gosta de vim, tudo bem, use-o,

mas isso não é suficiente para você, você começou a impor suas opiniões a outras pessoas.

Não há necessidade de continuar.

:) Não estou impondo nada a você, você veio ao meu fio condutor. Você não foi obrigado a vir aqui, se continuar ou não, depende de mim.