mql의 ide로서의 Vim - 페이지 10

 
Dmitry Fedoseev :

vim이 무엇인지 묻고 싶었습니다 ...


정확히 그대로, 닫을 수 없음, 당황, 삭제됨

누가이 더러운 것을 생각해 냈는지 나는 전혀 모르고 있고 싶지도 않습니다.

 

아니, 그것은 일종의 말도 안되는 소리입니다. 왜 그는 이러한 유형의 개선으로 인해 그렇게 훼손되어야 했는가? 나는 내 공예품을 사용하기 시작했고 템플릿이 특히 비뚤어진 것으로 판명되었습니다. 이것은 호스를 크게 화나게 합니다.

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

사실 프로처럼 바보같이 하는 건 불가능했다. 일반적으로 스트림 편집기를 사용하여 코드를 필요한 형식으로 가져와 이러한 모든 칩과 싸우는 데 지쳤습니다. vim.mqh 트레일러에서 µl의 모든 선언이 있는 누군가가 유용할 것입니다.

파일:
vim.mqh  87 kb
 
Vict :

아니오, 그것은 일종의 헛소리입니다. 왜 그는 이러한 유형의 개선으로 인해 그렇게 훼손되어야 했는가? 나는 내 공예품을 사용하기 시작했고 템플릿이 특히 비뚤어진 것으로 판명되었습니다. 이것은 호스를 크게 화나게 합니다.

사실 프로처럼 바보같이 하는 건 불가능했다. 일반적으로 스트림 편집기를 사용하여 코드를 필요한 형식으로 가져와 이러한 모든 칩과 싸우는 데 지쳤습니다. vim.mqh 트레일러에서 µl의 모든 선언이 있는 누군가가 유용할 것입니다.

다른 포럼을 방문해야 할까요?
아니면 학교 식당이라는 별명 없이는 자신의 주장을 정상적으로 표현하는 방법을 모르십니까?
 

여러분, 저는 끝내기로 했습니다. 주요 변화

1. 예상대로 템플릿 클래스의 멤버 함수를 선언합니다.

template <typename Tr _, typename Cbspec _>
double Trend3_cml <Tr_, Cbspec _> ::get_breakprice() {}

2. 나는 std 파일에 대한 심각한 편집을 포기하고 활성화되었을 때 clang 분석기에서 어리석게 차단하기로 결정했습니다.

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

거기에서 유형에 대한 힌트를 원한다면 적절한 선언을 해야 합니다(필요하지 않습니다).


읽어보기 파일:

//--------------------------------------------------------------
// Описание                                                    |
//--------------------------------------------------------------
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에는 std를 제외한 모든 선언이 포함되어 있습니다. 자동 완성이 완료되었습니다.

#vim_as_mql_ide_4

파일:
 
나는 한때 C++ 프로그래머가 유연하고 밝은 마음을 가진 사람들이라고 생각했는데... 알고보니 모두가 그런 것은 아닙니다.
 
Dmitry Fedoseev :
나는 한때 C++ 프로그래머가 유연하고 밝은 마음을 가진 사람들이라고 생각했는데... 알고보니 모두가 그런 것은 아닙니다.

당신은 C++을 잘합니까? 네, 놀랐습니다.

 
Vict :

당신은 C++을 잘합니까? 네, 놀랐습니다.

프로그래밍할 대상(언어)과 IDE에서 가장 중요한 것은 환경이 아닙니다. 그리고 머리!

예를 들어 파스칼(델파이)로 프로그래밍을 하다가 ME(MT5)를 처음 만났을 때,

3분 만에 나는 이미 모국어로 프로그래밍을 하고 있었습니다.

고양이는 할 일이 없을 때 계란을 핥습니다 ...

 
prostotrader :

프로그래밍할 대상(언어)과 IDE에서 가장 중요한 것은 환경이 아닙니다. 그리고 머리!

예를 들어 파스칼(델파이)로 프로그래밍을 하다가 ME(MT5)를 처음 만났을 때,

3분 만에 나는 이미 모국어로 프로그래밍을 하고 있었습니다.

고양이는 할 일이 없을 때 계란을 핥습니다 ...

vim을 할 줄 모르는 사람들에게 설명하기는 어렵습니다. 이것은 단순한 편집자가 아니라 "노트북"에서 마우스를 조작하는 것이 해부학적으로 불편해집니다. 제 생각에는 편리한 도구가 필요합니다. 정상적인 욕망입니다.

솔직히 메타에디터 여는거 보면 코딩 의욕이 떨어지고 생산성도 떨어지는데 이 귀찮은 요소가 왜 필요한거죠?
 
Vict :

vim을 할 줄 모르는 사람들에게 설명하기는 어렵습니다. 이것은 단순한 편집자가 아니라 "노트북"에서 마우스를 조작하는 것이 해부학적으로 불편해집니다. 제 생각에는 편리한 도구가 필요합니다. 정상적인 욕망입니다.

솔직히 메타에디터 여는거 보면 코딩 의욕이 떨어지고 생산성도 떨어지는데 이 귀찮은 요소가 왜 필요한거죠?

아무것도 설명할 필요가 없습니다!

당신은 vim을 좋아합니다 - 훌륭합니다. 그것을 사용하십시오.

그러나 이것은 당신에게 충분하지 않습니다. 당신은 다른 사람들에게 당신의 견해를 강요 하기 시작했습니다.

더 이상 계속해서는 안됩니다.

 
prostotrader :

아무것도 설명할 필요가 없습니다!

당신은 vim을 좋아합니다 - 훌륭합니다. 그것을 사용하십시오.

그러나 이것은 당신에게 충분하지 않습니다. 당신은 다른 사람들에게 당신의 견해를 강요 하기 시작했습니다.

더 이상 계속해서는 안됩니다.

:) 나는 당신에게 아무 것도 부과하지 않습니다. 내 주제에 온 것은 당신입니다. 당신은 계속할지 여부를 여기에 강제로 몰아 넣은 것이 아닙니다. 나는 스스로 결정할 것입니다.