{"id":28640782,"url":"https://github.com/pd/easy-after-load","last_synced_at":"2026-01-29T09:37:31.276Z","repository":{"id":6082780,"uuid":"7309371","full_name":"pd/easy-after-load","owner":"pd","description":"Automatically eval-after-load a files' contents when emacs loads a library","archived":false,"fork":false,"pushed_at":"2017-08-17T12:31:55.000Z","size":11,"stargazers_count":1,"open_issues_count":0,"forks_count":2,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-06-12T20:08:23.612Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Emacs Lisp","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pd.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2012-12-24T16:24:55.000Z","updated_at":"2018-07-08T16:51:38.000Z","dependencies_parsed_at":"2022-08-30T18:11:56.268Z","dependency_job_id":null,"html_url":"https://github.com/pd/easy-after-load","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/pd/easy-after-load","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pd%2Feasy-after-load","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pd%2Feasy-after-load/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pd%2Feasy-after-load/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pd%2Feasy-after-load/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pd","download_url":"https://codeload.github.com/pd/easy-after-load/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pd%2Feasy-after-load/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28873987,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-29T07:35:32.468Z","status":"ssl_error","status_checked_at":"2026-01-29T07:33:31.463Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":"2025-06-12T20:08:23.510Z","updated_at":"2026-01-29T09:37:31.247Z","avatar_url":"https://github.com/pd.png","language":"Emacs Lisp","funding_links":[],"categories":[],"sub_categories":[],"readme":"# easy-after-load\n[![Build Status](https://travis-ci.org/pd/easy-after-load.png)](https://travis-ci.org/pd/easy-after-load)\n\nEasily manage the 9,000 `eval-after-load` calls scattered throughout\nyour `~/.emacs.d` directory.\n\n## Installation\nUse [MELPA](https://github.com/milkypostman/melpa): `M-x package-install easy-after-load`.\n\nCall `easy-after-load` at some point in your emacs initialization:\n\n```scheme\n(easy-after-load)\n```\n\nIf you have the file `after-loads/after-ruby-mode.el`, that file will be\nloaded immediately after Emacs loads `ruby-mode.el`. You can then add to your\n`ruby-mode-hook`, or `setq` some things, whatever you want:\n\n```scheme\n; after-loads/after-ruby-mode.el\n(add-hook 'ruby-mode 'yard-mode) ; shameless plug: https://github.com/pd/yard-mode.el\n(add-hook 'ruby-mode 'eldoc-mode)\n```\n\nAdditionally, a function `easy-auto-mode` makes maintaining\nyour `auto-mode-alist` entries much simpler:\n\n```scheme\n(easy-auto-mode\n  '((ruby-mode \"\\\\.rake$\" \"Rakefile$\" \"Guardfile$\" \"Gemfile$\"\n               \"\\\\.gemspec$\" \"\\\\.?irbrc$\" \"\\\\.rabl$\" \"\\\\.ru$\")\n    (markdown-mode \"\\\\.md$\" \"\\\\.markdown$\")))\n```\n\n## Customization\nBy default, `easy-after-load` looks for files matching `after-*.el` in the\ndirectory `\u003cuser-emacs-directory\u003e/after-loads`. You can alter this behavior\nin the following ways:\n\n```scheme\n;; Load from a different directory\n(setq easy-after-load-directory (expand-file-name \"package-configs/\" user-emacs-directory)\n\n;; Alternatively, ignore the easy-after-load-directory variable entirely:\n(easy-after-load (expand-file-name \"package-configs/\" user-emacs-directory))\n\n;; Recognize a different pattern\n; The first subexpression should match the name of the feature to run after;\n; this will load \"init-yard-mode.el\" after \"yard-mode\" is loaded.\n(setq easy-after-load-pattern \"^init-\\\\(.+\\\\).el$\")\n\n;; Completely change how to guess what to load.\n; This function is given the name of every \"*.el\" file in easy-after-load-directory;\n; it should return the name of the feature that the file should be loaded after.\n(setq easy-after-load-function (lambda (file)\n                                 ; Given that I am completely insane, I store my\n                                 ; after-load file for \"ruby-mode.el\" in \"le.edom-ybur\"\n                                 (concat (nreverse (string-to-list file)))))\n```\n\n## Credits\nI totally stole this idea from [el-get](https://github.com/dimitri/el-get). But\nthen I stopped using el-get, so I reimplemented it in a more generic fashion.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpd%2Feasy-after-load","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpd%2Feasy-after-load","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpd%2Feasy-after-load/lists"}