www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - How to write Good IDE?

reply unDEFER <undefer gmail.com> writes:
Hello!
So my unDE 0.2.0 is released 
(http://forum.dlang.org/thread/yzfthfipouzhejfskxxp forum.dlang.org), and this
means that the time to write unDE 0.3.0 - text editor and IDE.

And I grab my head when thinking how much I want to implement.

1) It must shows unused modules
2) It must shows parts of modules which used by module
3) It must shows not caught exceptions
4) It must autocomplete always even "string".to

I have seen pretty tool from Hackerpilot (DCD, dfmt, Dscanner), 
but it doesn't cover this list.

And I think how easier may be implement such IDE? From zero, or 
maybe possible to use parts of dmd/gdc?
And what important for you for Good IDE?
Feb 01
next sibling parent FrankLike <1150015857 qq.com> writes:
On Wednesday, 1 February 2017 at 15:12:42 UTC, unDEFER wrote:
Visual Studio .net is the best,you can look at it!

Thanks.

Frank
Feb 01
prev sibling next sibling parent reply Jack Stouffer <jack jackstouffer.com> writes:
On Wednesday, 1 February 2017 at 15:12:42 UTC, unDEFER wrote:
 And what important for you for Good IDE?
Speed. That's the only reason I use sublimetext 3 and not an IDE. rant: I abhor any kind of lag, input or otherwise. I used to play tons of fighting games and character action games, and in them I was trained to feel dropped frames, which cause you to have less time to react to things on screen. Every time an IDE drops below 60 frames per second, I notice, and it feels like crap. If it takes longer than two seconds for your app to open itself or open a file, it's too slow. If the app ever drops below 60 fps while I'm entering text or scrolling down a file, it sucks. If your IDE freezes on files larger than 5 mb *cough* atom *cough*, then it sucks. end of rant
Feb 02
parent unDEFER <undefer gmail.com> writes:
On Thursday, 2 February 2017 at 15:04:10 UTC, Jack Stouffer wrote:

 Speed.
Yes, speed it will one of the main characteristic of my IDE.
Feb 02
prev sibling next sibling parent reply Chris Wright <dhasenan gmail.com> writes:
On Wed, 01 Feb 2017 15:12:42 +0000, unDEFER wrote:
 And I think how easier may be implement such IDE? From zero, or maybe
 possible to use parts of dmd/gdc?
It's awkward to use dmdfe as a library, mainly because it's not vetted to work with the GC. You *can* disable the GC, invoke dmdfe, copy out the data you need, and then enable the GC. This doesn't let you take advantage of the fact that almost all the code will be identical between two invocations. It's going to be slow. It won't necessarily get you the information you need. On the plus side, it accepts D pretty well, and someone else gets to maintain it for you. You could write your own. This is a project that might take years on its own. You could fork dmdfe, add your own fields and datastructures for things you need that aren't there already, add extra analysis that suits you, and change error handling to account for partially completed lines of code.
Feb 02
parent unDEFER <undefer gmail.com> writes:
On Friday, 3 February 2017 at 01:31:03 UTC, Chris Wright wrote:

 It's awkward to use dmdfe as a library, mainly because it's not 
 vetted to work with the GC. You *can* disable the GC, invoke 
 dmdfe, copy out the data you need, and then enable the GC.
Thank you Chris, really I don't want use dmd as library
 You could fork dmdfe, add your own fields and datastructures 
 for things you need that aren't there already, add extra 
 analysis that suits you, and change error handling to account 
 for partially completed lines of code.
The last is more possible that I want. But not with dmd, but maybe with gcc/gdc. I really don't know how to fast support several languages. And maybe first version will support only D. So.. I want to create own IDE for 6 months..
Feb 02
prev sibling next sibling parent reply Jacob Carlborg <doob me.com> writes:
On 2017-02-01 16:12, unDEFER wrote:
 Hello!
 So my unDE 0.2.0 is released
 (http://forum.dlang.org/thread/yzfthfipouzhejfskxxp forum.dlang.org),
 and this means that the time to write unDE 0.3.0 - text editor and IDE.

 And I grab my head when thinking how much I want to implement.

 1) It must shows unused modules
 2) It must shows parts of modules which used by module
 3) It must shows not caught exceptions
 4) It must autocomplete always even "string".to

 I have seen pretty tool from Hackerpilot (DCD, dfmt, Dscanner), but it
 doesn't cover this list.

 And I think how easier may be implement such IDE? From zero, or maybe
 possible to use parts of dmd/gdc?
 And what important for you for Good IDE?
