-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Emacs
Emacs is a powerful text editor that can be heavily customised to serve as a modern IDE.
With the correct configuration you'll be able to
- edit C/C++, xml, javascript, python and more
- auto completion
- smart navigation
- compile the project
- debug the poject
- interface with git
all without the need to ever exit or close emacs.
Emacs is an old piece of software (first release at 1976) and a lot of terminology used is different than what most people are used to.
For the first many hours of usage your productivity will be extremely low, since you have to remember a bunch of keybindings and commands just to be able to save a document or open a new file. But after spending some time in it you'll find that the commands become muscle memory and you never think about them any more, just like touch-typing.
It is not recommended to start developing with emacs if you don't already have at least some familiarity with it.
That said, even after 42 years there is a big and active community of developers and users around Emacs and it is safe to say that it keeps growing. If you want to learn emacs there are a lot guides out there. I'll list some that helped me below.
Here you can find one of the best collections of tutorials I've found online written by tuhdo. He has written many widely used emacs packages. Start by reading the Emacs mini manual part 1 and then proceed to this to learn about the packages you'll need for an IDE experience and how to configure them.
In order for the editor to provide smart assistance with the code (auto
completion, code navigation etc.) there has to be a list of the compiler
commands so the selected backend can use it to find out where each
function is and how it is related to one another. CMake can do this
easily with cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
. To get the same
results with SCons you need to use an external program called
bear (Build EAR).
One popular backed is irony. Using this and company-irony for auto completion along with flycheck-irony for on the fly syntax checking has you covered for everything except code navigation.
Code navigation is what RTags does best. It provides functions to jump to definition or to declaration, and many many others. You can also use it with company-mode for auto completion.
ymcd is another package that has support for many languages besides C/C++. Here is a guide for a setup using this tool.
cquery is really easy to set
up and provides everything: syntax checker, auto-completion, navigation,
documentation. It's developed for and tested with huge codebases. It can
also work without a compiler_commands.json
making it even greater for
mixxx since with scons generating the json can be quite hard. Everything
you need to install it can be found in the repo's wiki.
magit is considered to be one of the best packaged out there. Rumours say that some open emacs just for this (even vim users). It is a git interface that is extremely fast and intuitive and makes almost every task in git easier. One minor issue is that it can't handle big merges, since it will take forever to load each commit. This is still best done via terminal.
Emacs has a build in interface for GnuDebugger (gdb). You can find the details of how to set it up in tuhdo's guide I mentioned above.
Most people don't treat configuration files as software. I do.
- Emacs user
Emacs is all about trying new stuff and having fun. I hope this collection of links and tools can help wnyone who might need them.
Mixxx is a free and open-source DJ software.
Manual
Hardware Compatibility
Reporting Bugs
Getting Involved
Contribution Guidelines
Coding Guidelines
Using Git
Developer Guide
Creating Skins
Contributing Mappings
Mixxx Controls
MIDI Scripting
Components JS
HID Scripting