8000 GitHub - LionyxML/emacs-solo: A Pure Emacs (no external packages) IDE like configuration.
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

A Pure Emacs (no external packages) IDE like configuration.

License

Notifications You must be signed in to change notification settings

LionyxML/emacs-solo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Emacs Solo

β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ•—   β–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—    β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ•—      β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—
β–ˆβ–ˆβ•”β•β•β•β•β•β–ˆβ–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ–ˆβ•‘β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•—β–ˆβ–ˆβ•”β•β•β•β•β•β–ˆβ–ˆβ•”β•β•β•β•β•    β–ˆβ–ˆβ•”β•β•β•β•β•β–ˆβ–ˆβ•”β•β•β•β–ˆβ–ˆβ•—β–ˆβ–ˆβ•‘     β–ˆβ–ˆβ•”β•β•β•β–ˆβ–ˆβ•—
β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—  β–ˆβ–ˆβ•”β–ˆβ–ˆβ–ˆβ–ˆβ•”β–ˆβ–ˆβ•‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘     β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—    β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘     β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘
β–ˆβ–ˆβ•”β•β•β•  β–ˆβ–ˆβ•‘β•šβ–ˆβ–ˆβ•”β•β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘     β•šβ•β•β•β•β–ˆβ–ˆβ•‘    β•šβ•β•β•β•β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘     β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘
β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ•‘ β•šβ•β• β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘  β–ˆβ–ˆβ•‘β•šβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•‘    β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•‘β•šβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β•β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β•šβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β•
β•šβ•β•β•β•β•β•β•β•šβ•β•     β•šβ•β•β•šβ•β•  β•šβ•β• β•šβ•β•β•β•β•β•β•šβ•β•β•β•β•β•β•    β•šβ•β•β•β•β•β•β• β•šβ•β•β•β•β•β• β•šβ•β•β•β•β•β•β• β•šβ•β•β•β•β•β•

  Loading time : 0.172725 seconds
  Packages     : 0

Emacs Solo is a configuration for when I wanna go back to the roots and test my self using Emacs with only built-in goodies.

It is minimalist and powerful. A place I visit once in a while.

Obligatory Screenshots

Overall View

doc/demo-01-overall.png

More screenshots here…

iComplete + Flymake + Gutter

doc/demo-02-icomplete-flymake-gutter.png

Help Variable

doc/demo-03-help-var.png

iComplete Vertical

doc/demo-04-icomplete-vertical.png

Eshell

doc/demo-05-eshell.png

Dired + Gutter

doc/demo-06-dired-with-gutter.png

doc/demo-07-dired-with-gutter-2.png

Well behaved mode-line

doc/demo-08-mode-line.png

As seen on System Crafters!

Also, check out the full demo of Emacs Solo in action, as seen on the System Crafters channel. In this video, David Wilson explores and learns from the configuration, showing how different settings and approaches are applied to create a more efficient and personalized Emacs setup.

http://img.youtube.com/vi/j_2QkCcf8zE/0.jpg

Minimum Emacs Version

Emacs Solo always requires the latest stable release of Emacs, which is currently: 30.1

However, some bleeding-edge features may be tested as well. For those, you’ll need to compile Emacs from the master branch. I do my best to mark these features with the Emacs 31 tag.

External Dependencies

  • ripgrep (rg)

    This provides quicker project grep and xref navigation.

    If you opt to use regular grep, reset the customization of variable grep-command.

  • gls

    MacOS comes with an implementation of ls that misses some nice switches from the gnu implementation (gls on homebrew). If you opt to use MacOS defaul ls you might need to change the dired-listing-switches variable.

  • curl

    Only needed if you’d like to upload text/images directly to 0x0.st site from Emacs Solo, by using either emacs-solo/0x0-upload-text or emacs-solo/0x0-upload-file.

  • mpv

    Only needed if you’d like to play videos directly from news in newsticker.

  • rsync

    Only needed if you’d like to use emacs-solo/dired-rsync-copy.

  • ollama

    Only needed if you’d like to use emacs-solo/ollama-run-model.

Installation

Clone this repository into a directory of your liking and run Emacs with:

emacs --init-directory=YOUR_DIR

You can also simply copy init.el and early-init.el into any folder issue the same command as above

And that’s it, happy hacking! πŸ‚

Important Notice

I’m happy to share this configuration with a catchy name, and I’d be genuinely delighted if you find it useful. πŸ™‚

