mql için bir ide olarak Vim - sayfa 10

 
Dmitry Fedoseev :

vim nedir diye sormak istedim...


aynen öyle, kapatılamadı, çıldırdı, silindi

bu sefaleti kim buldu bilmiyorum ve istemiyorum

 

Hayır, bu bir tür saçmalık. Bu tür iyileştirmelerle neden bu kadar şekil bozukluğuna uğradı? Zanaatımı kullanmaya başladım, bu yüzden şablonların özellikle çarpık yapıldığı ortaya çıktı, bu hortumu çok kızdırıyor:

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

Profesyonellerde olduğu gibi aptalca yapmak gerçekten imkansızdı. Genel olarak tüm bu chiplerle uğraşmaktan, stream editörleri ile kodu gerekli forma getirmekten bıktım. Belki birisi işe yarar - µl'nin tüm bildirimleriyle vim.mqh fragmanında.

Dosyalar:
vim.mqh  87 kb
 
Vict :

Hayır, bu bir tür saçmalık. Bu tür iyileştirmelerle neden bu kadar şekil bozukluğuna uğradı? Zanaatımı kullanmaya başladım, bu yüzden şablonların özellikle çarpık yapıldığı ortaya çıktı, bu hortumu çok kızdırıyor:

Profesyonellerde olduğu gibi aptalca yapmak gerçekten imkansızdı. Genel olarak tüm bu chiplerle uğraşmaktan, stream editörleri ile kodu gerekli forma getirmekten bıktım. Belki birisi işe yarar - µl'nin tüm bildirimleriyle vim.mqh fragmanında.

Belki başka bir forumu ziyaret etmelisin?
Yoksa okul kafeteryasının sıfatları olmadan iddialarınızı normal olarak nasıl ifade edeceğinizi bilmiyor musunuz?
 

Arkadaşlar bitirmeye karar verdim. Büyük değişiklikler

1. Şablon sınıflarının üye fonksiyonlarını beklendiği gibi ilan ediyoruz:

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

2. std dosyalarında ciddi düzenlemeleri bırakmaya karar verdim, etkinleştirildiğinde aptalca onları clang analizöründen uzaklaştırdım:

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

Oradan türler hakkında ipuçları istiyorsanız, uygun bildirimleri yapmanız gerekir (gerek yok).


BENİOKU dosyası:

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


Not: vim.hh, std dışındaki tüm bildirimleri içerir, yani. otomatik tamamlama tamamlandı.

#vim_as_mql_ide_4

Dosyalar:
 
Bir zamanlar C++ programcılarının esnek ve parlak zekaya sahip insanlar olduğunu düşünmüştüm... Görünüşe göre hepsinin öyle olmadığı ortaya çıktı.
 
Dmitry Fedoseev :
Bir zamanlar C++ programcılarının esnek ve parlak zekaya sahip insanlar olduğunu düşünmüştüm... Görünüşe göre hepsinin öyle olmadığı ortaya çıktı.

c++'da iyi misin? Evet, şaşırdım.

 
Vict :

c++'da iyi misin? Evet, şaşırdım.

Neyin programlanacağı (dil) ve hangi IDE'deki fark nedir, asıl şey çevre değildir. ve kafa!

Örneğin, ME (MT5) ile ilk tanıştığımda Pascal'da (Delphi) programlama yapıyorum,

üç dakika içinde zaten ana dilimde olduğu gibi programlama yapıyordum.

Bir kedinin yapacak bir şeyi olmadığında yumurtaları yalar...

 
prostotrader :

Neyin programlanacağı (dil) ve hangi IDE'deki fark nedir, asıl şey çevre değildir. ve kafa!

Örneğin, ME (MT5) ile ilk tanıştığımda Pascal'da (Delphi) programlama yapıyorum,

üç dakika içinde zaten ana dilimde olduğu gibi programlama yapıyordum.

Bir kedinin yapacak bir şeyi olmadığında yumurtaları yalar...

Vim'i bilmeyen insanlara anlatmak zor. Bu sadece bir editör değildir ve ona alışırsınız, "dizüstü bilgisayarlarda" fare ile oynamak anatomik olarak rahatsız edici hale gelir. Sadece uygun bir araca ihtiyacım var, bence normal bir arzu.

Dürüst olmak gerekirse, MetaEditor'un açılışını gördüğümde, üretkenliği olumsuz etkileyen kodlama isteği azalıyor, neden bu can sıkıcı faktöre ihtiyacım var?
 
Vict :

Vim'i bilmeyen insanlara anlatmak zor. Bu sadece bir editör değildir ve ona alışırsınız, "dizüstü bilgisayarlarda" fare ile oynamak anatomik olarak rahatsız edici hale gelir. Sadece uygun bir araca ihtiyacım var, bence normal bir arzu.

Dürüst olmak gerekirse, MetaEditor'un açılışını gördüğümde, üretkenliği olumsuz etkileyen kodlama isteği azalıyor, neden bu can sıkıcı faktöre ihtiyacım var?

Hiçbir şey açıklamaya gerek yok!

Vim'i seviyorsun - harika, kullan,

ama bu senin için yeterli değil, diğer insanlara kendi görüşlerini empoze etmeye başladın.

Daha fazla devam etmemelisiniz.

 
prostotrader :

Hiçbir şey açıklamaya gerek yok!

Vim'i seviyorsun - harika, kullan,

ama bu senin için yeterli değil, diğer insanlara kendi görüşlerini empoze etmeye başladın.

Daha fazla devam etmemelisiniz.

:) Sana bir şey empoze etmiyorum, konumuza siz geldiniz. Buraya zorla götürülmedin, devam edip etmemeye - kendim karar vereceğim.