Vim como ide para mql - página 10

 
Dmitry Fedoseev:

Quería preguntar qué es vim...


exactamente lo que es, no podía cerrarlo, se asustó y lo borró.

No tengo ni idea de a quién se le ocurrió ese bastardo y no quiero hacerlo.

 

No, el μl es una especie de sub-lenguaje. ¿Por qué han tenido que estropearlo tanto con este tipo de mejoras? Empecé a usar lo mío, y resulta que las plantillas estabantorcidas en concreto, eso sí que fastidia la manguera:

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

¿No podrían haberlo hecho de forma estúpida como en los profesionales? En general estoy cansado de luchar con todas estas fichas y de usar editores de flujo para modificar el código. Tal vez alguien lo encuentre útil - adjunto vim.mqh con todas las declaraciones de µl.

Archivos adjuntos:
vim.mqh  87 kb
 
Vict:

No, el μl es una especie de sub-lenguaje. ¿Por qué han tenido que estropearlo tanto con este tipo de mejoras? Empecé a usar lo mío, y resulta que las plantillas se hicierontorcidas sobre todo, realmente molesta la manguera:

¿No podrían haberlo hecho de forma estúpida como en los profesionales? En general estoy cansado de luchar con todas estas fichas y de usar editores de flujo para modificar el código. Tal vez alguien pueda encontrarlo útil - adjunto vim.mqh con todas las declaraciones de µl.

¿Tal vez deberías visitar otro foro?
¿O tal vez no sabes cómo expresar tus afirmaciones correctamente, sin epítetos de comedor escolar?
 

Chicos, he decidido terminarlo. Los principales cambios son

1. Declarar las funciones miembro de las clases de la plantilla como deben ser:

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

2. Decidí no hacer ninguna edición seria en los archivos std, sólo cortarlos del analizador sintáctico de clang al activarlos:

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

si quieres sugerencias de tipo desde allí, tienes que hacer las declaraciones correspondientes (no las necesito).


Archivo 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 todas las declaraciones excepto std, es decir, autocompletar.

#vim_as_mql_ide_4

Archivos adjuntos:
 
Solía pensar que los programadores de C++ eran personas con una mente flexible y brillante... Resulta que no todos lo son.
 
Dmitry Fedoseev:
Solía pensar que los programadores de C++ eran personas con una mente flexible y brillante... Resulta que no todos lo son.

¿Sabes hacer C++? Sí, sorpréndeme.

 
Vict:

¿Conoces el C++? Sí, me has sorprendido.

Qué más da programar en qué (lenguaje) y en qué IDE, lo principal no es el entorno, ¡sino la cabeza!

Yo, por ejemplo, programaba en Pascal (Delphi) cuando conocí ME (MT5),

En tres minutos estaba programando como en mi lengua materna.

Cuando un gato no tiene nada que hacer, se lame las pelotas...

 
prostotrader:

Qué más da qué programación (lenguaje) y en qué IDE, lo principal no es el entorno, ¡sino la cabeza!

Yo, por ejemplo, programaba en Pascal (Delphi) cuando conocí ME (MT5),

En tres minutos estaba programando como en mi lengua materna.

Cuando un gato no tiene nada que hacer, se lame las pelotas...

Es difícil de explicar a la gente que no sabe usar vim. No es sólo un editor y te vuelves adicto a él, se vuelve anatómicamente incómodo hojear con el ratón en los "blocs de notas". Sólo quiero una herramienta práctica, en mi opinión, un deseo normal.

Sinceramente, cuando veo que se abre el MetaEditor, las ganas de codificar disminuyen, lo que afecta negativamente a la productividad, ¿por qué querría ese factor molesto?
 
Vict:

Es difícil de explicar a la gente que no sabe usar vim. No es sólo un editor y te vuelves adicto a él, se vuelve anatómicamente incómodo hojear con el ratón en los "blocs de notas". Sólo quiero una herramienta práctica, en mi opinión, un deseo normal.

Sinceramente, cuando veo que se abre el MetaEditor, las ganas de codificar disminuyen, lo que afecta negativamente a la productividad, ¿por qué querría ese factor molesto?

No necesitas explicar nada.

Si te gusta vim, bien, úsalo,

pero no te basta con eso, sino que empiezas a imponer tus puntos de vista a los demás.

No tiene sentido ir más allá.

 
prostotrader:

No necesitas explicar nada.

Si te gusta vim, bien, úsalo,

pero no te basta con eso, sino que empiezas a imponer tus puntos de vista a los demás.

No es necesario seguir.

:) No te estoy imponiendo nada, has venido a mi hilo. No te han obligado a venir aquí, que sigas o no depende de mí.