Which D IDE do you use?(survey)
Idan Arye via Digitalmars-d
digitalmars-d at puremagic.com
Fri Apr 10 09:16:53 PDT 2015
On Friday, 10 April 2015 at 08:02:15 UTC, Szymon Gatner wrote:
> On Tuesday, 7 April 2015 at 22:58:44 UTC, weaselcat wrote:
>> Hi, I hope nobody minds but I'm just curious as to the
>> popularity amongst D IDEs for a blog post. Sorry if I forgot
>> your favorite $editor.
>>
>> http://goo.gl/forms/MmsuInzDL0
>>
>> thanks : )
>
> In my time Vim and Emacs were just fancy text editors, not
> IDEs. Are they really IDEs now? Do they manage pojects? Do they
> autocomplete? Do they build / deploy to device with one
> keystroke? Do they support debugging (breakpoints / variable /
> registers inspection)? Do they support refactoring?
>
> Please don't take it as an attack or trolling but if they don't
> (and I am pretty sure they don't (maybe I am wrong about
> autocoplete)) they they are not Integrated Development
> Environments.
Powerful text editors like Vim and Emacs(and the more modern
ones, like Sublime, Atom etc.) are IDEs in the same sense that
UNIX is an IDE. They can't really do any of that IDE stuff
themselves, but they can delegate it to external programs, and
they can have plugins to make that go smoother.
I personally gone to great lengths to make Vim more IDE-like and
work with it to develop D code:
> Do they manage pojects?
With plugins like NERD
Tree(https://github.com/scrooloose/nerdtree) and
ctrlp(https://github.com/kien/ctrlp.vim) I can treat the current
working directory as the project, quickly navigating it's
directory tree like in most IDEs and jumping to files.
> Do they autocomplete?
Vim comes with many general-purpose autocompletion options -
words in opened files, tags, filenames, whole lines, static
dictionaries based on the filetype etc.
Vim also allows to create a Vimscript function for
autocompletions, which means that if there is some extrnal
utility that provides autocompletion service for your language,
you can delegate autocompletion to it. In D's case we have
DCD(https://github.com/Hackerpilot/DCD), and
Dutyl(https://github.com/idanarye/vim-dutyl) can get
autocompletions from it.
> Do they build / deploy to device with one keystroke?
If you can do it via command line, you can create a keybind for
running that command line. Since that command can be different
between different projects - not to mention different programming
languages! - I've created
Integrake(https://github.com/idanarye/vim-integrake), which
allows me to quickly create and manage small pieces of Ruby code
I can use to build the project, deploy it to device, run it,
pretty much everything. Since the command to run an Integrake
task is always the same(assuming I name the task the same), I can
easily create global key-binds for them do them with a single
keystroke. Sure, when creating the project I need to write that
command once - but that's an extremely low overhead that I only
need to do when I create the project or when I want to change the
build flags or stuff.
Actually, in my case it's two keystrokes - but that's a matter of
personal preferences(first key stroke is the prefix, then I have
the full ABC * modifier keys to map to the different tasks(and
theoretically numbers and symbols - but I haven't reached the
point I have so many tasks to map that I need to use those, and
it's easier to remember that "b" = "build" and "d" = "deploy"
than to guess what "1" means...)
> Do they support debugging (breakpoints / variable / registers
> inspection)?
Since D can be debugged with GDB, I can use
Vebugger(https://github.com/idanarye/vim-vebugger) to set
breakpoints, inspect variables etc. It doesn't have a full
feature-set yet(mainly because I'm too lazy to develop them...),
but it will. Someday. Probably...
> Do they support refactoring?
Don't even need plugins for that(though there are many plugins
that improve this aspect) - Vim's text manipulation features are
second to none, and once you get used to modal editing and get
your muscles to memorize the keymaps, you you refactor far more
flexibly than what your IDE's developers decided to implement and
put in the Edit->Refactor menu.
More information about the Digitalmars-d
mailing list