The old Eclipse plugin for D1, Descent [1], is the gold standard when it comes to IDE's for D. Check the features list [2] to get some ideas and inspiration. [1] http://www.dsource.org/projects/descent [2] http://www.dsource.org/projects/descent#Features -- /Jacob Carlborg
Feb 03
parent unDEFER <undefer gmail.com> writes:
On Friday, 3 February 2017 at 12:37:53 UTC, Jacob Carlborg wrote:
 The old Eclipse plugin for D1, Descent [1], is the gold 
 standard when it comes to IDE's for D. Check the features list 
 [2] to get some ideas and inspiration.

 [1] http://www.dsource.org/projects/descent
 [2] http://www.dsource.org/projects/descent#Features
Thank you! Good links.
Feb 03
prev sibling parent reply MGW <mgw yandex.ru> writes:
On Wednesday, 1 February 2017 at 15:12:42 UTC, unDEFER wrote:
 And what important for you for Good IDE?
Simple IDE. It is possible that that is useful from this what is. I permanently use it as it is very quickly. https://www.youtube.com/watch?v=RBan5Dwt_JM https://github.com/MGWL/QtE5/tree/master/ide5
Feb 03
parent reply unDEFER <undefer gmail.com> writes:
On Friday, 3 February 2017 at 19:17:54 UTC, MGW wrote:
 On Wednesday, 1 February 2017 at 15:12:42 UTC, unDEFER wrote:
 And what important for you for Good IDE?
Simple IDE. It is possible that that is useful from this what is. I permanently use it as it is very quickly. https://www.youtube.com/watch?v=RBan5Dwt_JM https://github.com/MGWL/QtE5/tree/master/ide5
Wow, without DCD? Looking interesting. How to build ide5? $ dub build Performing "debug" build using dmd for x86_64. qte5 0.0.7: building configuration "exampleLinux"... Linking... Running post-build commands... Error load: libQtE5Widgets64.so Copying files for qte5... $ dmd -of=ide_5 ide5/ide5.d ide5/ini.d ide5/qte5prs.d source/asc1251.d source/qte5.d $ ./ide_5 -d Error load: libQtE5Widgets64.so
Feb 04
parent reply MGW <mgw yandex.ru> writes:
On Saturday, 4 February 2017 at 18:12:25 UTC, unDEFER wrote:
 On Friday, 3 February 2017 at 19:17:54 UTC, MGW wrote:
// All source files in the current folder // Все исходники в текщем каталоге ide5.d ini.d qte5prs.d asc1251.d qte5.d libQtE5Widgets64.so pr1.ini ide5sh.txt // Set current folder for load SO // Укажем загрузчику, что SO можно грузить и из текущего каталога LD_LIBRARY_PATH=`pwd`; export LD_LIBRARY_PATH; // Compile executable ide5 for 64 // Компилируем для 64 разрядного варианта dmd ide5 qte5 qte5prs asc1251 ini -release -m64 // Run ide5 with project pr1.ini // Запуск ide5 с проектом pr1.ini Без указания проекта старт невозможен ./ide5 -i pr1.ini Для общения можно использовать https://vk.com/vk_dlang
Feb 05
parent reply unDEFER <undefer gmail.com> writes:
On Sunday, 5 February 2017 at 09:20:36 UTC, MGW wrote:

 // Compile executable ide5 for 64
 // Компилируем для 64 разрядного варианта
 dmd ide5 qte5 qte5prs asc1251 ini -release -m64
$ dmd ide5 qte5 qte5prs asc1251 ini -release -m64 ide5.d(130): Error: undefined identifier 'Highlighter', did you mean variable 'highlighter'?
 Для общения можно использовать
