Vim come ide per mql - pagina 10

 
Dmitry Fedoseev:

Volevo chiedere che cosa è vim...


esattamente cos'è, non riuscivo a chiuderlo, mi sono spaventato e l'ho cancellato.

Non ho idea di chi abbia inventato quel bastardo e non voglio saperlo.

 

No, il μl è una specie di sotto-lingua. Perché hanno dovuto rovinare tutto con questo tipo di miglioramenti? Ho iniziato a usare le mie cose, e si è scoperto che le sagome eranostorte in particolare, fa veramente incazzare il tubo:

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

Non potevano farlo in modo stupido come nei professionisti. In generale sono stanco di lottare con tutti questi chip e di usare editor di flussi per modificare il codice. Forse qualcuno lo troverà utile - allegato vim.mqh con tutte le dichiarazioni di µl.

File:
vim.mqh  87 kb
 
Vict:

No, il μl è una specie di sotto-lingua. Perché hanno dovuto rovinare tutto con questo tipo di miglioramenti? Ho iniziato a usare le mie cose, e si è scoperto che le sagome eranostorte in particolare, fa veramente incazzare il tubo:

Non potevano farlo in modo stupido come nei professionisti. In generale sono stanco di lottare con tutti questi chip e di usare editor di flussi per modificare il codice. Forse qualcuno può trovarlo utile - allegato vim.mqh con tutte le dichiarazioni µl.

Forse dovresti visitare un altro forum?
O forse non sai come esprimere correttamente le tue affermazioni - senza epiteti da mensa scolastica?
 

Ragazzi, ho deciso di finirlo. I principali cambiamenti sono

1. Dichiarare le funzioni membro delle classi modello come dovrebbero essere:

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

2. Ho deciso di non fare alcuna modifica seria ai file std, semplicemente li ho tagliati fuori dal parser di clang quando li ho attivati:

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

se volete dei suggerimenti di tipo da lì, dovete fare delle dichiarazioni corrispondenti (non ne ho bisogno).


File 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 contiene tutte le dichiarazioni tranne std, cioè il completamento automatico.

#vim_as_mql_ide_4

File:
 
Ero solito pensare che i programmatori C++ fossero persone con una mente flessibile e brillante... Si scopre che non tutti lo sono.
 
Dmitry Fedoseev:
Ero solito pensare che i programmatori C++ fossero persone con una mente flessibile e brillante... Si scopre che non tutti lo sono.

Sai fare il C++? Sì, lo so.

 
Vict:

Conosci il C++? Sì, mi hai sorpreso.

Che differenza fa programmare in quale (linguaggio) e in quale IDE, la cosa principale non è l'ambiente, ma la testa!

Io, per esempio, programmavo in Pascal (Delphi) quando ho iniziato a conoscere ME (MT5),

In tre minuti stavo programmando come nella mia lingua madre.

Quando un gatto non ha niente da fare, si lecca le palle...

 
prostotrader:

Che differenza fa programmare in quale (linguaggio) e in quale IDE, la cosa principale non è l'ambiente, ma la testa!

Io, per esempio, programmavo in Pascal (Delphi) quando mi sono avvicinato a ME (MT5),

In tre minuti stavo programmando come nella mia lingua madre.

Quando un gatto non ha niente da fare, si lecca le palle...

È difficile da spiegare alle persone che non sanno come usare vim. Non è solo un editor e ne diventi dipendente, diventa anatomicamente scomodo scremare con il mouse in 'notepad'. Voglio solo uno strumento pratico, secondo me, un desiderio normale.

Onestamente, quando vedo aprirsi MetaEditor, la voglia di codificare diminuisce, il che influisce negativamente sulla produttività, perché dovrei volere questo fattore fastidioso?
 
Vict:

È difficile da spiegare alle persone che non sanno come usare vim. Non è solo un editor e ne diventi dipendente, diventa anatomicamente scomodo scremare con il mouse in "notepad". Voglio solo uno strumento pratico, secondo me, un desiderio normale.

Onestamente, quando vedo aprirsi MetaEditor, la voglia di scrivere codice diminuisce, il che influisce negativamente sulla produttività, perché dovrei volere questo fattore fastidioso?

Non c'è bisogno di spiegare nulla!

Ti piace vim, bene, usalo,

Ma questo non ti basta, hai iniziato a imporre le tue opinioni agli altri.

Non ha senso andare oltre.

 
prostotrader:

Non c'è bisogno di spiegare nulla!

Ti piace vim, bene, usalo,

Ma questo non ti basta, hai iniziato a imporre le tue opinioni alle altre persone.

Non c'è bisogno di continuare.

:) Non ti sto imponendo nulla, sei venuto nel mio thread. Non sei stato costretto a venire qui, se continuare o meno dipende da me.