Emacs is my preferred text editor. I don’t use old-fashioned text editors as much as I used to, because I often need more specialized tools. I use IDEs for various programming languages and other things when producing high quality documents. And yet, I often wish I could subsume these with a tool that had the basic goodness of emacs.
I love the ease of customization of Emacs and other text editors, but they're just plain dumb when it comes to knowing programming languages.
Me thinks you haven't used emacs as much as "other text editors." There are very few features that people "wish" emacs had, that it doesn't actually have.
Specifically, language recognition is not just regexes in emacs.
Perhaps this is not the right forum but does anyone know of a good emacs mode for jump-to-definition in Python? I've used ctags and jedi but haven't been able to configure anything as awesome as the Python plugin for IntelliJ (same as PyCharm). To implement it, it would require a combination of static analysis and on-the-fly interpretation, given Python's duck typing. If emacs had this, I would use emacs all the time.
I use jedi.el along with virtualenv-wrapper which does jump to definition perfectly fine ime. But keep an eye for open sourcegraph's mode[0], they are going incorporate python soon AFAIU.
One of the authors of srclib here. Python has been incorporated (and should be installed if you update srclib and run the toolchain install script). The website hasn't been updated to reflect this, however. Let us know if you run into any issues!
That looks like it should be ridiculously easy to do. Feels like it would be annoying pretty quickly, though. (I typically have my computer completely muted...)
> Specifically, language recognition is not just regexes in emacs.
I know there's Semantic [1], but do the typical major modes actually use it? The first line of Semantic's manual says: Ordinarily, Emacs uses regular expressions (and syntax tables) to analyze source code for purposes such as syntax highlighting.
Yes, tit the default mode is through regexs, and most of the modes use it.
But I think the OP's point was you are not limited by it, besides semantic (which I haven't never bothered to setup, there is js2-mode[0] as examples of modes that don't use regexps to operate on the language. There is even js2-refactor[1] built on top of it. You can read about js2-mode origin story here[2], and you would see that lack of threads in elisp hindered its development.
Apologies for not responding earlier. As indicated in a sibling post; yes, I believe most language recognition is done with the old style. Mainly because it is fast and works for the majority of use cases, though, and not because it is required to be that way.
I understand, on principle, why this is not ideal. In practice, I have trouble disagreeing with it. I do find autocomplete nice; though, I have also found that in the instances where I'm having to rely on autocomplete, I'd have been better off using the documentation of whatever I'm doing for a bit to actually have solid grounding before embarking on code.
My point was exactly as the sibling said, that this is by no means all emacs can do.
The problem with emacs is that while emacs is indeed long lived, plugins often have a short life-span. I've tried on a couple of occasions to find a good C++11 compatible plug-in but failed. I found one which used libclang, but didn't work with the latest version of clang.
I love the ease of customization of Emacs and other text editors, but they're just plain dumb when it comes to knowing programming languages.