{"id":16662861,"url":"https://github.com/lionyxml/lemacs","last_synced_at":"2025-12-24T17:29:22.929Z","repository":{"id":214639518,"uuid":"737006480","full_name":"LionyxML/lemacs","owner":"LionyxML","description":"The LEmacs Emacs config - Same experience, both on TUI and GUI","archived":false,"fork":false,"pushed_at":"2024-10-30T01:32:18.000Z","size":3168,"stargazers_count":20,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-10-30T03:58:04.777Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Emacs Lisp","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LionyxML.png","metadata":{"files":{"readme":"README.org","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-12-29T14:18:22.000Z","updated_at":"2024-10-30T01:32:21.000Z","dependencies_parsed_at":"2024-01-25T21:26:11.503Z","dependency_job_id":"b6bbf1fa-3985-4414-90fb-cf01da28e3a2","html_url":"https://github.com/LionyxML/lemacs","commit_stats":null,"previous_names":["lionyxml/lemacs"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LionyxML%2Flemacs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LionyxML%2Flemacs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LionyxML%2Flemacs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LionyxML%2Flemacs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LionyxML","download_url":"https://codeload.github.com/LionyxML/lemacs/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243301128,"owners_count":20269286,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-12T10:39:07.625Z","updated_at":"2025-12-24T17:29:22.921Z","avatar_url":"https://github.com/LionyxML.png","language":"Emacs Lisp","readme":"#+TITLE: LEmacs - L(ionyx)Emacs Configuration\n#+AUTHOR: Rahul M. Juliato\n#+EMAIL: rahul.juliato@gmail.com\n#+OPTIONS: toc:nil\n\nCareful, this is for personal use and is currently *unstable*.\n\n** Features\nAs this is my fully-featured configuration for Emacs, you will find\neverything and some quirks around here. Looking for something simpler?\nCheck the last section of this document (*Other Configurations*).\n\nI can't possibly walk you through all my thought processes, especially\nwhen designing new features like *a shortcut to quickly find a project\nfolder, add it as a Project, and open it*, or explaining why I have\ntabs configured the way they are (tmux-like), or why my persp-mode is\nset up as a session manager (again, tmux-like).\n\nThat said, I encourage readers to explore *lemacs-init.org*. Yes,\nLEmacs is now a literate configuration that you can read through,\ngradually discovering things to use (or ideas to borrow).\n\nHere are some examples of what you might find here:\n\nLEmacs Splash Screen:\n\n- Splash Screen:\n[[./doc/lemacs-01.png]]\n\n- Elfeed for RSS Feed Reading:\n(yep, before programming, I'll show you some other stuff).\n[[./doc/lemacs-02.png]]\n\n- EWW Web Wowser:\n[[./doc/lemacs-03.png]]\n\n- EMMS for playing multimedia:\n[[./doc/lemacs-04.png]]\n\n- Yeetube for playing youtube:\n[[./doc/lemacs-05.png]]\n\n- LEmacs defcustoms:\nDo you prefer Emacs default keybindings? Change a toggle.\n\nDon't want nerd-icons? Change a toggle.\n\nPrefer Eglot over LSP-Mode? Change a toggle.\n\nExplore these customizable options! ;)\n\n[[./doc/lemacs-06.png]]\n\n- Programming:\nHere we have Next.JS / React.JS app written on Typescript.\n\nAll the modern goodies: Treesitter, LSP Server, Diff Highlights, and\nmore:\n\n[[./doc/lemacs-07.png]]\n\n- Hovering Docs:\n\n[[./doc/lemacs-08.png]]\n\n- Completion with documentation using Corfu:\n\n[[./doc/lemacs-09.png]]\n\n- Jumping trough errors with Flymake and Consult:\n\n[[./doc/lemacs-10.png]]\n\n- Grepping with grep or rg and Consult for navigating:\n\n[[./doc/lemacs-11.png]]\n\n- Finding files in a project:\n\n[[./doc/lemacs-12.png]]\n\n- Tree navigation with Treemacs:\n\n[[./doc/lemacs-13.png]]\n\nAnd many more... AI Assistance, Containers manipulation, IRC\nChat, and so on...\n\n** Motivation\n\nThis configuration is crafted to deliver a seamless and delightful\nEmacs experience, whether you're navigating through the Text User\nInterface (TUI) or the Graphical User Interface (GUI). It's designed\nto excel in both standalone mode and as a daemon/client setup.\n\nThis means (of course to my personal taste and opinions) that I will\nprefer packages that support both Terminal and Graphics, so you may\nnever be worried about where to use Emacs or other editors.\n\nYou can use Emacs, everywhere, always ;)\n\n** Installation\n*** Preparation\n**** Emacs Version\nEnsure you have Emacs version 30 or higher, compiled with native\ncompilation, JSON, and tree-sitter support.\n\n#+BEGIN_SRC bash\n  emacs --version\n  emacs -nw -q --batch --eval '(message system-configuration-options)'\n#+END_SRC\n\n**** JS/TS LSP Servers\nTo use LSP (and also node/typescript/eslint, prettier), you can\ninstall Node JS globally or use a version management tool, in the case\nyou have several projects with several node versions it is common to\nuse **nvm** or **asdf**. I recommend to install Node JS via **asdf**\n(https://asdf-vm.com/).\n\nNote: asdf must be loaded on *.bash_profile* for macos, and *.bashrc* for\nLinux, for testing (after Lemacs install), run eshell and look at\n**asdf --version** output.\n\nYou need to Install globally (and for every every asdf plugin shim if\nyou're using asdf):\n#+BEGIN_SRC bash\nnpm i -g vscode-langservers-extracted prettier\nnpm i -g typescript-language-server typescript\nnpm i -g eslint\n#+END_SRC\n\n**** Backup your config\nMake a backup of your ~/.emacs.d/, ~/.emacs files and delete them,\nrecommended:\n\n#+BEGIN_SRC bash\ncp -r ~/.emacs.d/ ~/.emacs.d_backup\ncp ~/.emacs ~/.emacs_backup\n\nrm -rf ~/.emacs.d ~/.emacs\n#+END_SRC\n\n*** Clone and install LEmacs\nNow, let's get you set up:\n\n#+BEGIN_SRC bash\ngit clone https://github.com/LionyxML/LEmacs ~/.emacs.d\nemacs -nw --eval=\"(lemacs/first-install)\"\n#+END_SRC\n\nIf anything goes awry, exit and restart the installation script. If\nall goes smoothly, you'll be back at your shell prompt.\n\nLaunch Emacs, whether from the GUI or TUI (emacs -nw or emacs), and\nyou're good to roll!\n\n** Troubleshooting\n*** LSP-mode\nIt's always a good idea to run **M-x lsp-doctor** to check that\neverything is working.\n\nThis might be necessary when dealing with NodeJS, watches, etc:\n#+BEGIN_SRC bash\necho fs.inotify.max_user_watches=393210 \\\n| sudo tee -a /etc/sysctl.conf \\\n\u0026\u0026 sudo sysctl -p\n#+END_SRC\n\n*** Emacs is hanging...\n\nIf you're experiencing UI freezes in Emacs, here's a handy way to\npinpoint the culprit:\n#+BEGIN_SRC emacs-lisp\nM-x profiler-start\n;; choose CPU\n;; do stuff and make the UI freeze\nM-x profiler-stop\nM-x profiler-report\n#+END_SRC\n\nThis will help you identify what's causing the slowdown. Pay attention\nto the profiler report for insights into resource-intensive\noperations.\n\n\nIt's worth noting that this configuration makes native compilation asynchronous.\nConsequently, the first time you use a package, there might be a\nbackground process compiling it. Check for any Async-native-compile-log buffers using:\n\n#+BEGIN_SRC bash\nM-x ibuffer\n#+END_SRC\n\nInspect these buffers to ensure that compilation processes are running\nas expected.\n\n** FAQ\n*** Why not X Feature?\nIf you're wondering, \"Why not X feature?\"—great question!\n\nOpen an issue on our GitHub repository, and let's dive into the\ndiscussion. I am open to exploring new additions or substitutions.\n\n** Extra: Emacs install\n*** Compile Emacs from scratch (Debian Biased)\n\nBefore everything, this is optional, but may help on reducing\ntroubleshooting time:\n\n#+BEGIN_SRC bash\nsudo apt-get build-dep emacs\n#+END_SRC\n\nTake a look on the repo first to make sure Emacs on master branch\nmatches the above version requirement.\n\n#+BEGIN_SRC bash\ngit clone git://git.savannah.gnu.org/emacs.git\n\n./configure --with-native-compilation=aot --with-tree-sitter --with-gif --with-png --with-jpeg --with-rsvg --with-tiff --with-imagemagick --with-x-toolkit=lucid --with-mailutils\n\nmake clean\n\nmake -j8\n\nsudo make install\n#+END_SRC\n\n*** Debian (or Debian Based distros)\nFor Debian or Debian based Distros, such as Ubuntu and it's derivatives.\n\n#+BEGIN_SRC bash\nsudo apt install emacs\n#+END_SRC\n\nCheck the installed version with:\n#+BEGIN_SRC bash\nemacs --version\n#+END_SRC\n\n*** MacOS\nOn MacOS compiling with a brew formulae is the recommendated way:\n#+BEGIN_SRC bash\nbrew install \\\n  --ignore-dependencies \\\n  emacs-plus@30 \\\n  --with-native-comp \\\n  --with-xwidgets \\\n  --with-imagemagick \\\n  --with-mailutils \\\n  --with-poll \\\n  --with-no-frame-refocus\n#+END_SRC\n** Other Configurations\n\n- Do you need something simpler like a Kickstart configuration you can\n  build on the top of it? Moving from neovim? Fear no more! Take a\n  look at: [[https://github.com/LionyxML/emacs-kick]]\n\n- Would you like to explore how far you can go with only Emacs? No\n  external packages? Raw Emacs-Lisp? Take a look at **EMACS-SOLO** my\n  experimental configuration that aims exactly that:\n  [[https://github.com/LionyxML/emacs-solo]]\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flionyxml%2Flemacs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flionyxml%2Flemacs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flionyxml%2Flemacs/lists"}