Subject: bug#29202: 25.1.50; enhancement: list-package support for packages from git sources

From: Deric Bytes <[email-masked]>
Date: Tue, 7 Nov 2017 23:31:24 +0000

--text follows this line--

Can list-packages be made to work with packages from git repositories

Here are some ideas on how to integrate it.

1. User has to set some new list-packages preferences.

   ;; places to look for sources, ordered by preference
   (setq preference-of-source '(git melpa other1 other2))

   ;; if more than one source, only show one with highest preference
   (setq only-show-one-source t)

   ;; change prefered source for these exceptions - '(package source opts)
   (setq exceptions '((package-x melpa)
                      (package-y nil '((branch . "bleeding edge"))

   (setq default-branch 'master)

2. A list of known useful git sources is maintained within emacs.

   (setq available-git-packages '((package1 . get-recipe1)
                                  (package2 . get-recipe2))

    el-get already maintains a list of get-recipes for packages from
    various sources git (url), github, wiki...

3. Then M-x list-packages works like it normally does.
   when install is run it calls something like el-get with associated
recipe.

4. a key binding is available to click on package and change get-recipe.
   i.e. set branch, tag, description, website, build instructions

5. If a git recipe is changed, a copy of the default is placed in a user
   specified directory `users-git-recipe-dir'. Changes are made to that
   recipe.  Any recipies in this directory will overshadow the default
 recipies of the same name. This is so that after an update the users
  changes are not overwritten.

In GNU Emacs 25.1.50.2 (x86_64-pc-linux-gnu, GTK+ Version 3.14.5)
 of 2016-08-25 built on penguin
Repository revision: 95c82efdb141029de89d9136a9ce4fe907de7c5e
Windowing system distributor 'The X.Org Foundation', version 11.0.11604000
System Description: Debian GNU/Linux 8.9 (jessie)

Recent messages:
Quit [9 times]
buffer evaluated
Mark set
Repeating command dabbrev-expand-dem [5 times]
Scanning for dabbrevs...done
user-error: No further dynamic expansion for ‘o’ found
Repeating command dabbrev-expand-dem [6 times]
Scanning for dabbrevs...done
user-error: No further dynamic expansion for ‘o’ found
Auto-saving...done

Configured features:
XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND DBUS GSETTINGS NOTIFY
GNUTLS LIBXML2 FREETYPE XFT ZLIB TOOLKIT_SCROLL_BARS GTK3 X11

Important settings:
  value of $LANG: en_GB.utf8
  locale-coding-system: utf-8

Major mode: Emacs-Lisp

Minor modes in effect:
  show-paren-mode: t
  global-company-mode: t
  company-mode: t
  spaceline-info-mode: t
  spaceline-helm-mode: t
  beacon-mode: t
  global-auto-complete-mode: t
  auto-complete-mode: t
  yas-global-mode: t
  yas-minor-mode: t
  save-place-mode: t
  Info-breadcrumbs-in-mode-line-mode: t
  global-evil-surround-mode: t
  evil-surround-mode: t
  evil-mode: t
  evil-local-mode: t
  diff-hl-flydiff-mode: t
  global-diff-hl-mode: t
  diff-hl-mode: t
  global-git-commit-mode: t
  visible-mark-mode: t
  winner-mode: t
  savehist-mode: t
  recentf-mode: t
  window-numbering-mode: t
  shell-dirtrack-mode: t
  helm-descbinds-mode: t
  global-auto-revert-mode: t
  flx-ido-mode: t
  ido-everywhere: t
  diff-auto-refine-mode: t
  override-global-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  transient-mark-mode: t
  abbrev-mode: t

Load-path shadows:
~/.emacs.d/icicles/hexrgb hides ~/.emacs.d/el-get/hexrgb/hexrgb
~/.emacs.d/el-get/spaceline/tests hides ~/.emacs.d/el-get/toggle-it/tests
/home/dericbytes/.emacs.d/el-get/ol-mad/init/kb-ol-mad hides
/home/dericbytes/emacs-config/dem/kb-dem/kb-ol-mad
/home/dericbytes/.emacs.d/el-get/ol-mad/init/kb-ol-select-face-mode-map
hides /home/dericbytes/emacs-config/dem/kb-dem/kb-ol-select-face-mode-map
/home/dericbytes/.emacs.d/el-get/ol-mad/init/kb-ol-select-mode-map hides
/home/dericbytes/emacs-config/dem/kb-dem/kb-ol-select-mode-map
/home/dericbytes/.emacs.d/el-get/ol-mad/init/init-ol-mad hides
/home/dericbytes/emacs-config/dem/setup-dem/init-ol-mad
/home/dericbytes/emacs-config/dem/libs-dem/my-shift-mode hides
/home/dericbytes/emacs-config/dem/setup-dem/my-shift-mode
~/.emacs.d/el-get/dired-hacks/dired-hacks-utils hides
/home/dericbytes/.emacs.d/elpa/dired-hacks-utils-20160527.1436/dired-hacks-utils
~/.emacs.d/el-get/expand-region/python-mode-expansions hides
/home/dericbytes/.emacs.d/elpa/expand-region-20160729.131/python-mode-expansions
~/.emacs.d/el-get/expand-region/python-el-expansions hides
/home/dericbytes/.emacs.d/elpa/expand-region-20160729.131/python-el-expansions
~/.emacs.d/el-get/expand-region/web-mode-expansions hides
/home/dericbytes/.emacs.d/elpa/expand-region-20160729.131/web-mode-expansions
~/.emacs.d/el-get/expand-region/feature-mode-expansions hides
/home/dericbytes/.emacs.d/elpa/expand-region-20160729.131/feature-mode-expansions
~/.emacs.d/el-get/expand-region/erlang-mode-expansions hides
/home/dericbytes/.emacs.d/elpa/expand-region-20160729.131/erlang-mode-expansions
~/.emacs.d/el-get/expand-region/nxml-mode-expansions hides
/home/dericbytes/.emacs.d/elpa/expand-region-20160729.131/nxml-mode-expansions
~/.emacs.d/el-get/expand-region/js-mode-expansions hides
/home/dericbytes/.emacs.d/elpa/expand-region-20160729.131/js-mode-expansions
~/.emacs.d/el-get/expand-region/er-basic-expansions hides
/home/dericbytes/.emacs.d/elpa/expand-region-20160729.131/er-basic-expansions
~/.emacs.d/el-get/expand-region/cc-mode-expansions hides
/home/dericbytes/.emacs.d/elpa/expand-region-20160729.131/cc-mode-expansions
~/.emacs.d/el-get/expand-region/the-org-mode-expansions hides
/home/dericbytes/.emacs.d/elpa/expand-region-20160729.131/the-org-mode-expansions
~/.emacs.d/el-get/expand-region/expand-region-custom hides
/home/dericbytes/.emacs.d/elpa/expand-region-20160729.131/expand-region-custom
~/.emacs.d/el-get/expand-region/ruby-mode-expansions hides
/home/dericbytes/.emacs.d/elpa/expand-region-20160729.131/ruby-mode-expansions
~/.emacs.d/el-get/expand-region/python-el-fgallina-expansions hides
/home/dericbytes/.emacs.d/elpa/expand-region-20160729.131/python-el-fgallina-expansions
~/.emacs.d/el-get/expand-region/expand-region-core hides
/home/dericbytes/.emacs.d/elpa/expand-region-20160729.131/expand-region-core
~/.emacs.d/el-get/expand-region/clojure-mode-expansions hides
/home/dericbytes/.emacs.d/elpa/expand-region-20160729.131/clojure-mode-expansions
~/.emacs.d/el-get/expand-region/js2-mode-expansions hides
/home/dericbytes/.emacs.d/elpa/expand-region-20160729.131/js2-mode-expansions
~/.emacs.d/el-get/expand-region/cperl-mode-expansions hides
/home/dericbytes/.emacs.d/elpa/expand-region-20160729.131/cperl-mode-expansions
~/.emacs.d/el-get/expand-region/subword-mode-expansions hides
/home/dericbytes/.emacs.d/elpa/expand-region-20160729.131/subword-mode-expansions
~/.emacs.d/el-get/expand-region/html-mode-expansions hides
/home/dericbytes/.emacs.d/elpa/expand-region-20160729.131/html-mode-expansions
~/.emacs.d/el-get/expand-region/sml-mode-expansions hides
/home/dericbytes/.emacs.d/elpa/expand-region-20160729.131/sml-mode-expansions
~/.emacs.d/el-get/expand-region/jsp-expansions hides
/home/dericbytes/.emacs.d/elpa/expand-region-20160729.131/jsp-expansions
~/.emacs.d/el-get/expand-region/text-mode-expansions hides
/home/dericbytes/.emacs.d/elpa/expand-region-20160729.131/text-mode-expansions
~/.emacs.d/el-get/expand-region/enh-ruby-mode-expansions hides
/home/dericbytes/.emacs.d/elpa/expand-region-20160729.131/enh-ruby-mode-expansions
~/.emacs.d/el-get/expand-region/expand-region hides
/home/dericbytes/.emacs.d/elpa/expand-region-20160729.131/expand-region
~/.emacs.d/el-get/expand-region/octave-expansions hides
/home/dericbytes/.emacs.d/elpa/expand-region-20160729.131/octave-expansions
~/.emacs.d/el-get/expand-region/css-mode-expansions hides
/home/dericbytes/.emacs.d/elpa/expand-region-20160729.131/css-mode-expansions
~/.emacs.d/el-get/expand-region/latex-mode-expansions hides
/home/dericbytes/.emacs.d/elpa/expand-region-20160729.131/latex-mode-expansions
~/.emacs.d/el-get/expand-region/expand-region-pkg hides
/home/dericbytes/.emacs.d/elpa/expand-region-20160729.131/expand-region-pkg
~/.emacs.d/el-get/dash/dash hides
/home/dericbytes/.emacs.d/elpa/dash-20160820.501/dash
/home/dericbytes/.emacs.d/el-get/use-package/use-package hides
/home/dericbytes/.emacs.d/elpa/use-package-20160815.1137/use-package
~/.emacs.d/el-get/diminish/diminish hides
/home/dericbytes/.emacs.d/elpa/diminish-20151215.915/diminish
/home/dericbytes/.emacs.d/el-get/use-package/bind-key hides
/home/dericbytes/.emacs.d/elpa/bind-key-20160227.48/bind-key
~/.emacs.d/el-get/cl-lib/cl-lib hides
/usr/local/share/emacs/25.1.50/lisp/emacs-lisp/cl-lib

Features:
(shadow sort mail-extr emacsbug sendmail tramp-cache semantic/ia
semantic/analyze/refs semantic/db-find semantic/db-ref semantic/senator
semantic/decorate pulse semantic/analyze semantic/sort semantic/scope
semantic/analyze/fcn semantic/ctxt semantic/format semantic/tag-ls
semantic/find jka-compr eieio-opt speedbar sb-image ezimage dframe
ace-kill-to-char-dem init-ace-jump-mode ace-jump-mode htmlize repeat
emacs-chunky-init-linux.el init-use-package-load-packages lispy
lispy-inline semantic/db eieio-base semantic/util-modes semantic/util
semantic semantic/tag semantic/lex semantic/fw mode-local cedet
lispy-tags hydra lv backward-char-delete-defadvice icicles mb-depth
two-column icicles-mode icicles-cmd2 completion icicles-cmd1 cookie1
icicles-mcmd image-dired doremi filesets icicles-fn icicles-var
icicles-opt cus-theme icicles-face icicles-mac lorem-ipsum
sticky-scroll-mode-dem overlay-copy-visible init-completion projectile
init-dust init-html-mode init-elisp paren init-char-menu char-menu
init-c-mode color-utils-dem palette eyedropper hexrgb init-company-mode
company-files company-oddmuse company-keywords company-etags
company-gtags company-dabbrev-code company-dabbrev company-capf
company-cmake company-xcode company-clang company-semantic company-eclim
company-template company-css company-nxml company-bbdb company
pp-utils-dem avy-utils avy-menu init-avy avy pop-up-buffer-dem
init-which-key which-key init-google-translate google-translate
google-translate-default-ui google-translate-core-ui
google-translate-core google-translate-tk init-swiper swiper ivy
ivy-overlay define-words-tweaked url-http tls gnutls url url-proxy
url-privacy url-expand url-methods url-history mailcap url-auth
url-cookie url-domsuf url-util url-gw nsm words-utils-dem align-commands
align-x-my align search-utils-dem init-spaceline
powerline-major-mode-tweak-dem spaceline-faces-dem
spaceline-segments-dem spaceline-config spaceline-segments spaceline
init-powerline powerline powerline-separators powerline-themes
init-mode-line time dnt-toggle-theme-dem mode-line-color-themes-dem
color-theme init-beacon beacon read-utils-dem overlay-utils-dem
use-package-loader-dem init-temp-buffer jump-utils-dem init-node-js
node-js-utils-dem keep-buffers related-files-dem kb-mode-specific-setup
mode-specific-map-switcher-dem init-messages-buffer-mode
kb-messages-buffer-mode-setup buffer-utils-dem wget-utils-dem
line-utils-dem string-utils-dem string-convert-utils-dem paste-utils-dem
set-variable-at-point-dem window-utils-dem-utils-dem wmctrl-utils-dem
display-it-utils kill-inner-dem scroll-utils-dem smooth-scrolling
init-scrolling overwrite-repeat winsize-mode change-utils-dem
init-offlineimap offlineimap margin-utils init-epa-easy-pgp epa-file
rectangle-alphabet-lines-dem mark-utils-dem init-window init-custom-file
narrow-to-utils-dem help-utils-dem init-auto-complete-config
kb-auto-complete-setup ac-start-ui ac-start-cached-funcs-file
ac-sources-dem ac-candidates-bundle-dem
ac-candicate-words-in-buffer-flex-dem ac-candicate-words-in-buffer-dem
flex-utils-dem auto-complete-etags flycheck json map flymake
ac-complete-sticky-dem-mode fuzzy auto-complete-config auto-complete
grep-utils-dem init-imenu init-electric-mode elec-pair
hippie-expand-flex hippie-exp comment-dwim init-dabbrev mdabbrev dabbrev
prefix-mark-smart-dem edit-var edit-env kb-loccur-move-mode-setup
loccur-move-mode loccur init-ffap ffap init-toggle-it-words-and-lists
toggle-it toggle-it-dwim increment-at-point-dem kill-this-buffer-dem
switch-to-last-buffer-dem kb-yasnippet-setup yasnippet-utils-dem
init-yasnippet yasnippet init-query-replace-regexp
kb-log-edit-mode-setup my-recover-this-file-alert macrostep
safe-movement-dem paredit-utils-dem paredit kill-buffer-defadvice-dem
copy-utils-dem init-abbrev init-saveplace saveplace init-find-file-hook
copy-visible-text hideshow kb-help-mode-setup help-mode-utils-dem
init-regex-grab-dem regex-grab-dem kb-info-setup info-utils-dem info+
info kill-whitespace-utils-dem date-and-time-utils-dem indent-utils-dem
expand-utils-dem init-server replace-utils-dem kill-utils-dem
init-markit markit read-list-dem init-ert ert-tweaks-dem ert-utils-dem
ert debug init-unbound unbound init-evil repeat-defadvice
evil-nerd-commenter-utils-dem init-evil-nerd-commenter
evil-nerd-commenter evil-nerd-commenter-operator evil-utils-dem
init-evil-surround evil-surround goto-last-change evil evil-integration
evil-maps evil-commands flyspell ispell evil-jumps evil-command-window
evil-types evil-search evil-ex evil-macros evil-repeat evil-states
evil-core evil-common windmove evil-digraphs evil-vars
init-coding-system comint-utils-dem shell-command-utils-dem
eval-utils-dem init-eval hide-region init-hide-lines hide-search
hide-lines dedicated diff-hl-dired diff-hl-flydiff diff diff-hl vc-dir
ewoc git-gutter+ init-git-grep git-utils-dem init-magit magit-utils-dem
magit-blame magit-stash magit-bisect magit-remote magit-commit
magit-sequence magit magit-apply magit-wip magit-log magit-diff
smerge-mode magit-core magit-process magit-popup magit-mode magit-git
crm magit-section magit-utils git-commit help-fns radix-tree log-edit
message subr-x puny rfc822 mml mml-sec epa epg gnus-util rmail
rmail-loaddefs mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047
rfc2045 mm-util ietf-drums mail-prsvr mailabbrev mail-utils gmm-utils
mailheader pcvs-util add-log with-editor tramp-sh tramp tramp-compat
tramp-loaddefs trampver ucs-normalize server
run-emacs-in-another-process-cmds gse-number-rect wgrep init-grep grep
compile kmacro-self-save-key my-macros kmacro-utils-dem init-ediff
ediff-utils-dem ediff-merg ediff-wind ediff-diff ediff-mult ediff-help
ediff-init ediff-util ediff diff-regions-view-diffs init-diff
diff-utils-dem edit-list-dem init-occur replace+ conver-web-chars-dem
display-keybindings toggle-quotes my-play-sound take-a-break-alert
my-repeat-complex-command my-key-helper my-hook-helper locate-dem
my-syntax-utils change-mode-dem run-on-point hfyview htmlfontify
htmlfontify-loaddefs cus-edit cus-start cus-load init-replace-chars
xfrp_find_replace_pairs mv2char compile-utils-dem goto-file-dem
init-multiple-cursors multiple-cursors mc-hide-unmatched-lines-mode
mc-separate-operations rectangular-region-mode mc-mark-pop mc-mark-more
mc-cycle-cursors mc-edit-lines multiple-cursors-core rect
quote-words-dem move-line-unknown init-cheatsheet-menus-dem
cheatsheet-menus-dem move-text-up-n-down init-split-window
init-markdown-mode markdown-utils-dem markdown-mode rx color
file-utils-dem init-before-save-hook unbind le-eval-and-insert-results
pp+ buffer-register-dem register-self-do-functions-dem
register-utils-dem rectangle-utils-dem change-inner
expand-region-and-send-to-kill-defadvice expand-region
text-mode-expansions cc-mode-expansions the-org-mode-expansions
js2-mode-expansions js-mode-expansions er-basic-expansions
expand-region-core expand-region-custom group-of-blank-lines regex-thing
quoted-symbol-thing non-whitespace-thing-dem email-thing
double-quote-thing thing-movement-dem thing-at-point-utils-dem
thing-cmds thingatpt+ hide-comnt init-vc-mode vc vc-dispatcher
toggle-window-split2 init-visible-mark visible-mark my-wrap-region iedit
iedit-lib my-diff-autosave init-winner-mode winner init-qasm qasm-mode
thingatpt init-hexcolour init-package-menu-mode init-package
init-hot-swap-actions hot-swap-actions-window-control hot-swap-actions
hot-swap-v3 init-text-mode kb-browse-kill-ring-setup
browse-kill-ring-defadvice browse-kill-ring-utils-dem
init-browse-kill-ring browse-kill-ring+ browse-kill-ring
kill-ring-save-after-kill-new init-isearch init-coding init-programming
kb-image-dired-viewer-setup image-dired-viewer-dem dired-view-file-next
image-dired-utils-dem view xahlee-functions my-data-functions init-tags
my-make-tag-file retrospective-functions forward-sexp-defav-dem
ibuffer-vc ibuf-ext ibuffer-utils-dem ibuffer ibuffer-loaddefs
init-ibuffer ibuf-macs init-history savehist minibuffer-utils-dem
init-minibuffer init-hippie-expand hippie-expand-end-of-line-dem
hippie-expand-custom-function-example my-insert-debug init-bash
comint-twirler-hack shell-command shell-mode-utils-dem init-filecache
file-alist-add-new-file-ui file-alist-dem find-lisp my-help-alist
help-menu-source git-browse-file-history-dem etags xref project
tag-utils-dem filecache my-list-utils init-bookmark bookmark pp sdo
sdo-helm sdo-ido sdo-build-src-ui-reader sdo-manage-sdo-source-files
mlist init-js2-mode js2-mode derived cc-mode cc-fonts cc-guess cc-menus
cc-styles cc-align cc-cmds cc-engine cc-vars cc-defs init-recentf
recentf tree-widget wid-edit extra-functions hl-line init-linum-relative
linum-relative linum init-copy-and-paste init-general
init-window-numbering window-numbering repeat-utils-dem
org-babel-dependent-blocks-write-dem org-babel-dependent-blocks-dem
init-org-babel ob-gnuplot ob-lisp ob-org ob-sql ob-shell shell ob-js
ob-perl ob-python init-org-capture org-capture-utils-dem org-capture
org-key-bindings-dem org-narrow-to-block-dem org-table-lisp-to-table-dem
kb-org-src-edit-setup org-faces-dem init-org-publish ox-odt rng-loc
rng-uri rng-parse rng-match rng-dt rng-util rng-pttrn nxml-parse nxml-ns
nxml-enc xmltok nxml-util ox-latex ox-icalendar ox-html table ox-ascii
ox-publish ox org-babel-utils-dem org-bmk-jump-dem
org-use-speed-commands org-table org-show-next-heading
org-helper-functions occur-utils-dem org-clock org-mode-utils-dem
init-org-mode helm-descbinds helm helm-source eieio-compat
helm-multi-match helm-lib dired-narrow delsel dired-subtree
dired-hacks-utils defadvice-dired-create-dir-when-needed
dired-add-to-recent init-dired dired-browse-file dired-utils-dem dired
dired-loaddefs helm-key-bindings-setup-dem helm-flex-match-dem
ido-flex-match-sf helm-utils-dem helm-config helm-autoloads
helm-easymenu popup mad-tests ol-select-face-mode ol-mark-generate-face
ol-select-mode ol-select-mode-chained ol-match-faces ol-mad2 ol mad
init-edebug edebug init-undo init-auto-revert-mode autorevert filenotify
s dash digit-argument-utils-dem ido-goto-symbol imenu
ido-sticky-mode-dem init-ido init-flx-ido flx-ido flx ido init-aliases
kb-insert-keys kb-do-and-continue kb-funcall-keymap
kb-display-keymap-hacks init-kb-load-keys kb-toggle-it-mode-setup
init-kb kb-keymap-utils cl kb-display-keymap-help kb-calling-keymap
kb-numeric-keys-to-symbols vc-git diff-mode init-p-scratch-goto-dem
p-scratch-goto-dem init-use-package init-diminish use-package diminish
bind-key org-element avl-tree org org-macro org-footnote org-pcomplete
pcomplete org-list org-faces org-entities noutline outline easy-mmode
org-version ob-emacs-lisp ob ob-tangle org-src ob-ref ob-lob ob-table
ob-keys ob-exp ob-comint comint ansi-color ring ob-core ob-eval
org-compat advice org-macs org-loaddefs format-spec find-func cal-menu
calendar cal-loaddefs init edmacro kmacro finder-inf package epg-config
url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs
eieio-loaddefs password-cache url-vars seq byte-opt gv bytecomp
byte-compile cl-extra help-mode easymenu cconv cl-loaddefs pcase cl-lib
time-date mule-util tooltip eldoc electric uniquify ediff-hook vc-hooks
lisp-float-type mwheel term/x-win x-win term/common-win x-dnd tool-bar
dnd fontset image regexp-opt fringe tabulated-list newcomment elisp-mode
lisp-mode prog-mode register page menu-bar rfn-eshadow timer select
scroll-bar mouse jit-lock font-lock syntax facemenu font-core
term/tty-colors frame cl-generic cham georgian utf-8-lang misc-lang
vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932
hebrew greek romanian slovak czech european ethiopic indian cyrillic
chinese charscript case-table epa-hook jka-cmpr-hook help simple abbrev
obarray minibuffer cl-preloaded nadvice loaddefs button faces cus-face
macroexp files text-properties overlay sha1 md5 base64 format env
code-pages mule custom widget hashtable-print-readable backquote
dbusbind inotify dynamic-setting system-font-setting font-render-setting
move-toolbar gtk x-toolkit x multi-tty make-network-process emacs)

Memory information:
((conses 16 1414531 1121976)
 (symbols 48 79348 56)
 (miscs 40 624 1576)
 (strings 32 231288 335702)
 (string-bytes 1 8107276)
 (vectors 16 89677)
 (vector-slots 8 1397114 160508)
 (floats 8 1810 2369)
 (intervals 56 3380 2715)
 (buffers 976 19)
 (heap 1024 101323 74062))