However, this is not intended to be a distribution. This means I may not cover every user’s needs, nor will I accept every contribution that pushes it in that direction. I use this configuration daily for both personal and professional work, and like any custom setup, it reflects my own preferences.

For example, this config does not include Python-specific settings, whether for Eglot or Tree-sitter. Since this is a real working setup and I’m not currently using Python, its absence might seem like an oversight.

If you’d like to add your own modifications while staying up to date with Emacs Solo, simply create a private.el file in the same directory as init.el. A hook is already in place to load this private file after Emacs initializes.

Of course, you can also fork it! (please do 😊)

How do I…

A FAQ like session of common questions of how to do X with only Emacs Solo.

So, how do I…

1.) Copy the current word under cursor?

The usual answer is M-b to go back to the beginning of the word. C-M-SPC to expand the selection to the end of the word and M-w.

Custom Emacs Solo Solution: Use the isearch way to search a word (it has better completion than C-M-SPC), like M-s M-. you can now just M-w.

2.) Edit multiple search entries at once?

Original problem: I usually consult-outline, then embark-collect and wgrep...

You can start by using occur, or using isearch and than moving to occur.

Next start the edit mode of the occur buffer with e.

Make your changes, apply it with C-c C-c

From Emacs 30.1 onward you can also use the combo: replace-regexp-as-diff for replacements in a single buffer, multi-replace-regexp-as-diff for multiple buffers, and dired-do-replace-regexp-as-diff to perform replace-regexp-as-diff

3.) Edit multiple search entries between several files at once?

Original problem: I usually consult-grep, then use embark collect and wgrep...

Open dired on the root folder of where you search will happen. Mark some files and or folders with m.

Use dired-do-query-replace-regexp or in a dired buffer hit Q.

Confirm it all or one by one, use ? to check the options.

From Emacs 30.1 onward you can also use the combo: replace-regexp-as-diff for replacements in a single buffer, multi-replace-regexp-as-diff for multiple buffers, and dired-do-replace-regexp-as-diff to perform replace-regexp-as-diff

4.) Read news, like with elfeed?

You have two built-in options on Emacs.

  • M-x gnus
  • M-x newsticker-treeview

5.) How do I see logs and their diffs?

C-x v L on a file inside your version controlled file. And over the line you have the commit, press d for diffing.

If you wanna diff a range, mark the lines starting with C-SPC on the first line of the range, and again C-SPC in the last line of the range (the content of what you want must be selected, if ther cursor is on first column of the line it won’t be included), now use d to diff.

6.) How do I revert a hunk?

C-x v = will open the diff panel for the current file, restrict it to the hunk you’d like to revert with r, revert the direction of the diff with R and apply the diff with C-c C-a.

7.) Use (neo)vi(m) keybindings (aka Evil keybindings)?

Emacs comes with viper which is a vi emulator. This means a lot of modern editing capabilities are missing.

Take a look at use-package Emacs Solo-viper-extensions, section of the init.el file. Emacs Solo extends viper mode to include a bunch of more modern evil-like bindings.

Just give it a try ;) M-x viper-mode

8.) Temporaraly highlight some word?

Use the powers of highlight-regexp! Over a word you want to make highlighted use M-s h .

You can repeat it to other words and Emacs will handle different colors for you.

To remove a highlight use M-s h u and select the highlighted regexp on the list.

Find out about more options regarding highlighting with M-s h ?.

9.) Know what is changed when closing Emacs or several files?

It is a common thing trying to close Emacs with C-x C-c just to find out one of your buffers has some modification and now Emacs asks if you’d like to save, override, etc.

Emacs Solo provides the extra option d, which will generate a diff of the current file being asked to take action, so you can see if saving is needed.

10.) Show/Hide (toggle) hidden files in Dired?

Use dired-omit-mode, which you can toggle with C-x M-o. Notice that this mode uses the regular expression defined in the dired-omit-files variable. Emacs Solo already customizes this to ignore files matching ^\\.

11.) Open multiple terms/shells?

Ever felt the need of some multi-term package on Emacs? Well, you don’t really need it, at least not with the internal implementations of terminals and eshell.

Just use the C-u unversal argument command before calling your term/shell, like: C-u M-x eshell or C-u C-x p e or C-u M-x term, and so on.

Now you have another instance of your term to work with, repeat this pattern if you need more instances.

About

A Pure Emacs (no external packages) IDE like configuration.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published
0