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을 좋아합니다 - 훌륭합니다. 그것을 사용하십시오.

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

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

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