Vim comme idéal pour mql - page 10

 
Dmitry Fedoseev:

Je voulais demander ce qu'est vim...


exactement ce que c'est, je n'ai pas pu le fermer, j'ai paniqué, je l'ai supprimé.

Je n'ai aucune idée de qui a inventé ce bâtard et je ne veux pas le savoir.

 

Nan, le μl est une sorte de sous-langage. Pourquoi ont-ils dû tout gâcher avec toutes ces améliorations ? J'ai commencé à utiliser mon propre truc, et il s'avère que les gabarits étaient notammentde travers, ça fait vraiment chier le tuyau :

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

Ils n'auraient pas pu le faire bêtement comme chez les pros. En général, je suis fatigué de me battre avec toutes ces puces et d'utiliser des éditeurs de flux pour modifier le code. Peut-être que quelqu'un trouvera cela utile - joint vim.mqh avec toutes les déclarations µl.

Dossiers :
vim.mqh  87 kb
 
Vict:

Nan, le μl est une sorte de sous-langage. Pourquoi ont-ils dû tout gâcher avec toutes ces améliorations ? J'ai commencé à utiliser mon propre truc, et il s'avère que les gabarits étaient notammentde travers, ça fait vraiment chier le tuyau :

Ils n'auraient pas pu le faire bêtement comme chez les pros. En général, je suis fatigué de me battre avec toutes ces puces et d'utiliser des éditeurs de flux pour modifier le code. Peut-être que quelqu'un peut trouver cela utile - joint vim.mqh avec toutes les déclarations µl.

Peut-être devriez-vous visiter un autre forum ?
Ou peut-être ne savez-vous tout simplement pas comment exprimer correctement vos revendications - sans épithètes de cantine scolaire ?
 

Les gars, j'ai décidé de le terminer. Les principaux changements sont les suivants

1) Déclarez les fonctions membres des classes modèles comme elles doivent l'être :

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

2. J'ai décidé de ne pas faire d'édition sérieuse des fichiers std, juste les couper de l'analyseur clang lorsqu'ils sont activés :

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

si vous voulez des indications de type à partir de là, vous devez faire les déclarations correspondantes (je n'en ai pas besoin).


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


HH : vim.hh contient toutes les déclarations sauf std, c'est-à-dire l'auto-complétion.

#vim_as_mql_ide_4

Dossiers :
 
J'avais l'habitude de penser que les programmeurs C++ étaient des personnes à l'esprit flexible et brillant... Il s'avère que ce n'est pas le cas de tout le monde.
 
Dmitry Fedoseev:
J'avais l'habitude de penser que les programmeurs C++ étaient des personnes à l'esprit flexible et brillant... Il s'avère que ce n'est pas le cas de tout le monde.

Pouvez-vous faire du C++ ? Oui, surprends-moi.

 
Vict:

Connaissez-vous le C++ ? Oui, tu m'as surpris.

Quelle différence cela fait-il de programmer dans quel (langage) et dans quel IDE, l'essentiel n'est pas l'environnement, mais la tête !

J'ai, par exemple, programmé en Pascal (Delphi) lorsque j'ai fait connaissance avec ME (MT5),

En trois minutes, je programmais comme dans ma langue maternelle.

Quand un chat n'a rien à faire, il se lèche les couilles...

 
prostotrader:

Quelle différence cela fait-il de programmer dans quel (langage) et dans quel IDE, l'essentiel n'est pas l'environnement, mais la tête !

J'ai, par exemple, programmé en Pascal (Delphi) lorsque j'ai fait connaissance avec ME (MT5),

En trois minutes, je programmais comme dans ma langue maternelle.

Quand un chat n'a rien à faire, il se lèche les couilles...

C'est difficile à expliquer aux personnes qui ne savent pas comment utiliser vim. Ce n'est pas seulement un éditeur et vous en devenez dépendant, il devient anatomiquement inconfortable d'effleurer avec une souris dans les " blocs-notes ". Je veux juste un outil pratique, à mon avis, un désir normal.

Honnêtement, quand je vois MetaEditor s'ouvrir, l'envie de coder diminue, ce qui nuit à la productivité, pourquoi voudrais-je ce facteur gênant ?
 
Vict:

C'est difficile à expliquer aux personnes qui ne savent pas comment utiliser vim. Ce n'est pas seulement un éditeur et on en devient dépendant, il devient anatomiquement inconfortable d'effleurer avec une souris dans les "bloc-notes". Je veux juste un outil pratique, à mon avis, un désir normal.

Honnêtement, quand je vois MetaEditor s'ouvrir, l'envie de coder diminue, ce qui affecte négativement la productivité, pourquoi voudrais-je ce facteur gênant ?

Vous n'avez pas besoin d'expliquer quoi que ce soit !

Vous aimez vim, très bien, utilisez-le,

mais ça ne vous suffit pas, vous avez commencé à imposer vos vues aux autres.

Il est inutile d'aller plus loin.

 
prostotrader:

Vous n'avez pas besoin d'expliquer quoi que ce soit !

Vous aimez vim, très bien, utilisez-le,

mais ça ne vous suffit pas, vous avez commencé à imposer vos vues aux autres.

Il n'y a pas besoin de continuer.

Je ne vous impose rien, vous êtes venu sur mon fil de discussion. On ne vous a pas forcé à venir ici, c'est à moi de décider si vous voulez continuer.