Hacker News new | past | comments | ask | show | jobs | submit login

Your knowledge about Emacs was outdated then. And what make you think that Emacs cannot use Clang and LLVM? Currently, there's already rtags that uses Clang for live analysis: https://github.com/Andersbakken/rtags. Here are some nice features that Emacs provide:

- Powerful automatic indentation: https://raw.githubusercontent.com/Bruce-Connor/aggressive-in.... It does not only indent the current line, but the whole Semantic context around your cursor.

- Live grep: http://tuhdo.github.io/static/live_grep.gif

- Access to a list of project with a few key strokes: http://tuhdo.github.io/static/helm-projectile/helm-projectil...

- Quickly access any file in your project, as large as Linux kernel, instantly, regardless of where you are in the project, and within a few keystrokes: http://tuhdo.github.io/static/helm-projectile/helm-projectil....

- Jump to any file depends on context, even if the file path is in a plain ASCII text file: http://tuhdo.github.io/static/helm-projectile/helm-projectil...

- Copy files from anywhere to anywhere: http://tuhdo.github.io/static/helm-projectile/helm-projectil....

- Delete files anywhere; files are always at your finger tip to do whatever with them: http://tuhdo.github.io/static/helm-projectile/helm-projectil....

- Switch between other files with same names but different extensions: http://tuhdo.github.io/static/helm-projectile/helm-projectil.... Work not only for C/C++ but other languages, and is customizable. You don't have to configure anything, like adding include paths for the command to search. Everything is automatic. Just use it as it is.

- Jump to tag definition, from Emacs's own parser or external parser like GNU Global: http://tuhdo.github.io/static/c-ide/helm-gtags-jump-dwim.gif

- Jump to any definition from a list of definitions in source tree, even for Linux kernel: http://tuhdo.github.io/static/c-ide/helm-gtags-select.gif

- Jump up to parent: http://tuhdo.github.io/static/c-ide/senator-go-to-up-referen....

- Do you like outline tree?: http://tuhdo.github.io/static/c-ide/sr-speedbar.gif

- Interactive outline tree: http://tuhdo.github.io/static/c-ide/helm-semantic-or-imenu-w...

- Easily move back and forth using the interactive outline tree: http://tuhdo.github.io/static/part3/helm-semantic-or-imenu-2...

- References retrieved from its Emacs internal parser: http://tuhdo.github.io/static/c-ide/semantic-symref.gif.

- Beautiful compile output: http://tuhdo.github.io/static/c-ide/compilation-compile.gif

- Frontend support for GDB: http://tuhdo.github.io/static/c-ide/gdb-many-windows.gif

- Code completion: http://tuhdo.github.io/static/c-ide/semantic-boost-demo.gif.

- Open man page for symbol at cursor: http://tuhdo.github.io/static/part3/helm-man-woman.gif.

- Emacs open 39MB C file: http://tuhdo.github.io/static/performance.gif

- Emac opens multi-gigabtye file: http://www.emacswiki.org/VLF

- Emacs is a bit torrent client: https://bitbucket.org/ukaszg/aria2-mode/

You can see more demos in:

+ Emacs Mini Manual: http://tuhdo.github.io/emacs-tutor.html + C/C++ Development Environment for Emacs: http://tuhdo.github.io/c-ide.html + A Package in a league of its own: Helm: http://tuhdo.github.io/helm-intro.html + Exploring large projects with Projectile and Helm Projectile: http://tuhdo.github.io/helm-projectile.html

Note that in the demos you may see me type in the commands. You can think of it like the start menu in Windows, but actually those commands can be executed quickly with a shortcut. I type in the commands for demonstration purpose to Emacs users.

Those demos are just tip of the iceberg.




Now show all those demos, without relying in clang.

We in the real world have to use compiler toolchains specified by our customers.

Do you also have demos for:

- Navigate in binary files

- Semantic refactory

- Background compilation

- Debug unit tests

- Cross reference to source control checks and software tracking issues

- Parallel code debugging

- Visualization of C++ data structures

- Semantic code navigation

- Database integration

- UML diagrams with two way code editing

- UI design

- Integration with application servers

- Graphical visualization of profiling data

- ...

Emacs is a fine software, but it is stuck in the past.


None of those relies on clang. And why do you think that it's ok for an IDE to use Clang, and Emacs is not?

