branch: new-master commit ee03829f90d25f62c2d36c5fef6f7b5eafb1040d Author: Stefan Monnier <monn...@iro.umontreal.ca> Commit: Stefan Monnier <monn...@iro.umontreal.ca>
Finalize the new master branch * README: Adjust to the new deployment system * .gitignore: Re-add the file. Adjust to new generated subdirectories. * Makefile: New file. * copyright_exceptions: Re-add the file. --- .gitignore | 21 ++++ Makefile | 9 ++ README | 77 ++++-------- copyright_exceptions | 51 ++++++++ externals-list | 336 +++++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 443 insertions(+), 51 deletions(-) diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57f6af1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,21 @@ +*.elc +*.orig +.dir-locals?.el +*~ +\#*\# +ChangeLog +core +/emacs + +# Generated during deployment +/packages/ +/archive/ +/archive-devel/ +/admin/ + +# Testing file +*.log +*.buildlog + +# generated html +html/readme.html diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..b9f30b0 --- /dev/null +++ b/Makefile @@ -0,0 +1,9 @@ +# "Dummy" initial Makefile for GNU Emacs Lisp Package Archive. + +setup: GNUmakefile admin + +GNUmakefile: admin + ln -s admin/GNUmakefile ./ + +admin: + git worktree add -b elpa-admin admin origin/elpa-admin diff --git a/README b/README index 86e999f..7fb7fc7 100644 --- a/README +++ b/README @@ -4,9 +4,14 @@ Copyright (C) 2010-2011, 2014-2020 Free Software Foundation, Inc. \\ See the end of the file for license conditions. +This branch contains auxiliary files for [[https://elpa.gnu.org/][GNU ELPA]]. -This branch contains the sources, deployment scripts, and auxiliary -files for [[https://elpa.gnu.org/][GNU ELPA]]. +The sources are stashed in auxiliary branches, +and the deployment scripts, are in the =elpa-admin= branch. +The =Makefile= will automatically pull that last branch +to populate the =admin= subdirectory, whose own makefile +will in turn populate the =packages= subdirectories from +the relevant sources. This file explains the branch layout, how to add and edit packages, and how to deploy the archive (either on =elpa.gnu.org=, or a local copy @@ -23,7 +28,8 @@ and look for "ELPA". Using a clone of a clone does not work. ** =admin/= -- scripts for administering the package archive. ** =html/= -- HTML for the elpa.gnu.org website. ** =packages/= -- source code for the packages. - +** =archive/= -- destination of the release tarballs built. +** =archive-devel/= -- destination of the snapshot tarballs built. * Packages @@ -31,15 +37,14 @@ and look for "ELPA". Using a clone of a clone does not work. This directory holds the package sources, with one subdirectory for each package. -Each directory in here corresponds to a package, which can be -either a single-file package or a multifile package. +Each directory in here corresponds to a package. A nightly cron job refreshes the GNU ELPA archive from this repository. This cron job only creates a new package when the "version" (as specified in the =Version:= header) of a package is modified. This means that you can safely work on the next version here without worrying about the unstable -code making it to GNU ELPA, and simply update the "version" when you want to +code making it to GNU ELPA, and simply update the =Version:= when you want to release the new code. ** To add a package: (submission, submit) @@ -95,7 +100,7 @@ your changes for you. You should probably also subscribe to to [[https://lists.gnu.org/mailman/listinfo/bug-gnu-emacs][bug-gnu-em...@gnu.org]], since that's where people will report bugs about your package. -*** Add a simple (1-file) package as =packages/<pkg-name>/<pkg-name>.el.= +*** Add a simple package as =<pkg-name>.el=. The file needs to follow the usual coding conventions (most importantly start with =";;; <file> --- <description> -*- lexical-binding: t -*-"=) and have a @@ -107,12 +112,10 @@ For some examples, see [[https://www.gnu.org/software/emacs/manual/html_node/eli (info "(elisp) Simple Packages") #+end_src -*** Add a multi-file package as a directory: =packages/<pkg-name>= +*** Add a multi-file package as a directory -It needs to have a file named =packages/<pkg-name>/<pkg-name>.el= which follows the -same rules as above. Note that if your package is large, we recommend you -add it as an "external" into its own branch, see below discussion of -[[External branches][external branches]]. +It needs to have a file named =<pkg-name>/<pkg-name>.el= which follows the +same rules as above. It additionally follows the same guidelines described in [[https://www.gnu.org/software/emacs/manual/html_node/elisp/Multi_002dfile-Packages.html][Multi-File Packages]] (web link) or in Emacs @@ -158,10 +161,6 @@ and the web-pages from this source code: of the package, if it's maintained externally. - A =News:= section (or "NEWS" file) can/should be used to list the user-visible changes of each version. -- The =Package-Type:= header can be used to force the type of package - created (can be either =simple= for single-file packages or =multi= for - tarballs). By default the type is decided based on whether there are - several Elisp files in the source. - If you want some files to not be included in the tarball, you can put a =.elpaignore= file in the root of your package directory, where you can list patterns of files to ignore (this file is passed to =tar='s =-X=). @@ -183,20 +182,15 @@ correctly in the commit. ** External branches -The above instructions are enough to add regular packages, those that -are maintained primarily here in the repository and are fairly small. -The instructions below are for those maintainers who prefer to use a dedicated -repository or branch for the package or for largish packages. - -In any case, a copy of the code is kept in the =elpa.git= repository -(not in the =master= branch) and should be sync'd with the +A copy of the code of every package is kept in the =elpa.git= repository +(not in the =master= branch) and if applicable should be sync'd with the upstream every once in a while. This copy may include local changes, although these should be kept to a minimum. The copy of the code is not kept in =master= but in the =externals/<pkg-name>= branch in the =elpa.git= repository. -To add a new external package, first add this =elpa.git= repository as a +To add a new package, first add this =elpa.git= repository as a new remote in your existing repository. Then push a local branch to a @@ -277,37 +271,18 @@ This compiles and generates autoloads for all the packages in the ** To deploy the package repository as a remotely-accessible archive: -The deployment process creates sibling directories, so start by creating -a clean directory to work in: - -#+begin_src shell - mkdir elpa ; cd elpa -#+end_src - -The above step is optional, but recommended. - #+begin_src shell - git -c fetch.fsckObjects=false clone .../elpa - (cd elpa; git clone .../emacs) #If you want to generate :core packages. - mkdir build - cd build - (cd ../elpa; git log --format=%H | tail -n 1) >.changelog-witness - ln -s ../elpa/admin - ln -s ../elpa/GNUmakefile - admin/update-archive.sh + make build-all #+end_src -This deploys the packages to the =staging/= directory (sibling of =build=). +This deploys the packages to the =archive/= subdirectory. Unlike =make=, this makes a full copy of the packages, tars up multi-file packages, and doesn't byte-compile any files. -The =fetch.fsckObjects= setting works around a glitch in the ELPA -repository. (See [[https://debbugs.gnu.org/22690][Bug#22690]].) - ** To access a deployed archive To access the archive via HTTP, have a symlink (say) =/var/www/packages= -pointing to =DEST/packages=, and set up Emacs with +pointing to the =archive/= subdirectory, and set up Emacs with #+begin_src elisp (setq package-archives '(("new-elpa" . "http://foo.com/packages"))) @@ -317,7 +292,7 @@ You can also access the archive via normal file access. Such "local archives" are useful for debugging: #+begin_src elisp - (setq package-archives '(("local-elpa" . ".../elpa/packages"))) + (setq package-archives '(("local-elpa" . ".../elpa/archive"))) #+end_src ** Notes specific to =elpa.gnu.org= @@ -327,13 +302,13 @@ a cron job. You can do it by hand by logging in (access set up by FSF admins), and #+begin_src shell - su elpa - cd ~elpa/build - admin/update-archive.sh + su - elpa + cd elpa + make build-all #+end_src Which makes a full archive deployment, as discussed above. The symlink -=/var/www/packages= points to the staging package directory under +=/var/www/packages= points to the corresponding directory under =/home/elpa/=. * License diff --git a/copyright_exceptions b/copyright_exceptions new file mode 100644 index 0000000..7090c87 --- /dev/null +++ b/copyright_exceptions @@ -0,0 +1,51 @@ +./auctex/style/amsart.el +./auctex/style/amsbook.el +./auctex/style/amsbsy.el +./auctex/style/amsmath.el:;; FIXME: What about the copyright for <= 2001? +./auctex/style/amstext.el +./auctex/style/article.el +./auctex/style/bidibeamer.el +./auctex/style/book.el +./auctex/style/czech.el +./auctex/style/danish.el +./auctex/style/dk.el +./auctex/style/dutch.el +./auctex/style/english.el +./auctex/style/german.el +./auctex/style/graphics.el +./auctex/style/j-article.el +./auctex/style/j-book.el +./auctex/style/j-report.el +./auctex/style/jarticle.el +./auctex/style/jbook.el +./auctex/style/jreport.el +./auctex/style/jsarticle.el +./auctex/style/jsbook.el +./auctex/style/jurabib.el:;; you assign the copyright to the FSF. +./auctex/style/ngerman.el +./auctex/style/plfonts.el +./auctex/style/plhb.el +./auctex/style/report.el +./auctex/style/scrartcl.el +./auctex/style/scrbook.el +./auctex/style/scrlttr2.el +./auctex/style/scrpage2.el +./auctex/style/scrreprt.el +./auctex/style/slovak.el +./auctex/style/swedish.el +./auctex/style/virtex.el +./excorporate/excorporate-calfw.el:;; copyright assignment papers on file with the FSF. +./hyperbole/hib-doc-id.el:;; Copyright: +./mmm-mode/mmm-noweb.el:;; Copyright 1995 by Thorsten.Ohl @ Physik.TH-Darmstadt.de +./mmm-mode/mmm-noweb.el:;; Copyright 2003, 2004 Joe Kelsey <j...@zircon.seattle.wa.us> +./mmm-mode/mmm-rpm.el:;; Copyright (C) 2000 by Marcus Harnisch <marcus.harni...@gmx.net> +./rudel/rudel-loaddefs.el +./tramp/tramp-loaddefs.el +./tramp/tramp-sh.el:;; (copyright statements below in code to be updated with the above notice) +./uni-confusables/gen-confusables.el:;; Copyright (C) 1991-2009, 2010 Unicode, Inc. +./uni-confusables/gen-confusables.el:;; gen-confusables.el. The copyright and permissions are the same +./uni-confusables/gen-confusables.el:;; list (covered by the Unicode copyright terms in copyright.html) +./uni-confusables/uni-confusables.el +./uni-confusables/uni-confusables.el:;; Copyright (C) 1991-2009, 2010 Unicode, Inc. +./uni-confusables/uni-confusables.el:;; gen-confusables.el. The copyright and permissions are the same +./uni-confusables/uni-confusables.el:;; list (covered by the Unicode copyright terms in copyright.html) diff --git a/externals-list b/externals-list new file mode 100644 index 0000000..56630a0 --- /dev/null +++ b/externals-list @@ -0,0 +1,336 @@ +;; -*- lisp-data -*- + +;; List of packages that are maintained externally. +;; The list is made of elements of the form (NAME KIND URL OPTS...). +;; +;; Where NAME is the name of the package; +;; +;; KIND can be one of: +;; :external = kept in a separate `externals/<name>' branch. +;; :core = part of GNU Emacs repository. +;; + +;; For KIND :external URL is the URL of the remote git repository that we want +;; to track, or `nil' if there is no upstream, i.e., if development of this +;; package takes place directly on the `externals/<name>' branch of the +;; `elpa.git' repository. For packages of KIND :core URL must be a list of: +;; STRING = A file-name to copy from Emacs repo. +;; (STRING STRING) = A file-name to copy renamed from Emacs repo. + +;; For packages consisting of a single file, a plain string is also allowed. +;; All file-names must be relative to the Emacs repository root and the package +;; directory. When a file-name points to a directory all its files are copied +;; recursively into the package root or specified destination. A special +;; :excludes key can be provided to specify files to exclude when copying +;; directories, wildcards are supported, "*.elc" and "*~" are always excluded. +;; Exclude matches must be against the full file-name, substring matches don't +;; work unless wildcards are used (e.g. use "etc/*" instead of "etc/"). + +;; The FIXMEs indicate that the branch can't be merged as is because it needs +;; some manual intervention (typically, because the two branches have +;; diverged). + +(("ace-window" :external "https://github.com/abo-abo/ace-window") + ("ack" :external "https://github.com/leoliu/ack-el") + ("ada-mode" :external nil) + ("ada-ref-man" :external nil) + ("adaptive-wrap" :external nil) + ("adjust-parens" :external nil) + ("advice-patch" :external nil) + ("aggressive-indent" :external "https://github.com/Malabarba/aggressive-indent-mode") + ("ahungry-theme" :external "https://github.com/ahungry/color-theme-ahungry") + ("all" :external nil) + ("ampc" :external nil) + ("arbitools" :external nil) + ("ascii-art-to-unicode" :external nil) + ("async" :external "https://github.com/jwiegley/emacs-async") + ("auctex" :external "git://git.sv.gnu.org/auctex.git") + ("aumix-mode" :external nil) + ("auto-overlays" :external "http://www.dr-qubit.org/git/predictive.git" + :doc "docs/auto-overlay-manual.texinfo") + ("auto-correct" :external nil) + ("avy" :external "https://github.com/abo-abo/avy") + ("bbdb" :external "git://git.savannah.nongnu.org/bbdb.git") + ("beacon" :external "https://github.com/Malabarba/beacon") + ("bluetooth" :external "https://gitlab.com/rstocker/emacs-bluetooth") + ("bnf-mode" :external "https://github.com/sergeyklay/bnf-mode") + ("brief" :external nil) + ("buffer-expose" :external "https://github.com/clemera/buffer-expose") + ("bug-hunter" :external "https://github.com/Malabarba/elisp-bug-hunter") + ;;FIXME:("cedet" :external "??") + ;; ("cc-mode" :core ("lisp/progmodes/cc-align.el" + ;; "lisp/progmodes/cc-awk.el" + ;; "lisp/progmodes/cc-bytecomp.el" + ;; "lisp/progmodes/cc-cmds.el" + ;; "lisp/progmodes/cc-defs.el" + ;; "lisp/progmodes/cc-engine.el" + ;; "lisp/progmodes/cc-fonts.el" + ;; "lisp/progmodes/cc-guess.el" + ;; "lisp/progmodes/cc-langs.el" + ;; "lisp/progmodes/cc-menus.el" + ;; "lisp/progmodes/cc-mode.el" + ;; "lisp/progmodes/cc-styles.el" + ;; "lisp/progmodes/cc-vars.el" + ;; ;; FIXME: elpa.gnu.org doesn't know how to build + ;; ;; the .info file from this texi file! + ;; "doc/misc/cc-mode.texi")) + ("caps-lock" :external nil) + ("captain" :external nil) + ("chess" :external nil) ;; Was https://github.com/jwiegley/emacs-chess.git + ("cl-generic" :external nil) + ("cl-lib" :external nil) + ("cobol-mode" :external "https://gist.github.com/Edward-H/6768e7dc53ea3dd2adca") + ("cl-print" :core "lisp/emacs-lisp/cl-print.el") + ("clipboard-collector" :external "https://github.com/clemera/clipboard-collector") + ("coffee-mode" :external "https://github.com/defunkt/coffee-mode") + ("compact-docstrings" :external "https://github.com/cpitclaudel/compact-docstrings") + ("company" :external "https://github.com/company-mode/company-mode.git") + ("company-ebdb" :external nil) + ("company-math" :external "https://github.com/vspinu/company-math.git") + ("company-statistics" :external "https://github.com/company-mode/company-statistics") + ("context-coloring" :external "https://github.com/jacksonrayhamilton/context-coloring.git") + ("counsel" :external "https://github.com/abo-abo/swiper") + ("cpio-mode" :external "https://github.com/dlewan/cpio-mode") + ("crisp" :external nil) + ("csv-mode" :external nil) + ("cycle-quotes" :external nil) + ("darkroom" :external "https://github.com/capitaomorte/darkroom.git") + ("dash" :external "https://github.com/magnars/dash.el.git") + ("dbus-codegen" :external "https://github.com/ueno/dbus-codegen-el.git") + ("debbugs" :external nil) + ("delight" :external "https://git.savannah.gnu.org/r/delight.git") + ("dict-tree" :external "http://www.dr-qubit.org/git/predictive.git") + ("diffview" :external "https://github.com/mgalgs/diffview-mode.git") + ("diff-hl" :external "https://github.com/dgutov/diff-hl.git") + ("dired-du" :external nil) + ("dired-git-info" :external "https://github.com/clemera/dired-git-info") + ("disk-usage" :external "https://gitlab.com/ambrevar/emacs-disk-usage") + ("dismal" :external nil) + ("djvu" :external nil) + ("docbook" :external nil) + ("dts-mode" :external "https://github.com/bgamari/dts-mode.git") + ("easy-kill" :external "https://github.com/leoliu/easy-kill") + ("ebdb" :external "https://github.com/girzel/ebdb.git") + ("ebdb-gnorb" :external nil) + ("ebdb-i18n-chn" :external nil) + ("ediprolog" :external nil) + ("eev" :external "https://github.com/edrx/eev.git") ;branch UTF-8 + ("eglot" :external "https://github.com/joaotavora/eglot.git") + ("el-search" :external nil) + ("eldoc" :core "lisp/emacs-lisp/eldoc.el") + ("eldoc-eval" :external "https://github.com/thierryvolpiatto/eldoc-eval.git") + ("electric-spacing" :external nil) + ("elisp-benchmarks" :external nil) + ("emms" :external "https://git.savannah.gnu.org/git/emms.git") + ("enwc" :external "hg::https://hg.savannah.nongnu.org/hgweb/enwc/") + ("epoch-view" :external nil) + ("ergoemacs-mode" :external "https://github.com/ergoemacs/ergoemacs-mode.git") + ("excorporate" :external nil) + ("expand-region" :external "https://github.com/magnars/expand-region.el") + ("exwm" :external "https://github.com/ch11ng/exwm.git") + ("f90-interface-browser" :external "https://github.com/wence-/f90-iface") + ("filladapt" :external nil) + ("flylisp" :external nil) + ("flymake" :core "lisp/progmodes/flymake.el") + ("frame-tabs" :external nil) + ("frog-menu" :external "https://github.com/clemera/frog-menu") + ("fsm" :external nil) + ("gcmh" :external "https://gitlab.com/koral/gcmh") + ("ggtags" :external "https://github.com/leoliu/ggtags") + ("gited" :external nil) + ("gle-mode" :external nil) + ("gnome-c-style" :external "https://github.com/ueno/gnome-c-style.git") + ("gnorb" :external nil) ;; Was "https://github.com/girzel/gnorb" + ("gnu-elpa" :external nil) + ("gnu-elpa-keyring-update" :external nil) + ("gnugo" :external nil) + ("gnus-mock" :external nil) + ("gpastel" :external "https://gitlab.petton.fr/DamienCassou/gpastel") + ("greader" :external "https://gitlab.com/michelangelo-rodriguez/greader") + ("greenbar" :external nil) + ("guess-language" :external "https://github.com/tmalsburg/guess-language.el") + ("heap" :external "http://www.dr-qubit.org/git/predictive.git") + ("highlight-escape-sequences" :external "https://github.com/dgutov/highlight-escape-sequences/") + ("hook-helpers" :external "https://git.savannah.nongnu.org/git/hook-helpers-el.git") + ("html5-schema" :external nil) + ("hydra" :external "https://github.com/abo-abo/hydra") + ("hyperbole" :external "http://git.savannah.gnu.org/r/hyperbole.git") + ("ioccur" :external "https://github.com/thierryvolpiatto/ioccur.git") + ("iterators" :external nil) + ("ivy" :external "https://github.com/abo-abo/swiper") + ("ivy-explorer" :external "https://github.com/clemera/ivy-explorer") + ("ivy-posframe" :external "https://github.com/tumashu/ivy-posframe") + ("javaimp" :external nil) + ("jgraph-mode" :external nil) + ("js2-mode" :external "https://github.com/mooz/js2-mode.git") + ("json-mode" :external nil) + ("jsonrpc" :core "lisp/jsonrpc.el") + ("jumpc" :external nil) + ("kmb" :external nil) + ("landmark" :external nil) + ("leaf" :external "https://github.com/conao3/leaf.el") + ("let-alist" :core "lisp/emacs-lisp/let-alist.el") + ("lex" :external nil) + ("lmc" :external nil) + ("load-dir" :external nil) + ("load-relative" :external "http://github.com/rocky/emacs-load-relative") + ("loc-changes" :external "http://github.com/rocky/emacs-loc-changes") + ("loccur" :external "https://github.com/fourier/loccur") + ("map" :core "lisp/emacs-lisp/map.el") + ("markchars" :external nil) + ("math-symbol-lists" :external "https://github.com/vspinu/math-symbol-lists.git") + ("memory-usage" :external nil) + ("metar" :external nil) + ("midi-kbd" :external nil) + ("mines" :external "https://github.com/calancha/Minesweeper") + ("minibuffer-line" :external nil) + ("minimap" :external nil) + ("mmm-mode" :external "https://github.com/purcell/mmm-mode.git") + ("modus-operandi-theme":external "https://gitlab.com/protesilaos/modus-themes") + ("modus-vivendi-theme" :external "https://gitlab.com/protesilaos/modus-themes") + ("multishell" :external "https://github.com/kenmanheimer/EmacsMultishell") + ("muse" :external "https://github.com/alexott/muse") ;FIXME: Not nearly in-sync + ("myers" :external nil) + ("nadvice" :external nil) + ("nameless" :external "https://github.com/Malabarba/Nameless") + ("names" :external "http://github.com/Malabarba/names") + ("nhexl-mode" :external nil) + ("nlinum" :external nil) + ("notes-mode" :external nil) + ("ntlm" :core "lisp/net/ntlm.el") + ("num3-mode" :external nil) + ("oauth2" :external nil) + ("objed" :external "https://github.com/clemera/objed") + ("omn-mode" :external nil) + ("on-screen" :external "https://github.com/michael-heerdegen/on-screen.el.git") + ("org" + :external "https://code.orgmode.org/bzg/org-mode" + :main-file "lisp/org.el" + :release-branch "maint" + :ignored-files ("etc/schema" "contrib" "mk" "testing" "lisp/org-install.el") + :renames (("lisp/" "")) + :news "etc/ORG-NEWS" + :doc "doc/org-manual.org") + ("org-translate" :external nil) + ("orgalist" :external nil) + ("org-edna" :external "https://savannah.nongnu.org/projects/org-edna-el") ;URL? + ("osc" :external nil) + ("other-frame-window" :external nil) + ("paced" :external "bzr::bzr://bzr.savannah.nongnu.org/paced-el/trunk") + ("pabbrev" :external "https://github.com/phillord/pabbrev.git") + ("package-fixes" :external nil) + ("parsec" :external "https://github.com/cute-jumper/parsec.el.git") + ("path-iterator" :external nil) + ("peg" :external) ;Was in "https://github.com/ellerh/peg.el" + ("persist" :external "https://gitlab.com/phillord/persist.git") + ("phps-mode" :external "https://github.com/cjohansson/emacs-phps-mode") + ("pinentry" :external "https://github.com/ueno/pinentry-el.git") + ("poker" :external nil) + ("posframe" :external "https://github.com/tumashu/posframe") + ("prefixed-core" :external nil) + ("project" :core "lisp/progmodes/project.el") + ("psgml" :external "https://github.com/lenst/psgml.git") + ;; FIXME: We actually used a filtered version of pspp.git using: + ;; git filter-branch \ + ;; --index-filter "git read-tree --empty; \ + ;; git reset \$GIT_COMMIT -- pspp-mode.el" \ + ;; -- -- pspp-mode.el + ("pspp-mode" :external nil) ;; Was "https://git.sv.gnu.org/r/pspp.git" + ("python" :core "lisp/progmodes/python.el") + ("quarter-plane" :external nil) + ("queue" :external "http://www.dr-qubit.org/git/predictive.git") + ("rainbow-mode" :external nil) + ("rbit" :external nil) + ("rcirc-color" :external nil) + ("rcirc-menu" :external nil) + ("realgud" :external "https://github.com/realgud/realgud") + ("realgud-ipdb" :external "https://github.com/realgud/realgud-ipdb") + ("realgud-jdb" :external "https://github.com/realgud/jdb") + ("realgud-lldb" :external "https://github.com/realgud/realgud-lldb") + ("realgud-node-debug" :external "https://github.com/realgud/realgud-node-debug") + ("realgud-node-inspect" :external "https://github.com/realgud/realgud-node-inspect") + ("realgud-trepan-ni" :external "https://github.com/realgud/realgud-ni") + ("rec-mode" :external "https://git.savannah.gnu.org/git/recutils/rec-mode.git") + ("register-list" :external nil) + ("relint" :external "https://github.com/mattiase/relint") + ("rich-minority" :external "https://github.com/Malabarba/rich-minority") + ("rnc-mode" :external nil) + ("rt-liberation" :external "https://git.savannah.nongnu.org/git/rtliber") + ("rudel" :external nil) ;; Was bzr::bzr://rudel.bzr.sourceforge.net/bzrroot/rudel/trunk + ("scanner" :external "https://gitlab.com/rstocker/scanner.git") + ("scroll-restore" :external nil) + ("sed-mode" :external nil) + ("seq" :external nil) + ("shelisp" :external nil) + ("shell-command+" :external "https://git.sr.ht/~zge/bang/tree/shell-command+") + ("shell-quasiquote" :external nil) + ("shen-mode" :external nil) + ("sisu-mode" :external nil) + ("slime-volleyball" :external nil) + ("sm-c-mode" :external nil) + ("smalltalk-mode" :external "git://git.sv.gnu.org/smalltalk") + ("smart-yank" :external nil) + ("sml-mode" :external nil) + ("so-long" :core "lisp/so-long.el") + ("soap-client" :core ("lisp/net/soap-client.el" "lisp/net/soap-inspect.el")) + ("sokoban" :external nil) + ("sotlisp" :external "https://github.com/Malabarba/speed-of-thought-lisp") + ("spinner" :external "https://github.com/Malabarba/spinner.el") + ("sql-beeline" :external nil) + ("sql-indent" :external "https://github.com/alex-hhh/emacs-sql-indent") + ("sql-smie" :external nil) + ("ssh-deploy" :external "https://github.com/cjohansson/emacs-ssh-deploy") + ("stream" :external nil) + ("svg" :core ("lisp/svg.el")) + ("svg-clock" :external nil) + ("swiper" :external "https://github.com/abo-abo/swiper") + ("system-packages" :external "https://gitlab.com/jabranham/system-packages") + ("systemd" :external nil) + ("temp-buffer-browse" :external "https://github.com/leoliu/temp-buffer-browse") + ("test-simple" :external "https://github.com/rocky/emacs-test-simple") + ("timerfunctions" :external nil) + ("tiny" :external "https://github.com/abo-abo/tiny") + ("tNFA" :external "http://www.dr-qubit.org/git/predictive.git") + ("tramp" :external "git://git.sv.gnu.org/tramp.git" :branch "elpa") + ("tramp-theme" :external nil) + ("transcribe" :external nil) + ("transient" :external "https://github.com/magit/transient" + ;; :main-file "lisp/transient.el" + ;; :renames (("lisp/" "")) + :doc "docs/transient.org") + ("trie" :external "http://www.dr-qubit.org/git/predictive.git") + ("undo-tree" :external "http://www.dr-qubit.org/git/undo-tree.git") + ("uni-confusables" :external nil) + ("uniquify-files" :external nil) + ("url-http-ntlm" :external nil) + ("validate" :external "https://github.com/Malabarba/validate.el") + ("valign" :external "https://github.com/casouri/valign") + ("vcard" :external nil) + ("vdiff" :external "https://github.com/justbur/emacs-vdiff") + ("vcl-mode" :external "git://git.gnu.org.ua/vcl-mode") + ("vigenere" :external nil) + ("visual-filename-abbrev" :external nil) + ("visual-fill" :external nil) + ("vlf" :external "https://github.com/m00natic/vlfi") + ("verilog-mode" :core "lisp/progmodes/verilog-mode.el") + ("wcheck-mode" :external "https://github.com/tlikonen/wcheck-mode") + ("wconf" :external "https://github.com/ilohmar/wconf") + ("web-server" :external "https://github.com/eschulte/emacs-web-server.git") + ("webfeeder" :external "https://gitlab.com/ambrevar/emacs-webfeeder.git") + ("websocket" :external "https://github.com/ahyatt/emacs-websocket.git") + ("windower" :external "https://gitlab.com/ambrevar/emacs-windower") + ("windresize" :external nil) + ("wisi" :external nil) + ("wisitoken-grammar-mode" :external nil) + ("which-key" :external "https://github.com/justbur/emacs-which-key") + ("wpuzzle" :external nil) + ("xclip" :external nil) + ("xelb" :external "https://github.com/ch11ng/xelb.git") + ("xpm" :external nil) + ("xr" :external "https://github.com/mattiase/xr") + ("xref" :core "lisp/progmodes/xref.el") + ("yasnippet" :external "https://github.com/capitaomorte/yasnippet.git") + ("yasnippet-classic-snippets" :external nil) + ("zones" :external nil) ;https://www.emacswiki.org/emacs/zones.el + ("ztree" :external "https://github.com/fourier/ztree") + )