Giter Site home page Giter Site logo

abougouffa / minemacs Goto Github PK

View Code? Open in Web Editor NEW
124.0 5.0 14.0 5.2 MB

MinEmacs: a minimal Emacs configuration framework for daily use

Home Page: https://abougouffa.github.io/minemacs/

License: MIT License

Emacs Lisp 99.32% Makefile 0.40% CSS 0.03% Shell 0.04% sed 0.04% Dockerfile 0.17%
emacs workflow editor ide note-taking email-client embedded-development feed-reader scientific-computing writing-system

minemacs's Introduction

MinEmacs

CI-Linux CI-MacOS CI-Windows

MinEmacs is a lightweight Emacs configuration framework.

MinEmacs banner

MinEmacs screenshot

Why?

Since many years, Emacs forms the foundation of my workflow, serving as my go-to tool for various tasks such as document writing, academic paper writing, programming in multiple languages, email management, and staying updated with news, among other things.

Hence, I wanted a VIM-style framework that is both robust and straightforward. Spacemacs was the first framework I've tested, I liked the idea of using SPC as a leader key, but I didn't like the way Spacemacs packs things in layers, and imposes a unique way of writing your configuration.

I discovered then Doom Emacs, which I found a remarkable software that introduced me to the world of Emacs. Nonetheless, my experience with it turned out to be less enjoyable later. In fact, before I started the MinEmacs project back in September 2022, I encountered numerous issues with Doom Emacs. Occasionally, after running the doom upgrade command, everything would cease to function properly. These problems always seemed to arise during my busiest days, causing unnecessary additional stress. To be frank, at that time, Doom Emacs started to feel overly complex as a configuration framework. It incorporated a command line interface, an extensive library with extra features, numerous unnecessary hacks to tweak Emacs behavior for a negligible improvement in startup time, configuration modules that tightly combined various packages in an opinionated manner, CI commands, and even a profile manager! Each of these features introduced extra complexity and more failure points at every layer.

As a result, MinEmacs emerged as my personal configuration framework for Emacs, and it continues to serve that purpose. I'm trying to tailor it to my specific needs while maintaining its modularity and portability. You can refer to the change log for more information about the evolution of MinEmacs. However, I have no intention or availability to create an alternative to Doom Emacs or Spacemacs. While I find joy (like every other Emacser out there) in tinkering with Emacs, MinEmacs remains just a tool that I use in my everyday work, and that I like to share with other Emacsers. However, please note that I am not really interested in becoming a full-time maintainer of this tool that I would only use to maintain itself!

Install

Open a shell and run:

git clone https://github.com/abougouffa/minemacs.git ~/.emacs.d && emacs

By executing this command, the repository will be cloned, and Emacs will be launched. During the initial run, Emacs will automatically install the necessary packages.

Important

Please note that I'm using a fresh Emacs 29 built from source on a Manjaro Linux system. I have enabled basic Github CI actions to automatically test running Emacs 28, 29 and a fresh 30 build on Ubuntu Linux and MacOS and Emacs 28 on Windows. These actions ensure that MinEmacs is "runnable"; with all modules enabled on these systems. However, more testing should be done to validate the configuration on systems other than Linux.

I'm trying to support at least Emacs 28.1, so I back port some of the new functions/macros I use to Emacs 28. Furthermore, for Emacs 28 and earlier, MinEmacs includes the me-compat module which loads the compat package at early stage (just after bootstrapping straight and use-package), this can facilitate porting MinEmacs to earlier Emacs versions. However, I've never tested MinEmacs with versions earlier than 28.1, and I don't plan to do so!

Customization

To personalize MinEmacs, you can incorporate a specific set of files within the default user configuration directory, which is located at ~/.minemacs.d. However, if you prefer to use a different directory, you have the flexibility to do so by setting the MINEMACSDIR environment variable.

Main configuration files

There are two main files that can be added in the ~/.minemacs.d directory:

  1. The ~/.minemacs.d/modules.el file contains a list of enabled modules and a list of disabled packages (minemacs-core-modules, minemacs-modules and minemacs-disabled-packages can be set in this file).
  2. The ~/.minemacs.d/config.el file contains the user configuration and customization, you can think of it as your init.el, which gets loaded at the end of MinEmacs' init.el!

This repository contains skeleton files for modules.el and config.el (under skel/). We highly recommend following the same structure as in the skeleton files, specially the use of with-eval-after-load and use-package instead of using require directly (require loads the packages immediately, which increases the startup time of Emacs).

Machine-specific configuration files

In my workflow, I use mainly the same configuration files across all my machines (which are traditionally shared in my dotfiles repository). However, I have some machine-specific (local) configurations that I like to load. For example, to overwrite the email address on my workstation.

For this purpose, MinEmacs will also check for files in ~/.minemacs.d/local/{early-config,config,modules}.el and load them if they exists.

Advanced configuration files

MinEmacs provides also some advanced customization files, these files can be used to tweak MinEmacs' behavior, add some early initialization code, make MinEmacs runnable on older Emacs versions, etc.

  1. The ~/.minemacs.d/early-config.el file is loaded at the end of MinEmacs' early-init.el. You can use it to set up some early stuff like tweaking the UI, overwrite the variables set by MinEmacs, and so on.
  2. The ~/.minemacs.d/init-tweaks.el file is loaded at an early stage of the init.el file. You can use it to do some useful stuff before MinEmacs starts to customize packages and load modules. This can be useful for porting MinEmacs to an older Emacs version by providing an implementation of new functions MinEmacs uses. See the init.el for more information.

Environment variables

You can customize MinEmacs' behavior via some environment variables.

  • MINEMACS_DIR or MINEMACSDIR: Path for MinEmacs user configuration directory, if not set, ~/.minemacs.d/ is used.
  • MINEMACS_MSG_LEVEL: Change message log level, from 1 (only errors) to 4 (all messages).
  • MINEMACS_VERBOSE: Be more verbose (useful for debugging).
  • MINEMACS_DEBUG: Enable debugging at startup.
  • MINEMACS_ALPHA: Set frame background-alpha to percentage (value from 0 to 100).
  • MINEMACS_NOT_LAZY: Load lazy packages immediately after loading Emacs.
  • MINEMACS_ALWAYS_DEMAND: Load all packages immediately (this works by setting use-package-always-demand to t and use-package-always-defer to nil.
  • MINEMACS_IGNORE_VERSION_CHECK: Do not perform version check in init.el, this can be useful if you use ~/.minemacs.d/init-tweaks.el to implement the functionalities used by MinEmacs and missing from your Emacs version.
  • MINEMACS_IGNORE_USER_CONFIG: space-separated values, used to disables loading ~/.minemacs.d/<file>.el user configuration files. Accepted values for <file> are: early-config, init-tweaks, modules, config, local/early-config, local/init-tweaks, local/modules and local/config. Use all to disable all user configuration files.
  • MINEMACS_LOAD_ALL_MODULES: Load all modules (without taking ~/.minemacs.d/modules.el into account).

MinEmacs keybindings cheat sheet

MinEmacs defines several keybindings, mainly using general.el. To see the full list of keybindings defined using general, you can type SPC h g or M-x general-describe-keybindings.

Extra documentation

More information about customization variables, functions and commands defined by MinEmacs can be found in the documentation generated from the source code.

Troubleshooting

If you experienced an issue with MinEmacs, you can check the FAQ, check open issues or open a new one.

minemacs's People

Contributors

abougouffa avatar darkbuffalo avatar donneyluck avatar donneylucks avatar hmanhng avatar stormwatch avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

minemacs's Issues

skel/module.el minemacs-core-modules not equal

minemacs-core-modules (skel/module.el) not equal to (core/me-module.el)
i think maybe core module should not be modified
Should it be removed from module.el
if you want keep it. it should be equal default me-defaults & me-bootstrap should be delete

skel/module.el

(setq minemacs-core-modules
      '(me-defaults      ;; Tweak Emacs defaults
        me-splash        ;; Simple splash screen (inspired by emacs-splash)
        me-bootstrap     ;; Bootstrap straight.el
        me-core-ui       ;; Theme and modeline
        me-keybindings   ;; general.el, which-key, hydra, ...
        me-evil          ;; evil, evil-collection, evil-mc, ...
        me-completion))  ;; vertico, marginalia, corfu, cape, consult, ...

core/me-module.el

(defcustom minemacs-core-modules
  '(me-splash        ; Simple splash screen
    me-keybindings   ; Keybinding (general, which-key, hydra, ...)
    me-evil          ; Emacs as Vim (evil, evil-collection, evil-mc, ...)
    me-core-ui       ; Core UI (doom-themes, modus-themes, doom-modeline, ...)
    me-completion)   ; Completion (vertico, marginalia, corfu, cape, consult, ...)
  "MinEmacs enabled core modules."

Cannot disable posframe?

Hi,