You misunderstood what Emacs is really. It's an environment for creating programs to run in it. At its core, Emacs is just Emacs Lisp interpreter. The editor frontend is for users to interact with this core, by directly using Lisp code or just using editing commands. Comparing Emacs to IDE is just like comparing Python interpreter to IDE; but the former has more potential to be anything it wants.

> Navigate in binary files

Yes. You have Hexl mode for editing binary files, ages ago: https://www.gnu.org/software/emacs/manual/html_node/emacs/Ed...

You can even open files with gigabytes size to edit: http://www.emacswiki.org/VLF

> Semantic refactory

Fine. This can be done if someone puts the effort into making it. But text replace in whole project is good enough. Even so, things like that won't work with project like Linux kernel. Parsers in IDEs like Eclipse or VS just can't handle such complex project, so those IDEs are also useless.

> Background compilation

Yes. Emacs can do perform asynchronous operation. M-x compile and type in compilation command, then either do something else or see it display beautiful output: http://tuhdo.github.io/static/c-ide/compilation-compile.gif. In Eclipse, even for debugging a simple binary file, you have to create a project. This is absurd.

> Debug unit tests

What's the problem? If you write unit tests in a language, use that language debugger. Emacs has an integrated interface for many debuggers, even for Bash and Make.

> Cross reference to source control checks and software tracking issues

Why is this essential? If you want, you can write one in Emacs. However, use a proper bug tracking software, like BugZilla and use your browser.

> Parallel code debugging

Yes, GDB provides that, so Emacs has that too. See this screenshot again: http://tuhdo.github.io/static/c-ide/gdb-many-windows.gif. Notice the bottom right. You have a tab "Threads" in there. Clicking on a thread in the list will switch other windows (i.e. registers, stack frames) to the context of that thread.

> Visualization of C++ data structures

Yes, you have Ebrowse: http://www.gnu.org/software/emacs/manual/html_mono/ebrowse.h..., that lists an index of classes in tree format. For example, if class is a child of a class, it is display as a child of that class in tree format. You can click on each class, you view all the member functions and can switch between declarations and definitions.

Or use Doxygen: http://www.stack.nl/~dimitri/doxygen/

> Database integration

Non-essential. I don't work with database. But, you can use Emacs as a database client if you want: http://truongtx.me/2014/08/23/setup-emacs-as-an-sql-database... and it's better than many crappy database clients out there.

> UML diagrams with two way code editing

Non-essential. Again, use Doxygen if you want.

> UI design

Can your IDE work on multi-hop remote machines?

> Integration with application servers

So, is running a terminal emulator inside Emacs and run commands to control the servers enough?

> Graphical visualization of profiling data

Non-essential. Use a separate profiler.

And please don't say that those IDEs are better because it can run some programs inside the same window, while Emacs relies on external programs. It's like saying Eclipse sucks and is not a real IDE because it uses gcc to compile code, not providing its own compiler. "IDE" is just a bunch of programs wired together.


I guess you missed the part I have spent 10 years using it.


You also missed the part that you stopped using it for almost 10 years. It is very different now. For example, I can now jump to anywhere in the kernel source tree instantly, jump to any definition or reference instantly. The new features make navigating Linux kernel source like a small project. I cannot do this with Eclipse.


I did not stop using it completely.


You never said this. And even if you did not stop, you answer strongly suggest that you do not use Emacs for serious development anymore, and was out of date with current state of Emacs. If you actually use it, you would know that none of my demos use Clang.


Correctly, as I am a GUI oriented person and no longer see a strong value in Emacs vs InteliJ|Netbeans|Eclipse(CDT)|Visual Studio|KDevelop.


Yes, since you spread failed information, and I had to post to correct it. There are many things that could not be done in those IDEs you listed, i.e. to debug random binary outside of a project. Did you tried it Ctrl + H for finding files? Completely unnecessary complicated with tons of checkboxes, and slow to search. It does not show me result instantly; meanwhile in Emacs, I could do this: Open file at point anywhere, even in plain text file: http://tuhdo.github.io/static/helm-projectile/helm-projectil...

In debugging, Eclipse is no difference than Emacs; both use GDB. For compiling, Eclipse also uses external debugger. The only thing that makes it an IDE is its internal parser, that is broken for large projects and Emacs also has a C/C++ parser anyway. What make Emacs less IDEish than Eclipse?


> In debugging, Eclipse is no difference than Emacs; both use GDB

Except I only use CDT with Android. GDB is no match to Visual Studio debugging capabilities.


In what aspect it is no match? Feature-wise, not GUI; GUI is non-factor here. People wrote a kernel without a debugger after all.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: