Favorite Linux-resident free editor/IDE for wide range of development projects? - Page 1
Forum section: electronics / general

author: cdev
author_rank: Super Contributor
timestamp: October 07, 2018, 11:20:35 pm
content: I am on Linux. I'm looking for an all around build environment which makes tracking down problems easier/faster. The problem is, I still have not found an IDE that I like.Any suggestions?I already have a tool I like for Python but unfortunately its Python only. Basically I am looking for a smarter editor, (IDE) but not too smart, (in that I hate tools that try to take over and do everything their way.) I would love it is they could work with my existing structure (folders and I just use Unix 'make' - without adding "project files" everywhere.

author: kaevee
author_rank: Regular Contributor
timestamp: October 08, 2018, 12:19:26 am
content: Checkout Visual Studio Code athttps://code.visualstudio.com/VSCode is pretty amazing and does not get in your way like many other editors/IDE's. Further, one can easily integrate with Make and GDB. You can also customize it if need.Edit:VSCode connects to many source control systems. Further, the fonts are easy on eyes, out of the box, compared to other IDE's in Linux.

author: lucazader
author_rank: Regular Contributor
timestamp: October 08, 2018, 12:21:18 am
content: I use VSCode.Simple and powerful. You can use it as a glorified text editor, right the way up to a full development IDE. Just depends on what plugins you use.Can handle pretty much any language.Really easily hooks into existing projects. Easy to setup pretty much command-line task and run from in the ide, eg building code etc.The biggest pain is to setup the include paths. This is trivial if your compilation process spits out a compile_commands.json.If it doesn't then use a tool like compiledb (open source, can fid it on github, but also can just install using pip install compiledb).I'm sure others will have other opinions on this topic, it will always be pretty heated when it comes to peoples favourite IDE etc.This is just what I use and am used to.Other suggestion:Clion (or other jetbrains tools like pycharm).Can be a bit harder to setup (especially clion if you project doesn't use cmake), however the editor is pretty powerful and their autocomplete and refactoring and source browsing is pretty good.I would suggest installing a few. See how easy they are to setup and get running with your workflow and see what works best for you!

author: cv007
author_rank: Frequent Contributor
timestamp: October 08, 2018, 12:45:41 am
content: I'm not sure if this would do what everything you want, but I use KDevelop as a text editor- just to have a number of tabs open and a file explorer pane to chose files. There is much more to it though, and you may want to take a peek at it.

author: kaevee
author_rank: Regular Contributor
timestamp: October 08, 2018, 12:57:38 am
content: Quote from: lucazader on October 08, 2018, 12:21:18 amYou are right. Everyone has their own favorites and Vim has been mine for all these years.I have been working on Linux for more than two decades. I have tried using many IDE/editors but always went back to Vim, which is probably one of the very few editors where I could work without touching mouse. Vim has been my go to editor/IDE for 23 years and I still use it for all non development editing tasks.As an after thought, I would suggest the OP should look at Vim too. Vim works great with Make and GDB.

author: rjp
author_rank: Regular Contributor
timestamp: October 08, 2018, 01:02:37 am
content: + VSCode.its brilliant, doesnt get in the way with its own stupid project system and ctrl ~ toggles a builtin command shell with history so its very linux friendly.I used to be a VIM fiend and still enjoy it but it became tedious swapping between windows and linux all the time for work reasons.VSCode is almost identical on both platforms, which is a pleasant change.

author: newbrain
author_rank: Super Contributor
timestamp: October 08, 2018, 10:32:30 am
content: Quote from: rjp on October 08, 2018, 01:02:37 amAnother vote for VS code here.VS code is the only editor that managed to make me switch from Emacs. I, in fact, find vi(m) quite fiendish.Nice themes (monokai FTW!)Decent and freely configurable key bindings.Very good git and shell/powershell integration.Not difficult to set up your own compilation rules.Reasonable debugging (with the native debugging extension for embedded).Open source-ish - but read the fine print, it's still Microsoft...They actually listen to bugs and proposals.OT: rjp: thanks for teaching me a new meaning offiend (5), I'd only met the 'evil' ones till now (and thought it was a typo for friend, at first)!

author: technix
author_rank: Super Contributor
timestamp: October 08, 2018, 11:16:38 am
content: This might not be what you want though since minimal project files is almost always required, but for me I use Eclipse a lot, mainly CDT since I develop for ARM Cortex-M. The plus for me is actually debugger integration if you have set up the project files properly.

author: cdev
author_rank: Super Contributor
timestamp: October 08, 2018, 01:41:32 pm
content: Some great suggestions here. Thank you. I am looking into them.

author: hans
author_rank: Super Contributor
timestamp: October 08, 2018, 02:50:26 pm
content: Another vote for VScode. It's my default code editor.It has also served me pretty well for more "obscure" languages like Haskell, where it had proper syntax highlighting, autocompletion and the local console allowed me to run programs (there is no such thing as "debugging" in Haskell, though).However, if my projects start to span more than a handful of files, I usually go to an IDE like PyCharm, CLion or else. I got an academic license for all Jetbrain tools, however if have an use for all of their IDE programs (and code a lot) their private license doesn't look that expensive IMO.

author: dgtl
author_rank: Regular Contributor
timestamp: October 08, 2018, 02:58:29 pm
content: I've been using Eclipse with CDT plugin for ages. Eclipse is used for multiple uc vendors dev environment as well, so once i've got used to that, I don't have to learn multiple environments.

author: agehall
author_rank: Frequent Contributor
timestamp: October 08, 2018, 03:22:59 pm
content: I've been a die-hard Emacs user since the mid '90s but these days I'm pretty much converted to Visual Studio Code. It is a freaking amazing editor.

author: bd139
author_rank: Super Contributor
timestamp: October 08, 2018, 03:25:25 pm
content: Linux is the IDE. An editor is part of Linux. The relationship is "different". It's not a monolithic black box that sites inside the OS but the OS itself. An editor is I've used Vim for about, err 20 years. Now I'm feeling old. It's the only thing that has been consistent enough to use over that period, reliable and doesn't stick any appendages in your eye at any point. Lots of extensions for code completion, debugging, VCS, project management if you want that stuff but I've always found it better if all the tools are entirely separate. Being able to compose those on the fly is insanely powerful.I refuse to use VScode. It is a risk. I did a full technical evaluation of it from a fintech company. Telemetry is enabled by default which leaks your information out and you have to unconfigure it. Then they break it occasionally (seehttps://github.com/Microsoft/vscode/issues/49161as a reference). I can't logically support any companies that run opt-out as it's a risk from an IP perspective. Same goes for .net core. Pervasive telemetry in your development tooling is a higher risk than anything else IMHO.

author: SiliconWizard
author_rank: Super Contributor
timestamp: October 08, 2018, 04:27:18 pm
content: Quote from: bd139 on October 08, 2018, 03:25:25 pmI wouldn't have touched it anyway, but thanks for the warning.

author: nctnico
author_rank: Super Contributor
timestamp: October 08, 2018, 04:33:14 pm
content: Quote from: dgtl on October 08, 2018, 02:58:29 pmSame here. For any language I have come across.

author: rstofer
author_rank: Super Contributor
timestamp: October 08, 2018, 05:42:54 pm
content: For a fully integrated solution, I like Eclipse and the various plug-ins. For command line, I like gedit and make. I can use vi if I'm really desperate but gedit works well.One of the nice things about the newer versions of Eclipse is that it creates the makefile. You just keep adding source files (and directories of source files) and Eclipse does the rest (using the CDT plug-in, I suspect). I also use the Photron plug-in for Fortran projects.Eclipse just keeps getting better and better. And a lot of people hate it...

author: technix
author_rank: Super Contributor
timestamp: October 08, 2018, 05:52:58 pm
content: Quote from: bd139 on October 08, 2018, 03:25:25 pmIf this is the case, you should stay clear of any Microsoft products since the release of Windows 8.1. Maybe this is a China thing, but Windows 10 has a bad habit of autoenabling telemetry upon every boot even though I have already installed telemetry blocking tools like Spybot Anti-Beacon, and the telemetry fells as if it is a system-level keylogger.Quote from: dgtl on October 08, 2018, 02:58:29 pmFor me it is vanilla Eclipse CDT + GNU MCU Eclipse all the way, regardless of vendor.Since my main development environment is actually macOS, I have sunk a lot of time in Xcode and TextWrangler actually. Sadly those are not cross platform capable. (One perk of Xcode is that its code sense is actually built on top of libclang, so it has exactly the same AST capability as the actual compiler, and one of its compile acceleration option is actually Xcode passing its already-parsed AST to clang for direct code generation, eats RAM during regular work but debug compile is almost just a pass of optimizer and assembler on whatever is already loaded.)

author: dgtl
author_rank: Regular Contributor
timestamp: October 08, 2018, 06:25:08 pm
content: Quote from: technix on October 08, 2018, 05:52:58 pmGoing into details:* Vanilla Eclipse + CDT for linux-based stuff.* GNU MCU Eclipse for microcontroller projects - usually, I'm not using any of the vendor stuff in later stages after some quick prototyping.* SVeditor - for systemverilog and VHDL* git, svn, cvs* python plugins for python development* nfc eclipse plugin - for NDEF test tag generation (not working in later versions).The major issues are:* quite a lot of setup for mcu projects to get code assist and syntax highlighting properly working. Our projects have fixed compiler toolchains (not the rolling version arm-none-eabi-gcc) and each project workspace takes a lot of clicking around to get the toolchain and discovery settings working. It would help if the project could have a simple settings file to import in addition to the large .project, .cproject etc files. Committing the whole project settings or workspace is not an option, tends to break between different eclipse versions or computer installations in multi-developer environment. Currently, we have documented the procedure and with every project first creation just follow it to get started.* quite a lot of clicking around to get the debugging working (openocd+stlink, jlink or whatever). Again, a config file to store with project would help.* some issues with indexer time-to-time. Gets broken, needs reindex.* why can't the thing properly handle very long files, ie microcontroller register headers etc. All of this compability mode stuff.* gdb remote output goes nowhere. Monitor command replies etc. Ie blackmagic probe sends its semihosting stdout there.* extending one eclipse window over 2 2k monitors gets very sluggish, unusable. I like having 4 editors side by side; for this I have to undock the other two editors to separate window. Not a big deal now, but I hope it gets improved once 4k monitors come around.* gnu arm eclipse - packs feature. Refreshing the packs list takes ages. I just want to get the mcu peripheral register spec of one mcu for the debugger, I don't want to download the whole world.These are just annoyances. Other than that it works well and it helps a lot compared to non-crossreferenced plain text editors.

author: bd139
author_rank: Super Contributor
timestamp: October 08, 2018, 06:32:06 pm
content: Big problem I had with CDT was it only crawls to a halt in larger projects. I had a 20MLoC C++ behemoth and it wouldn’t even open the thing on less than an E5 Xeon box with a stack of ram.Quote from: technix on October 08, 2018, 05:52:58 pmYes it’s a nightmare. It’s not specific to China. Our builds are like it as well. You have to pay for enterprise edition to make it go away.

author: SiliconWizard
author_rank: Super Contributor
timestamp: October 08, 2018, 06:55:42 pm
content: Any sane person should not use Windows 10. Microsoft's motto these days is: "All your computers are belong to us" (remember:https://en.wikipedia.org/wiki/All_your_base_are_belong_to_us)Beside the obnoxious telemetry, forced-up-your-ass updates (unless you buy the most expensive licenses) and overall UI inconsistencies, there are regular funny hiccups:https://www.engadget.com/2018/10/06/windows-10-october-update-delete-pulled/

author: legacy
author_rank: Super Contributor
timestamp: October 08, 2018, 07:29:02 pm
content: geany, modified to be run on pseudo-colors x11-terminalsOut of the box, it runs on GTK2 x11. I am using it for everything, from Linux, to MPUs.I am also trying to embed DOS-compilers into a sort of CLI-dosbox to be used with Geany.

author: arno
author_rank: Contributor
timestamp: October 08, 2018, 07:39:00 pm
content: Hi,afaik, nobody mentioned Atom, yet.https://atom.io/BRArno

author: SiliconWizard
author_rank: Super Contributor
timestamp: October 08, 2018, 08:01:44 pm
content: Quote from: legacy on October 08, 2018, 07:29:02 pmThis is also what I use on Linux. On Windows I use some other editor (in-house software), but I have a compiled Geany (GTK3) binary for Windows that runs fine.

author: HB9EVI
author_rank: Frequent Contributor
timestamp: October 08, 2018, 08:08:48 pm
content: Right now I'm using Eclipse for my mcu projects; unfortunatelly the responsiveness is not very well on my older laptop, what makes compiling a bit of a pain in the neck; I'll give VCS a try as nextFor C or python I'm using either emacs or vi - most often vi is the choice since I'm used to it from the very beginning of my linux days editing config files

author: nctnico
author_rank: Super Contributor
timestamp: October 08, 2018, 08:22:39 pm
content: Quote from: HB9EVI on October 08, 2018, 08:08:48 pmThe performance of Eclipse can be improved a lot by changing the theme (preferences -> general -> appearance) in some cases. On Linux I always switch to the classic theme.

author: Karel
author_rank: Super Contributor
timestamp: October 08, 2018, 08:30:29 pm
content: I have been using Kate for many years. Tried some others as well but always went back to Kate.https://kate-editor.org/

author: technix
author_rank: Super Contributor
timestamp: October 08, 2018, 09:16:32 pm
content: Quote from: bd139 on October 08, 2018, 06:32:06 pmFor me I just disable scalability option entirely and open that kind of project only on my own dual Xeon E5 box with 128GB of RAM. When the project is loading I would stand up and and move around, usually after a bit of stretching and a chug of water it would load.I kind of wish that someone would create an open source IDE that makes use of libclang and liblldb. Xcode can deal with projects of that scale with ease thanks to that really.

author: malagas_on_fire
author_rank: Frequent Contributor
timestamp: October 08, 2018, 09:16:44 pm
content: For all code editing ... yeahh all with GVIM / vi / vimI tend to use the minimal editors possible to develop on the go for embedded linux systems or desktop. For microcontrollers it is accetable to use the provided IDE since it offers development speed

author: westfw
author_rank: Super Contributor
timestamp: October 08, 2018, 09:24:10 pm
content: I still mostly use Emacs, CLI tools, and Make.EMACS *could* be a lot more integrated than the way I usually use it. TAGS and the IDTOOLS are extremely useful on big projects (they give you functions similar to the "go to definition" present in IDE, but with a greater degree of customization possile.) it has a "compile" command that I COULD bind to a key, but I'm too comfy with that shell window.Emacs interfaces to GDB pretty well, and GDB can at least theoretically interface to modern debug hardware (JTAG/etc.)I haven't actually debugged any small microcontrollers with GDB in Emacs; debugging seems to come in three flavors: so low-level that you really want the vendor debug software, intermediate where print() is as useful as a "real debugger", and so high-level that you might as well compile it for your native system and debug there.unix-like CLI tools have the advantage of being REALLY portable, for the most part.

author: legacy
author_rank: Super Contributor
timestamp: October 08, 2018, 10:02:24 pm
content: Quote from: westfw on October 08, 2018, 09:24:10 pmWhat I really missed (note the past) was a tool able to create a Makefile from a description of the project, resolving dependencies of local modules to automatically generate every module interface (private, public, and dependencies), for both local modules (part of the project) and shared modules in libraries. I had to implement it my self. It's CLI based, you edit a file which describes the project, you invoke this tool on the shell, and it creates a neat Makefile.It only works for C and Ada. C++ can't be supported yet.

author: legacy
author_rank: Super Contributor
timestamp: October 08, 2018, 10:17:37 pm
content: Quote from: westfw on October 08, 2018, 09:24:10 pmThe reason why I use Emacs (for a hobby) is that it can directly interface a VT100/V220 terminal. I am not talking about virtual VT100 made, for example, with Linux teletype emulation, I am talking about real and genuine VT100 and VT200 terminals, like my DIGITAL VT for which Emacs is able to prepare a correct sequence of ESC-commands for the terminal, without wasting the bandwidth of a 19200bps half-duplex link.

author: legacy
author_rank: Super Contributor
timestamp: October 08, 2018, 10:27:42 pm
content: Quote from: SiliconWizard on October 08, 2018, 08:01:44 pmWith GTK3 is even more problematic on pseudocolor X-terminal (e.g. Tektronix XP217), and colors get a mess. I had to go back to GTK2, and then to remove every full-color support.In short, I took only the Scintilla kernel of Geany, building a lot of stubs for all the graphical support, forcing it to run like if it was an openMotif Application with 4 bit of colors. And it works perfectly on my Tektronix. The reason is simple: with Gtk2 developers completely dropped the support for pseudo-colors. It happened more than 10 years ago.On Windows XP I prefer to export Geany from a Linux virtual machine via MabaXterm. Never tried a Windows native binary, but for sure I will

author: bd139
author_rank: Super Contributor
timestamp: October 08, 2018, 10:41:28 pm
content: LOL Open Motif. Haven't heard that for a few years. Thank fuck

author: legacy
author_rank: Super Contributor
timestamp: October 08, 2018, 10:53:40 pm
content: Quote from: bd139 on October 08, 2018, 10:41:28 pmeh, we have these old terminals, and as I said, pseudocolors is no more supported, hence either you convert programs to OpenMotif, either you have to convince guys to update their equipment, but this won't happen so easily in certain areasthe library I developed to portgeanyto OpenMotif is done for a hobby, but it shows how the method can be applied to other (more complex) programs. Sort of, hey? Would you pay for this? I can do it

author: bd139
author_rank: Super Contributor
timestamp: October 08, 2018, 11:00:40 pm
content: To be fair, I bitch about Motif but that and CDE were a whole load better than OpenWindows and Xaw. I suppose if you've written a porting library for it, then you have a good product there to be honest. One in a million. If you have a customer you are sorted. If not it's probably more fun than the win32 thing someone was trying to palm off on me today

author: westfw
author_rank: Super Contributor
timestamp: October 09, 2018, 05:01:06 am
content: Quote(that didn't work very well. Let's try again!)Code:/* Copyright (c) 1983 University of Maryland Computer Science Department *//* Ultra-hot screen management packageOriginal code copyright (c) James Gosling, January 1980 *//* Severe munging and destruction by Chris Torek, 1982,1983 *//****************************************************************/-------------\/ \/ \/ \| XXXX XXXX || XXXX XXXX || XXX XXX |\ X /--\ XXX /--| | XXX | || | | || I I I I I I I || I I I I I I |\ /-- --\-------/XXX XXXXXXXX XXXXXXXXXXXXXX XXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXX XXXXXXXXXXXXXX XXXXXXXXXXXXXXX XXXXXXXX XXX*************** BEWARE!! ***************All ye who enter here:Most of the code in this moduleis twisted beyond belief!Tread carefully.If you think you understand it,You Don't,So Look Again.****************************************************************/

author: brucehoult
author_rank: Super Contributor
timestamp: October 09, 2018, 05:59:49 am
content: Quote from: westfw on October 08, 2018, 09:24:10 pmI'm with you.My IDE is bash, emacs, cmake, ninja.Debug with gdb (and OpenOCD) if I have to, but by far the vast majority of things I need to debug are better with some kind of dbg_printf and grep/sort/perl to make sense of what happened. Sitting at a prompt and manually deciding at human speed whether to step in, step over, print a variable, set a breakpoint is hopelessly inefficient -- not to mention changing the behaviour of any interesting program (threads, interrupts, network...)

author: legacy
author_rank: Super Contributor
timestamp: October 09, 2018, 11:48:05 am
content: Quote from: westfw on October 09, 2018, 05:01:06 amLike a book of math. I guess you have never seen a book of math written in Japanese for the Playstation1; well, this kind of warning on the label of the math book of the playstation1 made sense because the CEO didn't want non-Japanese people to look at their precious hardware, besides he wanted to avoid that not-authorized-software-companies could look at SONY's precious development software.

author: cdev
author_rank: Super Contributor
timestamp: October 09, 2018, 04:26:10 pm
content: I am (guessing?) you Eclipse users probably install it from a downloaded binary- right?Is there any reason at all to use the package and packaged add-ons only? (Security?)I'm on Debian if it matters.Would be using a vanilla stable were it not for the fact that its old at this point and about to move to the next version, and a need to use more recent math libraries.There must be some optimal way for managing shared libraries built from source in /usr/local to make sure they don't conflict with the packages on the system.But- I don't know about it. Does anybody have a good idea?If a package does exist I want to use it and link to it, but otherwise I want to build it. Is there any tool (besides wrapper scripts, temporary changes to bash init files, the command line and so on.)Much needed is a tool to check all the installed applications in everywhere on the Path(s), check installed libraries and includes and so on and alert me to any obvious incompatibilities..Kind of a comb, for preening /usr/local/* to make sure I don't have any orphaned cruft, esp. binaries, shared libs, headers, etc, that are clashing with my installed packages-(This is to organize the executables, shared libs and applications on my main system, not VMs or containers.)Quote from: dgtl on October 08, 2018, 06:25:08 pm

author: SiliconWizard
author_rank: Super Contributor
timestamp: October 09, 2018, 04:31:48 pm
content: Quote from: legacy on October 08, 2018, 10:27:42 pmYou really use a Tektronix XP217 on a regular basis?Now I know why you're called "legacy".Quote from: legacy on October 08, 2018, 10:27:42 pmIf you happen to use Windows, you should definitely consider a native binary. Using a virtual machine just to get an editor seems like a bit of a convolution.

author: Siwastaja
author_rank: Super Contributor
timestamp: October 09, 2018, 04:49:48 pm
content: gedit + make at this time. I'm happy enough. Most of my projects involves code written completely by me & the team, so if we ever find out we need a lot of helper features in code writing (think about text completion, etc.) to keep the productivity high, that's a sign we are doing something really wrong. Maybe some 1-2% of extra productivity could be squeezed using higher-end text editing, but the risks are bigger; I have seen the problems of Not Caring because "the editor handles it" happening to myself as well as others.make is a compromise as well, but works well enough without a risk of steering the project the wrong way.My projects are easy to compile. It's always:git clonemakeNow that I'm in the position where I can choose and make decisions, I tend to refuse to use libraries which take half a day to install for a seasoned professional, or a week of full-time studying for a n00b. I mean libraries that depend on 20 other libraries, that each depend on 20 libraries more, creating a dependency tree of hundreds of libraries, that need to be of the correct version, compiled with the correct options to work. In practice, I found out that it often takes about an hour or two to replicate the functionality you need.The same principle goes for my tools. If I need something specific in addition to the text editor and make, I probably won't find a suitable tool anyway; I really suggest start making your own tools! They can be fairly crude and unpolished becauseyouknow how to use them.

author: legacy
author_rank: Super Contributor
timestamp: October 09, 2018, 05:25:18 pm
content: Quote from: SiliconWizard on October 09, 2018, 04:31:48 pmI also have to access remote real Linux or Unix machines, hence mobaXterm is the best way. Geany under MobaXterm on a virtual machine sounds weird but it runs fine like it runs fine on a remote machine.

author: cdev
author_rank: Super Contributor
timestamp: October 09, 2018, 06:06:13 pm
content: Thats a good way to operate if you're willing to either wait several years for some needed functionality to show up in a distro you use, or spend a ton of money on a black box commercial product you cant fix when it breaks, AND you have to keep updating it or leave a physical disk and perhaps even keep a semi 'dedicated' physical machine in the state it needs to be in to use that program. "forever"Some businesses do exactly that.So I'm grateful to have a super flexible Linux distro and spend a lot of time trying to explore new tools, even though its a PITA. The more I do it the better I get.So it takes less and less time as time goes on.Quote from: Siwastaja on October 09, 2018, 04:49:48 pm