https://vk.com/vk_dlang
I haven't vk and never will have.
Feb 05
parent reply MGW <mgw yandex.ru> writes:
On Sunday, 5 February 2017 at 10:43:38 UTC, unDEFER wrote:
 $ dmd ide5 qte5 qte5prs asc1251 ini -release -m64
 ide5.d(130): Error: undefined identifier 'Highlighter', did you 
 mean variable 'highlighter'?
Скорее всего qte5.d взята из примеров, а правильная есть: QtE5-master/source/qte5.d
 Для общения можно использовать
https://vk.com/vk_dlang
I haven't vk and never will have.
Я тоже не имею аккаута на vk.com, но это не мешает мне общаться с русcкоязычным сообществом D.
Feb 05
parent reply unDEFER <undefer gmail.com> writes:
On Sunday, 5 February 2017 at 14:37:48 UTC, MGW wrote:
 On Sunday, 5 February 2017 at 10:43:38 UTC, unDEFER wrote:
 $ dmd ide5 qte5 qte5prs asc1251 ini -release -m64
 ide5.d(130): Error: undefined identifier 'Highlighter', did 
 you mean variable 'highlighter'?
Скорее всего qte5.d взята из примеров, а правильная есть: QtE5-master/source/qte5.d
Can't load libQtE5Widgets64.so from current directory. Tried $ export LD_LIBRARY_PATH=`pwd`; ./ide5 -i pr1.ini $ export LIBRARY_PATH=`pwd`; ./ide5 -i pr1.ini $ sudo ldconfig `pwd` Nothing helps..
 Для общения можно использовать
https://vk.com/vk_dlang
I haven't vk and never will have.
Я тоже не имею аккаута на vk.com, но это не мешает мне общаться с русcкоязычным сообществом D.
Maybe is good link, but it closes tab in firefox, own and tab opened before..
Feb 05
parent reply MGW <mgw yandex.ru> writes:
On Sunday, 5 February 2017 at 16:16:42 UTC, unDEFER wrote:
 On Sunday, 5 February 2017 at 14:37:48 UTC, MGW wrote:
 Can't load libQtE5Widgets64.so from current directory.
 Tried
 $ export LD_LIBRARY_PATH=`pwd`; ./ide5 -i pr1.ini
 $ export LIBRARY_PATH=`pwd`; ./ide5 -i pr1.ini
 $ sudo ldconfig `pwd`

 Nothing helps..
