{"id":13451199,"url":"https://github.com/radian-software/radian","last_synced_at":"2025-04-04T16:14:04.455Z","repository":{"id":37989667,"uuid":"64223503","full_name":"radian-software/radian","owner":"radian-software","description":"🍉 Dotfiles that marry elegance and practicality.","archived":false,"fork":false,"pushed_at":"2024-08-03T23:53:05.000Z","size":2354,"stargazers_count":490,"open_issues_count":6,"forks_count":47,"subscribers_count":15,"default_branch":"develop","last_synced_at":"2024-08-05T11:11:54.982Z","etag":null,"topics":["emacs","git","iterm2","leiningen","macos","tmux","zsh"],"latest_commit_sha":null,"homepage":"","language":"Emacs Lisp","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/radian-software.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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":"2016-07-26T13:30:14.000Z","updated_at":"2024-08-05T11:11:59.307Z","dependencies_parsed_at":"2023-11-12T01:29:00.434Z","dependency_job_id":"903a219e-63c8-41e1-b2c1-4d7b31f0419d","html_url":"https://github.com/radian-software/radian","commit_stats":null,"previous_names":["raxod502/radian"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/radian-software%2Fradian","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/radian-software%2Fradian/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/radian-software%2Fradian/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/radian-software%2Fradian/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/radian-software","download_url":"https://codeload.github.com/radian-software/radian/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247208143,"owners_count":20901570,"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":["emacs","git","iterm2","leiningen","macos","tmux","zsh"],"created_at":"2024-07-31T07:00:49.678Z","updated_at":"2025-04-04T16:14:04.433Z","avatar_url":"https://github.com/radian-software.png","language":"Emacs Lisp","readme":"**Radian**: dotfiles that marry elegance and practicality.\n\n## Summary\n\nThese dotfiles attempt to achieve the following goals:\n\n* aggressively using best practices, or creating them if none exist\n  already\n* extensively documenting and commenting all code\n* remaining as simple as possible while maximizing usability (in\n  particular, not rebinding keys unnecessarily)\n* supporting local configuration without the need to fork this\n  repository (my local Emacs configuration is almost 750 lines of\n  code)\n\nIf you are a fan of my Emacs packages (such as\n[`straight.el`][straight.el], [`el-patch`][el-patch], ~[Selectrum]~\n(replaced by [Vertico]), [CTRLF], [`prescient.el`][prescient.el],\n[Apheleia], [Blackout]) then you will find all of them configured\nhere.\n\nNote that there is a `main` branch which is not updated as frequently.\nYou may be interested in running this branch if you desire more\nstability.\n\n## Software configured, features\n\n* [Emacs] (**minimum version supported: 27.1**)\n  * Next-generation package manager, [`straight.el`][straight.el]\n  * Clean and DRY package customizations using\n    [`use-package`][use-package]\n  * Simpler and less buggy (than [Ivy], [Counsel], [Helm]) file and\n    command selection using [Vertico]\n  * More robust and streamlined single-buffer text search (than\n    [Isearch], [Swiper]) using [CTRLF]\n  * Sorting by [frecency] and usage on all commands using\n    [`prescient.el`][prescient.el]\n  * IDE features for expanding library of programming languages with\n    [LSP] via [`lsp-mode`][lsp-mode] (Bash, C, C++, CSS, [Flow], [Go],\n    [Haskell], HTML, [JavaScript], [TypeScript], [JSX]/[TSX], [Flow],\n    [LaTeX], [Python] with [Poetry] and [Pipenv] virtualenvs\n    autodetected)\n  * Automatic asynchronous code reformatting without moving point\n    using [Black], [Brittany], [Gofmt], and [Prettier] via [Apheleia]\n  * Informative but minimal mode-line showing file modification\n    status, buffer name, point position, and active modes (with\n    optional right-alignment support)\n  * Extremely clean mode lighters with prettier names thanks to\n    [Blackout]\n  * *All* the needless messages have been suppressed; no errors mean\n    no messages\n  * Aggressive startup optimization: as fast as 0.33s for a fully\n    configured graphical frame (by aggressive lazy-loading of\n    everything; using [`el-patch`][el-patch] to lazy-load packages\n    that weren't designed to be lazy-loaded; by extensive use of idle\n    timers; by disabling of heavy autoloads; by asynchronous\n    byte-compilation of the init-file in a subprocess on successful\n    init, with the local init-file macroexpanded and embedded directly\n    into Radian during compilation; and by running all customizations\n    before the first graphical frame is initialized)\n  * Aggressively consistent coding style and documentation (init-file\n    is 37% comments and docstrings), including heavy use of macros to\n    automate and foolproof common operations\n  * Future-proof customizations using [`el-patch`][el-patch]\n  * Delightful color scheme that works in the terminal ([Zerodark])\n  * Clipboard, mouse, and PATH integration for macOS and Linux\n  * Automatic creation and interactive removal of parent directories\n    when finding and renaming files\n  * Automatically clone Emacs source when needed by `find-function`\n  * Extensible system for defining mnemonic key sequences to jump to\n    dotfiles\n  * Choose to kill, restart, or spawn new Emacs on `C-x C-c`, based\n    partly on [`restart-emacs`][restart-emacs]\n  * Automatic insertion of whitespace and indentation when pressing\n    newline after inserting a pair of delimiters\n  * Global auto-fill configured to activate only in comments,\n    docstrings, and text\n  * Configured packages: [Atomic Chrome][atomic-chrome] (with\n    [Firefox] support), [Autorevert], [buffer-move], [Company],\n    [delete-selection-mode], [Dired], [dumb-jump], [ElDoc], [ESUP],\n    [Forge], [`git-gutter-fringe.el`][git-gutter-fringe.el],\n    [git-link], [Helpful], [Macrostep], [Magit], [no-littering],\n    [Org], [Projectile], [pyvenv], [`rg.el`][rg.el], [Smartparens],\n    [transpose-frame], [undo-tree], [use-package], [visual-regexp],\n    [`which-key`][which-key], and more\n  * Major modes for editing many languages and configuration file\n    types\n  * Tested on GitHub Actions with [Docker] configuration included for\n    all supported Emacs versions\n* [Zsh]\n  * Extremely fast and flexible package manager, [znap]\n  * No-nonsense prompt showing username, hostname, working\n    directory, and Git status, colored by exit code\n  * Less bad default tab-completions\n  * GUI-like file/directory copy/paste functions on the command line\n  * Extensive library of clean and consistent [Git] aliases\n  * Colored man pages\n  * Configured plugins: [wdx], [zsh-autosuggestions],\n    [zsh-completions]\n* [Tmux]\n  * Keybindings for inserting new windows and shifting them left and\n    right\n  * No-nonsense but stylish status bar à la [powerline] but without\n    the dependencies\n  * Spectacular hack to leverage [reattach-to-user-namespace] on\n    macOS with minimal side effects\n* [Git]\n  * Create a repository and a root commit all at once\n  * Alias and unalias without messing with `git config`\n  * More helpful output from `git status`, submodules, and more\n\n## Installation\n\nSetup is in three parts: installing the software, installing the\nconfiguration, and optionally installing local configuration.\n\n### Installing software\n#### macOS\n\n* Emacs: `brew install bash python`; `brew cask install emacs`;\n  (optional for improved startup time) `brew install watchexec`\n  * For LSP servers, refer to [`lsp-mode`\n    documentation](https://emacs-lsp.github.io/lsp-mode/page/languages/)\n* Zsh:\n\n      $ brew install zsh\n      $ echo $(which zsh) | sudo tee -a /etc/shells\n      $ chfn -s $(which zsh)\n\n* Tmux: `brew install tmux`\n* Git: `brew install git`\n\n#### Ubuntu/Debian\n\n* Emacs: `apt install emacs python3`; (optional for improved startup\n  time) `apt install watchexec-cli`\n  * For LSP servers, refer to [`lsp-mode`\n    documentation](https://emacs-lsp.github.io/lsp-mode/page/languages/)\n* Zsh: `apt install zsh`\n* Tmux: `apt install tmux`\n* Git: `apt install git`\n\n#### Arch/Manjaro Linux\n\nI use [Yay](https://github.com/Jguer/yay) to install AUR packages. If\nyou prefer something different, substitute to taste.\n\n* Emacs: `pacman -S emacs python`; (optional for improved startup\n  time) `yay -S watchexec`\n  * For LSP servers, refer to [`lsp-mode`\n    documentation](https://emacs-lsp.github.io/lsp-mode/page/languages/)\n* Zsh: `pacman -S zsh`\n* Tmux: `pacman -S tmux`\n* Git: `pacman -S git`\n\n### Installing configuration\n\nUse symbolic links:\n\n    ./emacs/init.el =\u003e ~/.emacs.d/init.el\n    ./emacs/early-init.el =\u003e ~/.emacs.d/early-init.el\n    ./emacs/versions.el =\u003e ~/.emacs.d/straight/versions/radian.el\n    ./git/.gitconfig =\u003e ~/.gitconfig\n    ./git/.gitexclude =\u003e ~/.gitexclude\n    ./shell/shared/.profile =\u003e ~/.profile\n    ./shell/zsh/.zshrc =\u003e ~/.zshrc\n    ./shell/zsh/.zprofile =\u003e ~/.zprofile\n    ./tmux/.tmux.conf =\u003e ~/.tmux.conf\n\nDo not attempt to use the `emacs` subdirectory of this repository as\n`user-emacs-directory`; it won't work.\n\n### Installing local configuration\n\n* Emacs: `~/.emacs.d/init.local.el` (local configuration) and\n  `~/.emacs.d/straight/versions/radian-local.el` (optional, local\n  lockfile for `straight.el`; will be created when you run `M-x\n  straight-freeze-versions`)\n* All shells: `~/.profile.local`\n* Zsh: `~/.zshrc.local`\n* Tmux: `~/.tmux.local.conf`\n* Git: `~/.gitconfig.local`\n\nI suggest versioning your local dotfiles in a separate repository, and\nsymlinking them to the appropriate locations. This is what I do.\n\nHere is what your `init.local.el` should probably look like:\n\n    ;; code that should be run at the very beginning of init, e.g.\n\n    (setq radian-font ...)\n    (setq radian-font-size ...)\n\n    (radian-local-on-hook before-straight\n\n      ;; code that should be run right before straight.el is bootstrapped,\n      ;; e.g.\n\n      (setq straight-vc-git-default-protocol ...)\n      (setq straight-check-for-modifications ...))\n\n    (radian-local-on-hook after-init\n\n      ;; code that should be run at the end of init, e.g.\n\n      (use-package ...))\n\n    ;; see M-x customize-group RET radian-hooks RET for which hooks you\n    ;; can use with `radian-local-on-hook'\n\nYou don't have to worry about byte-compiling your local init-file;\nRadian actually macroexpands it and embeds it directly into the\nbyte-compiled Radian init-file. Using the macro `radian-local-on-hook`\ninstead of defining functions and adding them to Radian's hooks\nmanually enables some magic that makes this actually work properly.\n\n## Documentation\n\nThere is some very incomplete documentation [here][docs].\n\n## Contributing\n\nPlease feel free to contribute in any way that you would like. If you\nfind a bug or have a question about how to use Radian, [report\nit][issues]. If you want to contribute code, [please do][prs]. (Try to\nfollow the style of the surrounding code.)\n\n### Reading the source code\n\nPlease do! It will probably be informative in one way or another. The\ngoal is that *absolutely everything* should be either obvious or\ncommented.\n\n[apheleia]: https://github.com/radian-software/apheleia\n[atomic-chrome]: https://github.com/alpha22jp/atomic-chrome\n[autorevert]: https://www.emacswiki.org/emacs/AutoRevertMode\n[black]: https://github.com/python/black\n[blackout]: https://github.com/radian-software/blackout\n[brittany]: https://hackage.haskell.org/package/brittany\n[buffer-move]: https://github.com/lukhas/buffer-move\n[company-statistics]: https://github.com/company-mode/company-statistics\n[company]: http://company-mode.github.io/\n[counsel]: https://github.com/abo-abo/swiper#counsel\n[ctrlf]: https://github.com/radian-software/ctrlf\n[delete-selection-mode]: https://www.emacswiki.org/emacs/DeleteSelectionMode\n[dired]: https://www.gnu.org/software/emacs/manual/html_node/emacs/Dired.html\n[docker]: https://www.docker.com/\n[docs]: doc\n[dotman]: https://github.com/raxod502/dotman\n[dumb-jump]: https://github.com/jacktasia/dumb-jump\n[easypg]: https://www.gnu.org/software/emacs/manual/epa.html\n[el-patch]: https://github.com/radian-software/el-patch\n[eldoc]: https://www.emacswiki.org/emacs/ElDoc\n[emacs]: https://www.gnu.org/software/emacs/\n[esup]: https://github.com/jschaf/esup\n[eza]: https://eza.rocks/\n[firefox]: https://www.mozilla.org/en-US/firefox/\n[flow]: https://flow.org/\n[flow]: https://flow.org/\n[flx]: https://github.com/lewang/flx\n[forge]: https://github.com/magit/forge\n[frecency]: https://en.wikipedia.org/wiki/Frecency\n[git-gutter-fringe.el]: https://github.com/syohex/emacs-git-gutter-fringe\n[git-link]: https://github.com/sshaw/git-link\n[git]: https://git-scm.com/\n[go]: https://golang.org/\n[gofmt]: https://golang.org/cmd/gofmt/\n[haskell]: https://www.haskell.org/\n[helm]: https://github.com/emacs-helm/helm\n[helpful]: https://github.com/Wilfred/helpful\n[historian]: https://github.com/PythonNut/historian.el\n[isearch]: https://www.gnu.org/software/emacs/manual/html_node/emacs/Incremental-Search.html\n[issues]: https://github.com/radian-software/radian/issues\n[ivy]: https://github.com/abo-abo/swiper#ivy\n[javascript]: https://developer.mozilla.org/en-US/docs/Web/JavaScript\n[jsx]: https://reactjs.org/docs/introducing-jsx.html\n[latex]: https://www.latex-project.org/\n[lsp-mode]: https://github.com/emacs-lsp/lsp-mode\n[lsp]: https://langserver.org/\n[macrostep]: https://github.com/joddie/macrostep\n[magit]: https://magit.vc/\n[no-littering]: https://github.com/tarsius/no-littering\n[org]: http://orgmode.org/\n[pipenv]: https://docs.pipenv.org/en/latest/\n[poetry]: https://poetry.eustace.io/\n[powerline]: https://github.com/powerline/powerline\n[prescient.el]: https://github.com/radian-software/prescient.el\n[prettier]: https://github.com/prettier/prettier\n[projectile]: http://batsov.com/projectile/\n[prs]: https://github.com/radian-software/radian/pulls\n[python]: https://www.python.org/\n[pyvenv]: https://github.com/jorgenschaefer/pyvenv\n[reattach-to-user-namespace]: https://github.com/ChrisJohnsen/tmux-MacOSX-pasteboard\n[restart-emacs]: https://github.com/iqbalansari/restart-emacs\n[rg.el]: https://github.com/dajva/rg.el\n[selectrum]: https://github.com/raxod502/selectrum\n[smartparens]: https://github.com/Fuco1/smartparens\n[smex]: https://github.com/nonsequitur/smex\n[straight.el]: https://github.com/raxod502/straight.el\n[swiper]: https://github.com/abo-abo/swiper#swiper\n[tmux]: https://tmux.github.io/\n[transpose-frame]: https://www.emacswiki.org/emacs/TransposeFrame\n[tsx]: https://www.typescriptlang.org/docs/handbook/jsx.html\n[typescript]: https://www.typescriptlang.org/\n[undo-tree]: http://www.dr-qubit.org/undo-tree.html\n[use-package]: https://github.com/jwiegley/use-package\n[vertico]: https://github.com/minad/vertico\n[visual-regexp]: https://github.com/benma/visual-regexp.el\n[wdx]: https://github.com/radian-software/wdx\n[which-key]: https://github.com/justbur/emacs-which-key\n[yasnippet]: https://github.com/joaotavora/yasnippet\n[zerodark]: https://github.com/NicolasPetton/zerodark-theme\n[znap]: https://github.com/marlonrichert/zsh-snap\n[zsh-autosuggestions]: https://github.com/zsh-users/zsh-autosuggestions\n[zsh-completions]: https://github.com/zsh-users/zsh-completions\n[zsh]: http://zsh.sourceforge.net/\n","funding_links":[],"categories":["Emacs Lisp"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fradian-software%2Fradian","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fradian-software%2Fradian","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fradian-software%2Fradian/lists"}