Probably a silly question related to my own config, but I've hunted and hunted to find what changed re: completion using what looks like posframe. Is it actively enabled somewhere? I can't find anything that would indicate it's in use, including variables, but the completion sure looks like it's using it. Any tips appreciated or a quick - "that's on you!" would be great too.

Thanks again for such an awesome configuration !

Windows - Error after loading

Hello again!

I want to use minemacs with org and ltex, but not sucessfull… After an update, I have this strange message at start:

Symbol’s definition is void: get-scratch-buffer-create`

emacs206

How I can fix that ?

(emacs 28 on windows - reverting to emacs 28 due to some bugs with emacs 29 and 30)

Thanks !

mu4e-config questions: Can't quite get org-msg compose or mu4e-account-register functions working with mu4e

Hi,

I'm typically a notmuch user for years, after originally starting with mu4e. I've got both working with minemacs, which is fantastic - thank you !

I used the skel files to get started with mu4e.

I have org-msg working great with notmuch using minemacs, with the composer/signature on by default. The only trouble I have is with gnus-alias not working, which is OK. I just can't figure out how to get it working by default with new message composition in mu4e. The mode is active, but I have to switch to org-msg-edit in the body each time - and the signature isn't coming through.

I'm also trying to load the mu4e-account-register function when minemacs starts in order to manage multiple accounts. I get a void-function error I can't seem to diagnose. I think it might be the loading order, but would love a pointer in the right direction to try to get this working. Any ideas would be really appreciated !

Thanks again for publishing this. I realize it's mainly for your own use & you aren't trying to do a ton of technical support for others!

default font weight 'heavy

Might not always be possible... with "Cascadia Code" as default I'm seeing:

Error (use-package): org/:config: Invalid face weight: heavy

Periodic errors from consult-line

This may very well be a personal configuration issue, but I think it's over my head to figure out how to track what's impacting the positioning using consult-line.

I don't get the error every time - and I can't quite figure out how to repro - or in any particular mode. Happy to hunt for this if it's happening to others, or hoping for a tip on how to solve this!


Debugger entered--Lisp error: (wrong-number-of-arguments (2 . 2) 0)
  jit-lock-fontify-now()
  consult--fontify-all()
  consult--line-candidates(nil 5)
  #f(compiled-function () #<bytecode 0x161546aac7a86936>)()
  funcall-with-delayed-message(1 "Collecting lines..." #f(compiled-function () #<bytecode 0x161546aac7a86936>))
  #f(compiled-function (&optional initial start) "Search for a matching line.\n\nDepending on the setting `consult-point-placement' the command\njumps to the beginning or the end of the first match on the line\nor the line beginning.  The default candidate is the non-empty\nline next to point.  This command obeys narrowing.  Optional\nINITIAL input can be provided.  The search starting point is\nchanged if the START prefix argument is set.  The symbol at point\nand the last `isearch-string' is added to the future history." (interactive #f(compiled-function () #<bytecode 0x1a52eb717942>)) #<bytecode -0x170ea6eb75f6d515>)(nil)
  apply(#f(compiled-function (&optional initial start) "Search for a matching line.\n\nDepending on the setting `consult-point-placement' the command\njumps to the beginning or the end of the first match on the line\nor the line beginning.  The default candidate is the non-empty\nline next to point.  This command obeys narrowing.  Optional\nINITIAL input can be provided.  The search starting point is\nchanged if the START prefix argument is set.  The symbol at point\nand the last `isearch-string' is added to the future history." (interactive #f(compiled-function () #<bytecode 0x1a52eb717942>)) #<bytecode -0x170ea6eb75f6d515>) nil)
  +consult--dwim-first-arg-a(#f(compiled-function (&optional initial start) "Search for a matching line.\n\nDepending on the setting `consult-point-placement' the command\njumps to the beginning or the end of the first match on the line\nor the line beginning.  The default candidate is the non-empty\nline next to point.  This command obeys narrowing.  Optional\nINITIAL input can be provided.  The search starting point is\nchanged if the START prefix argument is set.  The symbol at point\nand the last `isearch-string' is added to the future history." (interactive #f(compiled-function () #<bytecode 0x1a52eb717942>)) #<bytecode -0x170ea6eb75f6d515>) nil nil)
  apply(+consult--dwim-first-arg-a #f(compiled-function (&optional initial start) "Search for a matching line.\n\nDepending on the setting `consult-point-placement' the command\njumps to the beginning or the end of the first match on the line\nor the line beginning.  The default candidate is the non-empty\nline next to point.  This command obeys narrowing.  Optional\nINITIAL input can be provided.  The search starting point is\nchanged if the START prefix argument is set.  The symbol at point\nand the last `isearch-string' is added to the future history." (interactive #f(compiled-function () #<bytecode 0x1a52eb717942>)) #<bytecode -0x170ea6eb75f6d515>) (nil nil))
  #f(advice +consult--dwim-first-arg-a :around #f(compiled-function (&optional initial start) "Search for a matching line.\n\nDepending on the setting `consult-point-placement' the command\njumps to the beginning or the end of the first match on the line\nor the line beginning.  The default candidate is the non-empty\nline next to point.  This command obeys narrowing.  Optional\nINITIAL input can be provided.  The search starting point is\nchanged if the START prefix argument is set.  The symbol at point\nand the last `isearch-string' is added to the future history." (interactive #f(compiled-function () #<bytecode 0x1a52eb717942>)) #<bytecode -0x170ea6eb75f6d515>))(nil nil)
  apply(#f(advice +consult--dwim-first-arg-a :around #f(compiled-function (&optional initial start) "Search for a matching line.\n\nDepending on the setting `consult-point-placement' the command\njumps to the beginning or the end of the first match on the line\nor the line beginning.  The default candidate is the non-empty\nline next to point.  This command obeys narrowing.  Optional\nINITIAL input can be provided.  The search starting point is\nchanged if the START prefix argument is set.  The symbol at point\nand the last `isearch-string' is added to the future history." (interactive #f(compiled-function () #<bytecode 0x1a52eb717942>)) #<bytecode -0x170ea6eb75f6d515>)) (nil nil))
  consult-line(nil nil)
  funcall-interactively(consult-line nil nil)
  call-interactively(consult-line nil nil)
  command-execute(consult-line)
  recursive-edit()
  debug(debug)
  debug--implement-debug-on-entry(nil nil)
  apply(debug--implement-debug-on-entry (nil nil))
* consult-line(nil nil)
  funcall-interactively(consult-line nil nil)
  call-interactively(consult-line nil nil)
  command-execute(consult-line)

Unable to find theme file for ‘use-package’ when minemacs-theme is not set

While I was trying to adapt my config to load a theme with darkman.el I've noticed I can't delay setting minemacs-theme or not set it at all and let darkman control the loading.

Not sure if that's an issue but it looks like minemacs will not finish loading unless minemacs-tehem is not nil.

Unable to find theme file for ‘use-package’

Parinfer-rust-mode error on m1 / arm64

The configuration of parinfer-mode & auto-downloading is hardcoded to look for x86_64.

There isn't a pre-built artifact for arm64/arm64e for the M1/M2 Macs.

Installing parinfer-rust-darwin.so v0.4.4-beta to ~/.emacs.d/local/parinfer-rust/parinfer-rust-darwin.so Error running timer: (module-open-failed "/Users/Jonathan.Wilner/.emacs.d/local/parinfer-rust/parinfer-rust-darwin.so" "dlopen(/Users/Jonathan.Wilner/.emacs.d/local/parinfer-rust/parinfer-rust-darwin.so, 0x0009): tried: '/Users/Jonathan.Wilner/.emacs.d/local/parinfer-rust/parinfer-rust-darwin.so' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64e' or 'arm64')), '/System/Volumes/Preboot/Cryptexes/OS/Users/Jonathan.Wilner/.emacs.d/local/parinfer-rust/parinfer-rust-darwin.so' (no such file), '/Users/Jonathan.Wilner/.emacs.d/local/parinfer-rust/parinfer-rust-darwin.so' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64e' or 'arm64'))")

Unicode-font-setup void-variable error

Hi there -

Been trying to figure this one out for a few days. It doesn't happen with the vanilla / first install of minemacs, but as soon as I seem to add a few modules, it appears. I get the full error when starting up with debugging enabled, but without it enabled, loading stops when the error hits - forcing me to then try to load the rest of the config by reloading init.el.

I'm totally stumped on how to get past this one & how to figure out what change / config is generating the problem, other than obviously the call to setup unicode-fonts.

My guess is that this is Mac related & has to do with trying to load a font weight. There's a similar seeming bug that was fixed for Spacemacs, but the workaround about weights/color doesn't seem to help, at least as I'm trying to apply it.

I'd love any help or direction to where to look in the configuration or how to give better debug feedback.

Thanks!


Debugger entered--Lisp error: (void-variable \...) (progn (set-fontset-font "fontset-default" '(64256 . 64335) (font-spec :name "Arial Unicode MS:" :registry "iso10646-1")) (set-fontset-font "fontset-default" '(65856 . 65935) (font-spec :name "Apple Symbols:" :registry "iso10646-1")) (set-fontset-font "fontset-default" '(1536 . 1791) (font-spec :name "Courier New:" :registry "iso10646-1")) (set-fontset-font "fontset-default" '(1536 . 1791) (font-spec :name "Geeza Pro:" :registry "iso10646-1") nil 'append) (set-fontset-font "fontset-default" '(1536 . 1791) (font-spec :name "Baghdad:" :registry "iso10646-1") nil 'append) (set-fontset-font "fontset-default" '(1536 . 1791) (font-spec :name "Damascus:" :registry "iso10646-1") nil 'append) (set-fontset-font "fontset-default" '(1536 . 1791) (font-spec :name "Al Bayan:" :registry "iso10646-1") nil 'append) (set-fontset-font "fontset-default" '(1536 . 1791) (font-spec :name "Arial Unicode MS:" :registry "iso10646-1") nil 'append) (set-fontset-font "fontset-default" '(1536 . 1791) (font-spec :name "Nadeem:" :registry "iso10646-1") nil 'append) \...) eval((progn (set-fontset-font "fontset-default" '(64256 . 64335) (font-spec :name "Arial Unicode MS:" :registry "iso10646-1")) (set-fontset-font "fontset-default" '(65856 . 65935) (font-spec :name "Apple Symbols:" :registry "iso10646-1")) (set-fontset-font "fontset-default" '(1536 . 1791) (font-spec :name "Courier New:" :registry "iso10646-1")) (set-fontset-font "fontset-default" '(1536 . 1791) (font-spec :name "Geeza Pro:" :registry "iso10646-1") nil 'append) (set-fontset-font "fontset-default" '(1536 . 1791) (font-spec :name "Baghdad:" :registry "iso10646-1") nil 'append) (set-fontset-font "fontset-default" '(1536 . 1791) (font-spec :name "Damascus:" :registry "iso10646-1") nil 'append) (set-fontset-font "fontset-default" '(1536 . 1791) (font-spec :name "Al Bayan:" :registry "iso10646-1") nil 'append) (set-fontset-font "fontset-default" '(1536 . 1791) (font-spec :name "Arial Unicode MS:" :registry "iso10646-1") nil 'append) (set-fontset-font "fontset-default" '(1536 . 1791) (font-spec :name "Nadeem:" :registry "iso10646-1") nil 'append) \...)) unicode-fonts--setup-1("fontset-default" nil) unicode-fonts-setup() (progn (select-frame frame 'norecord) (let* ((unicode-font-family (and t (plist-get minemacs-fonts :unicode-font-family)))) (if unicode-font-family (let ((tail unicode-fonts-block-font-mapping)) (while tail (let ((unicode-block ...)) (let* (...) (setcar ... ...)) (setq tail (cdr tail))))) nil)) (unicode-fonts-setup)) (unwind-protect (progn (select-frame frame 'norecord) (let* ((unicode-font-family (and t (plist-get minemacs-fonts :unicode-font-family)))) (if unicode-font-family (let ((tail unicode-fonts-block-font-mapping)) (while tail (let (...) (let* ... ...) (setq tail ...)))) nil)) (unicode-fonts-setup)) (if (frame-live-p old-frame) (progn (select-frame old-frame 'norecord))) (if (buffer-live-p old-buffer) (progn (set-buffer old-buffer)))) (let ((old-frame (selected-frame)) (old-buffer (current-buffer))) (unwind-protect (progn (select-frame frame 'norecord) (let* ((unicode-font-family (and t (plist-get minemacs-fonts :unicode-font-family)))) (if unicode-font-family (let ((tail unicode-fonts-block-font-mapping)) (while tail (let ... ... ...))) nil)) (unicode-fonts-setup)) (if (frame-live-p old-frame) (progn (select-frame old-frame 'norecord))) (if (buffer-live-p old-buffer) (progn (set-buffer old-buffer))))) (progn (let ((old-frame (selected-frame)) (old-buffer (current-buffer))) (unwind-protect (progn (select-frame frame 'norecord) (let* ((unicode-font-family (and t ...))) (if unicode-font-family (let (...) (while tail ...)) nil)) (unicode-fonts-setup)) (if (frame-live-p old-frame) (progn (select-frame old-frame 'norecord))) (if (buffer-live-p old-buffer) (progn (set-buffer old-buffer)))))) (if (and frame (display-graphic-p frame)) (progn (let ((old-frame (selected-frame)) (old-buffer (current-buffer))) (unwind-protect (progn (select-frame frame 'norecord) (let* ((unicode-font-family ...)) (if unicode-font-family (let ... ...) nil)) (unicode-fonts-setup)) (if (frame-live-p old-frame) (progn (select-frame old-frame 'norecord))) (if (buffer-live-p old-buffer) (progn (set-buffer old-buffer))))))) +unicode-fonts-setup-font(#<frame *minemacs-splash* 0x12e1a0230>) (if (display-graphic-p) (+unicode-fonts-setup-font (selected-frame)) (add-hook 'after-make-frame-functions #'+unicode-fonts-setup-font)) +unicode-fonts-initialize() run-hooks(minemacs-after-startup-hook) (progn (setq minemacs-after-startup-hook (reverse minemacs-after-startup-hook)) nil (run-hooks 'minemacs-after-startup-hook)) (if minemacs-after-startup-hook (progn (setq minemacs-after-startup-hook (reverse minemacs-after-startup-hook)) nil (run-hooks 'minemacs-after-startup-hook))) eval-buffer(#<buffer *load*> nil "/Users/Jonathan.Wilner/.emacs.d/core/minemacs-load..." nil t) ; Reading at buffer position 592 load-with-code-conversion("/Users/Jonathan.Wilner/.emacs.d/core/minemacs-load..." "/Users/Jonathan.Wilner/.emacs.d/core/minemacs-load..." nil t) require(minemacs-loaded) +minemacs--loaded-h() run-hooks(emacs-startup-hook term-setup-hook) #f(compiled-function () #<bytecode 0x41bcab4a44e7572>)() normal-top-level()

about icon

hi @abougouffa
I reinstalled your .emacs.d to make sure the environment is clean
Re-downloaded emacs29.0.90 build with ./configure --with-native-compilation
make && make install
then open emacs there is some problem need your help
image
image
the icon and icon size looks abnormal
i have rebuild all package but not resolved
I don't know if it's a unicode-fonts problem run (unicode-fonts-setup) nothing happened

Support on apple M1/M2

I'm getting error related to parinfer-rust saying it requires aarm64, but got x86_64 (or something to that effect)

Could be due to this

how to use this pacakge

i have add this config on my ~/.minemacs.d/config.el

(use-package screenshot
  :straight (:host github :repo "donneyluck/screenshot")
  :config (setq screenshot-upload-fn "upload %s 2>/dev/null"))

when start emacs press M-x
there is no function screenshot
i have read the source code screenshot.el
function screenshot is an autoload function
i don`t elisp how to load package.
so realy need your help
thanks for your time

Support for Emacs 28.1

I'm on macOS Catalina (10.15.7) and unable to upgrade emacs (brew does not support this version anymore)
So I'm stuck with emacs 28.1

Are there specific features in 28.2 (that are not in 28.1) which are required for minemacs ?

FWIW, I got minemacs working on Emacs 28.1 by changing this line
I'll leave it up to you whether you want to support this lower minor version or stick to 28.2

How to Implement a Web Search Engine

hi,@abougouffa
i want Implement a Search Engine like doom emacs press SPC s o (search online)
but i don`t know how to do this (I have not written a elisp package)
can you implement an example for me in minemacs
thks for your time
image

Getting `wrong-type-argument sequencep t` on fresh installation

rm -rf .emacs.d && git clone https://github.com/abougouffa/minemacs.git ~/.emacs.d && emacs --debug-init

Got the following stack trace.

Debugger entered--Lisp error: (wrong-type-argument sequencep t)
  cl-remove(nil t :if #f(compiled-function (denied) #<bytecode -0x3e0c13122e382f7>))
  cl-remove-if(#f(compiled-function (denied) #<bytecode -0x3e0c13122e382f7>) t)
  straight--build-native-compile((:type git :host github :repo "radian-software/straight.el" :files ("straight*.el") :branch "master" :package "straight" :local-repo "straight.el"))
  run-hook-with-args(straight--build-native-compile (:type git :host github :repo "radian-software/straight.el" :files ("straight*.el") :branch "master" :package "straight" :local-repo "straight.el"))
  straight--build-package((:type git :host github :repo "radian-software/straight.el" :files ("straight*.el") :branch "master" :package "straight" :local-repo "straight.el") nil)
  #f(compiled-function () #<bytecode -0x9421ad012ab59a2>)()
  straight--transaction-exec(use-package-\"c809124e9c5270ea1c72e2c3507331d1\"-nil-nil :now #f(compiled-function () #<bytecode -0x9421ad012ab59a2>))
  straight-use-package((straight :type git :host github :repo "radian-software/straight.el" :files ("straight*.el") :branch "master"))
  load-with-code-conversion("/Users/mandar/.emacs.d/local/straight/repos/..." "/Users/mandar/.emacs.d/local/straight/repos/..." nil t)
  load("~/.emacs.d/local/straight/repos/straight.el/bootst..." nil nomessage)
  (let ((bootstrap-file (concat straight-base-dir "straight/repos/straight.el/bootstrap.el")) (bootstrap-version 6)) (if (file-exists-p bootstrap-file) nil (save-current-buffer (set-buffer (url-retrieve-synchronously "https://raw.githubusercontent.com/radian-software/..." 'silent 'inhibit-cookies)) (goto-char (point-max)) (eval-print-last-sexp))) (load bootstrap-file nil 'nomessage))
  load-with-code-conversion("/Users/mandar/.emacs.d/core/me-bootstrap.el" "/Users/mandar/.emacs.d/core/me-bootstrap.el" nil nil)
  load("~/.emacs.d/core/me-bootstrap.el" nil nil)
  (if (file-exists-p filename) (load filename nil (not minemacs-verbose)) (user-error "[MinEmacs:Error] Cannot load \"%s\", the file doesn'..." filename))
  (let ((filename (mapconcat #'identity filename-parts nil))) (if (file-exists-p filename) (load filename nil (not minemacs-verbose)) (user-error "[MinEmacs:Error] Cannot load \"%s\", the file doesn'..." filename)))
  +load("~/.emacs.d/core/me-bootstrap.el")
  (let ((module-file (car --dolist-tail--))) (+load module-file) (setq --dolist-tail-- (cdr --dolist-tail--)))
  (while --dolist-tail-- (let ((module-file (car --dolist-tail--))) (+load module-file) (setq --dolist-tail-- (cdr --dolist-tail--))))
  (let ((--dolist-tail-- (append (mapcar (apply-partially #'format "%s%s.el" minemacs-core-dir) minemacs-core-modules) (mapcar (apply-partially #'format "%s%s.el" minemacs-modules-dir) minemacs-modules)))) (while --dolist-tail-- (let ((module-file (car --dolist-tail--))) (+load module-file) (setq --dolist-tail-- (cdr --dolist-tail--)))))
  load-with-code-conversion("/Users/mandar/.emacs.d/init.el" "/Users/mandar/.emacs.d/init.el" t t)
  load("/Users/mandar/.emacs.d/init" noerror nomessage)
  startup--load-user-init-file(#f(compiled-function () #<bytecode -0x14935a4cd9dd74f>) #f(compiled-function () #<bytecode -0x1f3c686ddc0d6275>) t)
  command-line()
  normal-top-level()

This is on emacs 28.2 on macOS (apple M2)

I was using Emacs doom on this machine cause I was unable to use magit earlier. Now that it is fixed, I wanted to get back to Minemacs, but I can't :(

How to search point online

I`m an new emacser
very like your emacs config
Much lighter than doom

question.1:
is there have a search engine to search something google github doc google-translate

Enabling additional fonts

Hi there... wanted to ask where would be the best to stick something like this (or a better idea) to make sure it's picked up in the correct order. I think If it's run before the theme loads it gets overridden...

(set-fontset-font t
                  'hebrew
                  (plist-get hebrew-fonts :variable-pitch-font-family))

(set-fontset-font t
                  'arabic
                  (plist-get arabic-fonts :variable-pitch-font-family))

Usability Questions

@abougouffa Didn't find Discussions hence asking as issue

  1. Do you byte-compile the code like Doom emacs ? In my non-scientific testing, MinEmacs feels slower than Doom emacs
  2. How can I discover the keybindings ? From Doom I was able to guess SPC f f to find file. But once I press SPC I don't see any hints (like Doom) e.g. I tried SPC b d to delete the buffer (From Doom) but it says SPC b d is undefined

about org-mode org-src

@abougouffa hi
In the past few days, when I use org-mode to insert code blocks, there will be smart prompts

But after the latest update, after I press <, it won't help me to complete the code type, I don't know what happened

not the package yasnippet

just press < then can choose src code type

about me-multi-cursors

hello @abougouffa
This file contains some multi-cursor packages
After my test evil-multiedit is my favorite
but there is a small problem
When multiple regions are selected ' kj ' Cannot deselect region
evil-escape work well but can`t do evil-multiedit-abort
I don't know how to fix it please help me

first open dashboard keybind not work

when first open emacs
on dashboard pannel
press r or p can not goto recentf or project
then press q quit dashboard
SPC o D open dashboard the keybind default can work well

abot font set

  minemacs-fonts
  '(:font-family "Noto Sans CJK SC"
    :font-size 13
    :variable-pitch-font-family "IBM Plex Serif"
    :variable-pitch-font-size 13))

i have set minemacs-font to Noto Sans CJK SC
but when input chinese not use this font
image

the font Noto Sans CJK SC is monospaced font

can`t org-export-html

hi @abougouffa
after my test minemacs can`t org export html
i have create a simple file test.org then press SPC m e h h

image

i have read FAQ and add code in config.el

(with-eval-after-load 'org
  (setq org-export-in-background nil))

(with-eval-after-load 'org
  ;; You can also set it to your own custom init.el, just do not forget to
  ;; provide `me-org-export-async-init' in it.
  (setq org-export-async-init-file nil))

still not work
Looks a bit complicated from my beginner's perspective, maybe it needs to be simplified

Error in the definition of the Mu4e context

Hi @abougouffa ,
First of all very nice work

When we enter the context in the config.el file with +mu4e-register-account
example:

(+mu4e-register-account
   "Mon compte" ;; Account name
   ".mails" ;; Maildir
...)

mu4e defines the maildir folder as: /home/user/~/.mails

display-line-numbers-mode very pervasive

I can see that you're disabling display-line-numbers-mode via a writeroom hook, but as far as I can tell it's enabled in org by default... I'm not sure that's a desired behavior most of the time...

prevent-org-source-block-face-from-bleeding-out-in-fold

hi @abougouffa
i have the same problem
https://emacs.stackexchange.com/questions/52324/prevent-org-source-block-face-from-bleeding-out-in-fold
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=52587 maybe a bug

my solution


(defun get-theme-background-color ()
  (cdr (assoc 'background-color (frame-parameters))))

(defun set-org-block-end-line-color ()
  "Set org-src-block face background color to current theme's background color."
  (interactive)
  (let ((background-color (get-theme-background-color))) ; 
    (set-face-attribute 'org-block-end-line nil :background background-color))) ; 

(advice-add 'consult-theme :after (lambda (&rest args) (set-org-block-end-line-color)))

This is just a suggestion, please join according to your preferences

Chemacs 2

I am trying to use the Chemacs 2 Emacs profile switcher with the MinEmacs (and an up-to-date emacs-28 branch, built from source on a Ubuntu 22.04 / x86_64 machine).

I run:

rm -rf ~/.minemacs.d && \
mkdir ~/.minemacs.d && \
git clone --depth 1 https://github.com/abougouffa/minemacs.git ~/.minemacs.d/.emacs.d

I created a Chemacs 2 profile (in my "~/.emacs-profiles.el" file):

(
 ("minemacs" . ((user-emacs-directory . "~/.minemacs.d/.emacs.d/")
               (server-name . "minemacs")
               (env . (("MINEMACS_DIR" . "~/.minemacs.d/")))))
)

The problem is that it completely fails:

emacs --with-profile minemacs

I also tried a more brutal "bootstrapping" approach, but it failed, too:

echo '(load-file "~/.minemacs.d/.emacs.d/init.el")' > ~/.emacs.el
MINEMACS_DIR="${HOME}/.minemacs.d/" emacs

License?

Could you provide a software license file please? The terms of reuse/modification/attribution are not clear to me. Thank you in advance!

projectile-globally-ignored-file-suffixes not work

(projectile-globally-ignored-file-suffixes '(".elc" ".eln" ".pyc" ".o" ".meta" ".cs.meta" ".prefab"))
add some new .meta .cs.meta .prefab and projectile-invalidate-cache
but SPC p f still have .meta files
i dont know why maybe projectile bugs?

expand-region abnormal

I tested under 29.0.90 and 28.2 respectively
I have an org file with 4000+ lines
Everything works fine under emacs28.2
Under 29.0.90, the behavior is a bit abnormal. It seems that it will expand multiple times and then return to the first state take a long time too slow
don't know what caused it
Only happens in org-mode

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.