Existence of Qt-5, including QScript is necessary. You have to provide existence of dependent libraries. [gena localhost qte5]$ ldd libQtE5Widgets64.so linux-vdso.so.1 (0x00007fff03a2c000) libQt5Widgets.so.5 => /lib64/libQt5Widgets.so.5 (0x00007f20b01c2000) libQt5Gui.so.5 => /lib64/libQt5Gui.so.5 (0x00007f20afd1a000) libQt5Script.so.5 => /lib64/libQt5Script.so.5 (0x00007f20afa7a000) libQt5Core.so.5 => /lib64/libQt5Core.so.5 (0x00007f20af5ea000) libGL.so.1 => /usr/lib64/libglvnd/libGL.so.1 (0x00007f20af36a000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f20af14a000) libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f20aedc2000) libm.so.6 => /lib64/libm.so.6 (0x00007f20aeab2000) libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f20ae89a000) libc.so.6 => /lib64/libc.so.6 (0x00007f20ae4d2000) libharfbuzz.so.0 => /lib64/libharfbuzz.so.0 (0x00007f20ae26a000) libz.so.1 => /lib64/libz.so.1 (0x00007f20ae052000) libpng16.so.16 => /lib64/libpng16.so.16 (0x00007f20ade1a000) libicui18n.so.57 => /lib64/libicui18n.so.57 (0x00007f20ad9a2000) libicuuc.so.57 => /lib64/libicuuc.so.57 (0x00007f20ad5f2000) libicudata.so.57 => /lib64/libicudata.so.57 (0x00007f20abb72000) libpcre16.so.0 => /lib64/libpcre16.so.0 (0x00007f20ab902000) libdl.so.2 => /lib64/libdl.so.2 (0x00007f20ab6fa000) libgthread-2.0.so.0 => /lib64/libgthread-2.0.so.0 (0x00007f20ab4f2000) libglib-2.0.so.0 => /lib64/libglib-2.0.so.0 (0x00007f20ab1da000) librt.so.1 => /lib64/librt.so.1 (0x00007f20aafd2000) libsystemd.so.0 => /lib64/libsystemd.so.0 (0x00007f20aaf42000) /lib64/ld-linux-x86-64.so.2 (0x000055c9c7ae9000) libGLX.so.0 => /lib64/libGLX.so.0 (0x00007f20aad0a000) libX11.so.6 => /lib64/libX11.so.6 (0x00007f20aa9ca000) libXext.so.6 => /lib64/libXext.so.6 (0x00007f20aa7b2000) libGLdispatch.so.0 => /lib64/libGLdispatch.so.0 (0x00007f20aa4da000) libfreetype.so.6 => /lib64/libfreetype.so.6 (0x00007f20aa21a000) libgraphite2.so.3 => /lib64/libgraphite2.so.3 (0x00007f20a9fea000) libpcre.so.1 => /lib64/libpcre.so.1 (0x00007f20a9d72000) libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f20a9b52000) libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f20a992a000) libcap.so.2 => /lib64/libcap.so.2 (0x00007f20a9722000) liblzma.so.5 => /lib64/liblzma.so.5 (0x00007f20a94fa000) liblz4.so.1 => /lib64/liblz4.so.1 (0x00007f20a92e2000) libgcrypt.so.20 => /lib64/libgcrypt.so.20 (0x00007f20a8ffa000) libgpg-error.so.0 => /lib64/libgpg-error.so.0 (0x00007f20a8de2000) libxcb.so.1 => /lib64/libxcb.so.1 (0x00007f20a8bba000) libbz2.so.1 => /lib64/libbz2.so.1 (0x00007f20a89aa000) libXau.so.6 => /lib64/libXau.so.6 (0x00007f20a87a2000)
Feb 05
parent unDEFER <undefer gmail.com> writes:
On Sunday, 5 February 2017 at 17:11:02 UTC, MGW wrote:
 On Sunday, 5 February 2017 at 16:16:42 UTC, unDEFER wrote:
 On Sunday, 5 February 2017 at 14:37:48 UTC, MGW wrote:
 Can't load libQtE5Widgets64.so from current directory.
 Tried
 $ export LD_LIBRARY_PATH=`pwd`; ./ide5 -i pr1.ini
 $ export LIBRARY_PATH=`pwd`; ./ide5 -i pr1.ini
 $ sudo ldconfig `pwd`

 Nothing helps..
Existence of Qt-5, including QScript is necessary. You have to provide existence of dependent libraries.
I have: ./libQtE5Widgets64.so: /usr/lib/x86_64-linux-gnu/libQt5Script.so.5: version `Qt_5' not found (required by ./libQtE5Widgets64.so) ./libQtE5Widgets64.so: /usr/lib/x86_64-linux-gnu/libQt5Core.so.5: version `Qt_5.6' not found (required by ./libQtE5Widgets64.so) ./libQtE5Widgets64.so: /usr/lib/x86_64-linux-gnu/libQt5Core.so.5: version `Qt_5' not found (required by ./libQtE5Widgets64.so) ./libQtE5Widgets64.so: /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5: version `Qt_5' not found (required by ./libQtE5Widgets64.so) ./libQtE5Widgets64.so: /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5: version `Qt_5' not found (required by ./libQtE5Widgets64.so) Although e.g. $ ls -l /usr/lib/x86_64-linux-gnu/libQt5Script.so.5 lrwxrwxrwx 1 root root 21 ноя 30 2015 /usr/lib/x86_64-linux-gnu/libQt5Script.so.5 -> libQt5Script.so.5.5.1 $ ls -l /usr/lib/x86_64-linux-gnu/libQt5Script.so.5.5.1 -rw-r--r-- 1 root root 2508384 ноя 30 2015 /usr/lib/x86_64-linux-gnu/libQt5Script.so.5.5.1 Seems you want Qt 5.6
Feb 05