Install the latest emacs release and you will be able to do `M-x eglot` – this by default knows about language servers for many programming languages, so if you e.g. do this while in a C++ file in some project, it will start clang or ccls (whatever's in PATH); the language server will then be active for all files in that project and you can use `M-.` (xref-find-definitions), `M-,` (xref-go-back), `M-?` (xref-find-references). Try also `M-x eglot-code-actions` on a symbol to see all available actions (renaming, add imports, refactoring etc.; what you get here depends on the language server).
I also use this plugin https://github.com/minad/consult which has the command `consult-ripgrep`, very useful for e.g. looking up all occurrences of the symbol at point (and text navigation across multiple files).
For "AI", start with https://github.com/karthink/gptel/ (its README lists alternative packages, as you can see there is no lack of llm support in emacs, both chat, "agents" and more specific use-cases)
To add to this, consult works great with embark, and orderless, which make for a wonderful emacs experience.
Also, on the llm point even though I know elisp, and use emacs heavily, they can be great for creating little personal commands that just make things a little nicer to use (lowering the barrier of "I'll write a command for this" from 15 minutes to 2 minutes is huge and means I can be bothered to do it for more marginal things which makes the editor even more pleasant to use).
Comments
Install the latest emacs release and you will be able to do `M-x eglot` – this by default knows about language servers for many programming languages, so if you e.g. do this while in a C++ file in some project, it will start clang or ccls (whatever's in PATH); the language server will then be active for all files in that project and you can use `M-.` (xref-find-definitions), `M-,` (xref-go-back), `M-?` (xref-find-references). Try also `M-x eglot-code-actions` on a symbol to see all available actions (renaming, add imports, refactoring etc.; what you get here depends on the language server).
I also use this plugin https://github.com/minad/consult which has the command `consult-ripgrep`, very useful for e.g. looking up all occurrences of the symbol at point (and text navigation across multiple files).
For "AI", start with https://github.com/karthink/gptel/ (its README lists alternative packages, as you can see there is no lack of llm support in emacs, both chat, "agents" and more specific use-cases)
To add to this, consult works great with embark, and orderless, which make for a wonderful emacs experience.
Also, on the llm point even though I know elisp, and use emacs heavily, they can be great for creating little personal commands that just make things a little nicer to use (lowering the barrier of "I'll write a command for this" from 15 minutes to 2 minutes is huge and means I can be bothered to do it for more marginal things which makes the editor even more pleasant to use).
I didn't know about M-? ... I like how if there's only 1 match it automatically jumps to that single reference. :)