emacscollective / emacs.g Goto Github PK
View Code? Open in Web Editor NEWThe Emacs Collective
License: ISC License
The Emacs Collective
License: ISC License
I cloned the repo as a submodule of my dotfiles for independency.
But it cannot be bootstrapted when cloning as a git submodule, and that's because in a git submodule, .git isn't actually a dir, but a file with content like
gitdir: ../.git/modules/emacs
I looked into the code and found a lot of .git
got treated as dir, and they usually appear after --separate-git-dir
.
I guess the reason that drones got cloned with --separate-git-dir
but not in the usual submodule style is to be able to checkout its branch.
If I replace all the .git
with ../.git/modules/emacs, will it work?
Some drones require non-standard configuration in '.gitmodules'. Would it make sense to make borg write the following (or something equivalent) in '.gitmodules' for these packages automatically when M-x borg-assimilate
is ran?
[submodule "notmuch"]
path = lib/notmuch
url = git://notmuchmail.org/git/notmuch
load-path = emacs
info-path = doc/_build/texinfo
build-step = ./configure
build-step = make
build-step = make sphinx-texinfo
build-step = "(borg-makeinfo \"notmuch\")"
[submodule "org"]
path = lib/org
url = git://orgmode.org/org-mode.git
load-path = lisp
info-path = doc
build-step = make compile autoloads info ORG_ADD_CONTRIB="ox-*"
If you don't want borg to do that automatically, what about adding a Wiki somewhere so that everyone can document?
For some reason, using use-package in this manner does not work correctly. The compiler complain that the declared map doesn't exists, when it should precisely be waiting until that gets loaded to make the bindings. Any idea what's up?
I just installed Borg's layer/essentials branch in ~/.emacs.d/
and ran the following bootstrap commands. As you can see below, I had to send SIGINT to intterupt the hung installation. After creating the ~/.emacs.d/var
, I can successfully run the second bootstrap command. It's not immediately clear to me which package should have made this directory.
The bootstrap hangs at
...
--- [init.el] ---
Loading /Users/cceleri/.emacs.d/init.el (source)...
Loading Emacs...done (20.252s)
Loading /Users/cceleri/.emacs.d/init.el...
Loading /Users/cceleri/.emacs.d/early-init.el (source)...
Initializing drones...done (20 drones in 0.121s)
Loading early birds...done (0.154s)
Loading /Users/cceleri/.emacs.d/init.el...done (0.227s)
Compiling /Users/cceleri/.emacs.d/init.el...
Opening output file: No such file or directory, /Users/cceleri/.emacs.d/var/savehist.el
$ cd ~/.emacs.d
$ git log --oneline --decorate | head -n1
a7a3010 (HEAD -> chckyn, borg/layer/essentials) undo-tree: Set outline-regexp
$ make bootstrap-borg
Cloning into '/Users/cceleri/Developer/dotemacs/lib/borg'...
remote: Enumerating objects: 61, done.
remote: Counting objects: 100% (61/61), done.
remote: Compressing objects: 100% (38/38), done.
remote: Total 748 (delta 35), reused 45 (delta 22), pack-reused 687
Receiving objects: 100% (748/748), 354.73 KiB | 4.67 MiB/s, done.
Resolving deltas: 100% (497/497), done.
HEAD is now at 3cfb35f manual: Minor tweaks
[ ~/.emacs.d ] $ make bootstrap
=== Running 'git submodule init' ===
Submodule 'auto-compile' ([email protected]:emacscollective/auto-compile.git) registered for path 'lib/auto-compile'
Submodule 'borg' ([email protected]:emacscollective/borg.git) registered for path 'lib/borg'
Submodule 'closql' ([email protected]:emacscollective/closql.git) registered for path 'lib/closql'
Submodule 'dash' ([email protected]:magnars/dash.el.git) registered for path 'lib/dash'
Submodule 'diff-hl' ([email protected]:dgutov/diff-hl.git) registered for path 'lib/diff-hl'
Submodule 'emacsql' ([email protected]:skeeto/emacsql.git) registered for path 'lib/emacsql'
Submodule 'epkg' ([email protected]:emacscollective/epkg.git) registered for path 'lib/epkg'
Submodule 'ghub' ([email protected]:magit/ghub.git) registered for path 'lib/ghub'
Submodule 'git-modes' ([email protected]:magit/git-modes.git) registered for path 'lib/git-modes'
Submodule 'libgit' ([email protected]:magit/libegit2.git) registered for path 'lib/libgit'
Submodule 'magit' ([email protected]:magit/magit.git) registered for path 'lib/magit'
Submodule 'markdown-mode' ([email protected]:jrblevin/markdown-mode.git) registered for path 'lib/markdown-mode'
Submodule 'no-littering' ([email protected]:emacscollective/no-littering.git) registered for path 'lib/no-littering'
Submodule 'packed' ([email protected]:emacscollective/packed.git) registered for path 'lib/packed'
Submodule 'transient' ([email protected]:magit/transient.git) registered for path 'lib/transient'
Submodule 'treepy' ([email protected]:volrath/treepy.el.git) registered for path 'lib/treepy'
Submodule 'undo-tree' (http://www.dr-qubit.org/git/undo-tree.git) registered for path 'lib/undo-tree'
Submodule 'use-package' ([email protected]:jwiegley/use-package.git) registered for path 'lib/use-package'
Submodule 'with-editor' ([email protected]:magit/with-editor.git) registered for path 'lib/with-editor'
Submodule 'yaml-mode' ([email protected]:yoshiki/yaml-mode.git) registered for path 'lib/yaml-mode'
=== Running 'lib/borg/borg.sh' ===
--- [auto-compile] ---
Cloning into '/Users/cceleri/Developer/dotemacs/lib/auto-compile'...
remote: Enumerating objects: 17, done.
remote: Counting objects: 100% (17/17), done.
remote: Compressing objects: 100% (10/10), done.
remote: Total 542 (delta 7), reused 16 (delta 7), pack-reused 525
Receiving objects: 100% (542/542), 175.74 KiB | 1.33 MiB/s, done.
Resolving deltas: 100% (192/192), done.
HEAD is now at 3e92c5b Revert "Add .github/FUNDING.yml"
--- [borg] ---
HEAD is now at 3cfb35f manual: Minor tweaks
--- [closql] ---
Cloning into '/Users/cceleri/Developer/dotemacs/lib/closql'...
remote: Enumerating objects: 34, done.
remote: Counting objects: 100% (34/34), done.
remote: Compressing objects: 100% (17/17), done.
Receiving objects: 100% (251/251), 68.14 KiB | 4.26 MiB/s, done.
Resolving deltas: 100% (138/138), done.
remote: Total 251 (delta 21), reused 30 (delta 17), pack-reused 217
HEAD is now at 1e78f96 Consistently use closql--slot-class and closql--slot-table
--- [dash] ---
Cloning into '/Users/cceleri/Developer/dotemacs/lib/dash'...
remote: Enumerating objects: 42, done.
remote: Counting objects: 100% (42/42), done.
remote: Compressing objects: 100% (27/27), done.
remote: Total 2573 (delta 17), reused 28 (delta 13), pack-reused 2531
Receiving objects: 100% (2573/2573), 1.59 MiB | 4.40 MiB/s, done.
Resolving deltas: 100% (1783/1783), done.
HEAD is now at 721436b chore: release 2.17.0
--- [diff-hl] ---
Cloning into '/Users/cceleri/Developer/dotemacs/lib/diff-hl'...
remote: Enumerating objects: 36, done.
remote: Counting objects: 100% (36/36), done.
remote: Compressing objects: 100% (26/26), done.
remote: Total 782 (delta 18), reused 22 (delta 10), pack-reused 746
Receiving objects: 100% (782/782), 453.65 KiB | 5.89 MiB/s, done.
Resolving deltas: 100% (410/410), done.
HEAD is now at 2cf8b48 Avoid the "args out of range error"
--- [emacsql] ---
Cloning into '/Users/cceleri/Developer/dotemacs/lib/emacsql'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 1426 (delta 0), reused 1 (delta 0), pack-reused 1423
Receiving objects: 100% (1426/1426), 2.60 MiB | 5.17 MiB/s, done.
Resolving deltas: 100% (968/968), done.
HEAD is now at a118b6c Don't use -lm flag on Windows (#55)
--- [epkg] ---
Cloning into '/Users/cceleri/Developer/dotemacs/lib/epkg'...
remote: Enumerating objects: 81, done.
remote: Counting objects: 100% (81/81), done.
remote: Compressing objects: 100% (50/50), done.
remote: Total 545 (delta 47), reused 61 (delta 31), pack-reused 464
Receiving objects: 100% (545/545), 182.33 KiB | 4.67 MiB/s, done.
Resolving deltas: 100% (368/368), done.
HEAD is now at edf8c00 Use when-let instead of --when-let
--- [ghub] ---
Cloning into '/Users/cceleri/Developer/dotemacs/lib/ghub'...
remote: Enumerating objects: 6, done.
remote: Counting objects: 100% (6/6), done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 1134 (delta 1), reused 4 (delta 1), pack-reused 1128
Receiving objects: 100% (1134/1134), 455.40 KiB | 6.41 MiB/s, done.
Resolving deltas: 100% (675/675), done.
HEAD is now at a8bf337 ghub-fetch-{repository,issue,pullreq}: Add errorback argument
--- [git-modes] ---
Cloning into '/Users/cceleri/Developer/dotemacs/lib/git-modes'...
remote: Enumerating objects: 1976, done.
remote: Total 1976 (delta 0), reused 0 (delta 0), pack-reused 1976
Receiving objects: 100% (1976/1976), 518.09 KiB | 7.40 MiB/s, done.
Resolving deltas: 100% (1071/1071), done.
HEAD is now at 5546831 README.md: Provide example about using gitignore-mode elsewhere
--- [libgit] ---
Cloning into '/Users/cceleri/Developer/dotemacs/lib/libgit'...
remote: Enumerating objects: 3037, done.
remote: Total 3037 (delta 0), reused 0 (delta 0), pack-reused 3037
Receiving objects: 100% (3037/3037), 667.58 KiB | 7.18 MiB/s, done.
Resolving deltas: 100% (2361/2361), done.
HEAD is now at 6c3b892 Non-interactively don't ask to build the module
--- [magit] ---
Cloning into '/Users/cceleri/Developer/dotemacs/lib/magit'...
remote: Enumerating objects: 57, done.
remote: Counting objects: 100% (57/57), done.
remote: Compressing objects: 100% (32/32), done.
remote: Total 40971 (delta 34), reused 43 (delta 25), pack-reused 40914
Receiving objects: 100% (40971/40971), 24.77 MiB | 11.31 MiB/s, done.
Resolving deltas: 100% (28794/28794), done.
HEAD is now at 68b5a13f Overrule users who try to force color control characters
--- [markdown-mode] ---
Cloning into '/Users/cceleri/Developer/dotemacs/lib/markdown-mode'...
remote: Enumerating objects: 51, done.
remote: Counting objects: 100% (51/51), done.
remote: Compressing objects: 100% (40/40), done.
remote: Total 5180 (delta 31), reused 22 (delta 10), pack-reused 5129
Receiving objects: 100% (5180/5180), 3.25 MiB | 5.20 MiB/s, done.
Resolving deltas: 100% (3185/3185), done.
HEAD is now at e9dff50 Fix typos
--- [no-littering] ---
Cloning into '/Users/cceleri/Developer/dotemacs/lib/no-littering'...
remote: Enumerating objects: 33, done.
remote: Counting objects: 100% (33/33), done.
remote: Compressing objects: 100% (21/21), done.
remote: Total 593 (delta 20), reused 25 (delta 12), pack-reused 560
Receiving objects: 100% (593/593), 158.32 KiB | 3.52 MiB/s, done.
Resolving deltas: 100% (304/304), done.
HEAD is now at 05ef102 undohist: theme undohist-directory
--- [packed] ---
Cloning into '/Users/cceleri/Developer/dotemacs/lib/packed'...
remote: Enumerating objects: 426, done.
remote: Total 426 (delta 0), reused 0 (delta 0), pack-reused 426
Receiving objects: 100% (426/426), 112.87 KiB | 453.00 KiB/s, done.
Resolving deltas: 100% (173/173), done.
HEAD is now at c41c3df Add Makefile
--- [transient] ---
Cloning into '/Users/cceleri/Developer/dotemacs/lib/transient'...
remote: Enumerating objects: 127, done.
remote: Counting objects: 100% (127/127), done.
remote: Compressing objects: 100% (83/83), done.
remote: Total 717 (delta 70), reused 98 (delta 43), pack-reused 590
Receiving objects: 100% (717/717), 295.45 KiB | 7.21 MiB/s, done.
Resolving deltas: 100% (376/376), done.
HEAD is now at a269614 Release version 0.2.0
--- [treepy] ---
Cloning into '/Users/cceleri/Developer/dotemacs/lib/treepy'...
remote: Enumerating objects: 11, done.
remote: Counting objects: 100% (11/11), done.
remote: Compressing objects: 100% (11/11), done.
remote: Total 160 (delta 4), reused 2 (delta 0), pack-reused 149
Receiving objects: 100% (160/160), 157.32 KiB | 2.35 MiB/s, done.
Resolving deltas: 100% (92/92), done.
HEAD is now at 306f703 Fix typos (#7)
--- [undo-tree] ---
Cloning into '/Users/cceleri/Developer/dotemacs/lib/undo-tree'...
Fetching objects: 684, done.
HEAD is now at 0161041 Fix argument order in gv setter definitions.
--- [use-package] ---
Cloning into '/Users/cceleri/Developer/dotemacs/lib/use-package'...
remote: Enumerating objects: 26, done.
remote: Counting objects: 100% (26/26), done.
remote: Compressing objects: 100% (20/20), done.
remote: Total 2501 (delta 7), reused 13 (delta 5), pack-reused 2475
Receiving objects: 100% (2501/2501), 1.87 MiB | 9.76 MiB/s, done.
Resolving deltas: 100% (1377/1377), done.
HEAD is now at 42db6b3 Merge pull request #816 from danielyaren/readme-toc
--- [with-editor] ---
Cloning into '/Users/cceleri/Developer/dotemacs/lib/with-editor'...
remote: Enumerating objects: 41, done.
remote: Counting objects: 100% (41/41), done.
remote: Compressing objects: 100% (30/30), done.
remote: Total 414 (delta 21), reused 30 (delta 11), pack-reused 373
Receiving objects: 100% (414/414), 201.23 KiB | 5.16 MiB/s, done.
Resolving deltas: 100% (247/247), done.
HEAD is now at 4fe66d4 Silence byte-compiler
--- [yaml-mode] ---
Cloning into '/Users/cceleri/Developer/dotemacs/lib/yaml-mode'...
remote: Enumerating objects: 13, done.
remote: Counting objects: 100% (13/13), done.
remote: Compressing objects: 100% (10/10), done.
remote: Total 316 (delta 4), reused 8 (delta 3), pack-reused 303
Receiving objects: 100% (316/316), 79.90 KiB | 2.35 MiB/s, done.
Resolving deltas: 100% (171/171), done.
HEAD is now at cecf4b1 Merge pull request #74 from DamienCassou/typos
=== Running 'make build' ===
Initializing drones...done (20 drones in 0.024s)
--- [auto-compile] ---
Creating /Users/cceleri/.emacs.d/lib/auto-compile/auto-compile-autoloads.el...
Compiling /Users/cceleri/.emacs.d/lib/auto-compile/auto-compile.el...
Done (Total of 1 file compiled)
--- [borg] ---
Creating /Users/cceleri/.emacs.d/lib/borg/borg-autoloads.el...
Compiling /Users/cceleri/.emacs.d/lib/borg/borg-elpa.el...
Compiling /Users/cceleri/.emacs.d/lib/borg/borg.el...
Done (Total of 2 files compiled)
Running ‘makeinfo --no-split borg.texi -o borg.info’...
Running ‘makeinfo --no-split borg.texi -o borg.info’...done
Running ‘install-info borg.info --dir=dir’...
Running ‘install-info borg.info --dir=dir’...done
--- [closql] ---
Creating /Users/cceleri/.emacs.d/lib/closql/closql-autoloads.el...
Compiling /Users/cceleri/.emacs.d/lib/closql/closql.el...
Done (Total of 1 file compiled)
--- [dash] ---
Creating /Users/cceleri/.emacs.d/lib/dash/dash-autoloads.el...
Compiling /Users/cceleri/.emacs.d/lib/dash/dash-functional.el...
Compiling /Users/cceleri/.emacs.d/lib/dash/dash.el...
Done (Total of 2 files compiled)
Running ‘install-info dash.info --dir=dir’...
Running ‘install-info dash.info --dir=dir’...done
--- [diff-hl] ---
Creating /Users/cceleri/.emacs.d/lib/diff-hl/diff-hl-autoloads.el...
Compiling /Users/cceleri/.emacs.d/lib/diff-hl/diff-hl-amend.el...
Compiling /Users/cceleri/.emacs.d/lib/diff-hl/diff-hl-dired.el...
Compiling /Users/cceleri/.emacs.d/lib/diff-hl/diff-hl-flydiff.el...
Compiling /Users/cceleri/.emacs.d/lib/diff-hl/diff-hl-margin.el...
Compiling /Users/cceleri/.emacs.d/lib/diff-hl/diff-hl.el...
Done (Total of 5 files compiled)
--- [emacsql] ---
Creating /Users/cceleri/.emacs.d/lib/emacsql/emacsql-autoloads.el...
Compiling /Users/cceleri/.emacs.d/lib/emacsql/emacsql-compiler.el...
Compiling /Users/cceleri/.emacs.d/lib/emacsql/emacsql-mysql.el...
Skipping /Users/cceleri/.emacs.d/lib/emacsql/emacsql-pg.el...skipped
Compiling /Users/cceleri/.emacs.d/lib/emacsql/emacsql-psql.el...
Compiling /Users/cceleri/.emacs.d/lib/emacsql/emacsql-sqlite.el...
Compiling /Users/cceleri/.emacs.d/lib/emacsql/emacsql.el...
Done (Total of 5 files compiled, 1 skipped)
--- [epkg] ---
Creating /Users/cceleri/.emacs.d/lib/epkg/epkg-autoloads.el...
Compiling /Users/cceleri/.emacs.d/lib/epkg/epkg-desc.el...
Compiling /Users/cceleri/.emacs.d/lib/epkg/epkg-gelpa.el...
Compiling /Users/cceleri/.emacs.d/lib/epkg/epkg-list.el...
Compiling /Users/cceleri/.emacs.d/lib/epkg/epkg-melpa.el...
In end of data:
epkg-melpa.el:97:1:Warning: the function ‘json-encode’ is not known to be
defined.
Compiling /Users/cceleri/.emacs.d/lib/epkg/epkg-org.el...
Compiling /Users/cceleri/.emacs.d/lib/epkg/epkg-schemata.el...
Compiling /Users/cceleri/.emacs.d/lib/epkg/epkg-utils.el...
Compiling /Users/cceleri/.emacs.d/lib/epkg/epkg.el...
Done (Total of 8 files compiled)
Running ‘makeinfo --no-split epkg.texi -o epkg.info’...
Running ‘makeinfo --no-split epkg.texi -o epkg.info’...done
Running ‘install-info epkg.info --dir=dir’...
Running ‘install-info epkg.info --dir=dir’...done
--- [ghub] ---
Creating /Users/cceleri/.emacs.d/lib/ghub/ghub-autoloads.el...
Compiling /Users/cceleri/.emacs.d/lib/ghub/buck.el...
Compiling /Users/cceleri/.emacs.d/lib/ghub/ghub-graphql.el...
Skipping /Users/cceleri/.emacs.d/lib/ghub/ghub-pkg.el...skipped
Compiling /Users/cceleri/.emacs.d/lib/ghub/ghub.el...
Compiling /Users/cceleri/.emacs.d/lib/ghub/glab.el...
Compiling /Users/cceleri/.emacs.d/lib/ghub/gogs.el...
Compiling /Users/cceleri/.emacs.d/lib/ghub/gsexp.el...
Compiling /Users/cceleri/.emacs.d/lib/ghub/gtea.el...
Done (Total of 7 files compiled, 1 skipped)
Running ‘makeinfo --no-split ghub.texi -o ghub.info’...
Running ‘makeinfo --no-split ghub.texi -o ghub.info’...done
Running ‘install-info ghub.info --dir=dir’...
Running ‘install-info ghub.info --dir=dir’...done
--- [git-modes] ---
Creating /Users/cceleri/.emacs.d/lib/git-modes/git-modes-autoloads.el...
Compiling /Users/cceleri/.emacs.d/lib/git-modes/git-modes.el...
Compiling /Users/cceleri/.emacs.d/lib/git-modes/gitattributes-mode.el...
Compiling /Users/cceleri/.emacs.d/lib/git-modes/gitconfig-mode.el...
Compiling /Users/cceleri/.emacs.d/lib/git-modes/gitignore-mode.el...
Done (Total of 4 files compiled)
--- [libgit] ---
Running ‘make’...
Running ‘make’...done
--- [magit] ---
Creating /Users/cceleri/.emacs.d/lib/magit/lisp/magit-autoloads.el...
Compiling /Users/cceleri/.emacs.d/lib/magit/lisp/git-commit.el...
Compiling /Users/cceleri/.emacs.d/lib/magit/lisp/git-rebase.el...
Compiling /Users/cceleri/.emacs.d/lib/magit/lisp/magit-apply.el...
Compiling /Users/cceleri/.emacs.d/lib/magit/lisp/magit-autorevert.el...
Compiling /Users/cceleri/.emacs.d/lib/magit/lisp/magit-bisect.el...
Compiling /Users/cceleri/.emacs.d/lib/magit/lisp/magit-blame.el...
Compiling /Users/cceleri/.emacs.d/lib/magit/lisp/magit-bookmark.el...
Compiling /Users/cceleri/.emacs.d/lib/magit/lisp/magit-branch.el...
Compiling /Users/cceleri/.emacs.d/lib/magit/lisp/magit-clone.el...
Compiling /Users/cceleri/.emacs.d/lib/magit/lisp/magit-commit.el...
Compiling /Users/cceleri/.emacs.d/lib/magit/lisp/magit-core.el...
Compiling /Users/cceleri/.emacs.d/lib/magit/lisp/magit-diff.el...
Compiling /Users/cceleri/.emacs.d/lib/magit/lisp/magit-ediff.el...
Compiling /Users/cceleri/.emacs.d/lib/magit/lisp/magit-extras.el...
Compiling /Users/cceleri/.emacs.d/lib/magit/lisp/magit-fetch.el...
Compiling /Users/cceleri/.emacs.d/lib/magit/lisp/magit-files.el...
Compiling /Users/cceleri/.emacs.d/lib/magit/lisp/magit-git.el...
Compiling /Users/cceleri/.emacs.d/lib/magit/lisp/magit-gitignore.el...
Compiling /Users/cceleri/.emacs.d/lib/magit/lisp/magit-imenu.el...
Compiling /Users/cceleri/.emacs.d/lib/magit/lisp/magit-libgit.el...
libgit was not loaded!
In end of data:
magit-libgit.el:75:1:Warning: the following functions are not known to be
defined: libgit-repository-open, libgit-repository-bare-p
Compiling /Users/cceleri/.emacs.d/lib/magit/lisp/magit-log.el...
Compiling /Users/cceleri/.emacs.d/lib/magit/lisp/magit-margin.el...
Compiling /Users/cceleri/.emacs.d/lib/magit/lisp/magit-merge.el...
Compiling /Users/cceleri/.emacs.d/lib/magit/lisp/magit-mode.el...
Compiling /Users/cceleri/.emacs.d/lib/magit/lisp/magit-notes.el...
Compiling /Users/cceleri/.emacs.d/lib/magit/lisp/magit-obsolete.el...
Compiling /Users/cceleri/.emacs.d/lib/magit/lisp/magit-patch.el...
Skipping /Users/cceleri/.emacs.d/lib/magit/lisp/magit-pkg.el...skipped
Compiling /Users/cceleri/.emacs.d/lib/magit/lisp/magit-process.el...
Compiling /Users/cceleri/.emacs.d/lib/magit/lisp/magit-pull.el...
Compiling /Users/cceleri/.emacs.d/lib/magit/lisp/magit-push.el...
Compiling /Users/cceleri/.emacs.d/lib/magit/lisp/magit-reflog.el...
Compiling /Users/cceleri/.emacs.d/lib/magit/lisp/magit-refs.el...
Compiling /Users/cceleri/.emacs.d/lib/magit/lisp/magit-remote.el...
Compiling /Users/cceleri/.emacs.d/lib/magit/lisp/magit-repos.el...
Compiling /Users/cceleri/.emacs.d/lib/magit/lisp/magit-reset.el...
Compiling /Users/cceleri/.emacs.d/lib/magit/lisp/magit-section.el...
Compiling /Users/cceleri/.emacs.d/lib/magit/lisp/magit-sequence.el...
Compiling /Users/cceleri/.emacs.d/lib/magit/lisp/magit-stash.el...
Compiling /Users/cceleri/.emacs.d/lib/magit/lisp/magit-status.el...
Compiling /Users/cceleri/.emacs.d/lib/magit/lisp/magit-submodule.el...
Compiling /Users/cceleri/.emacs.d/lib/magit/lisp/magit-subtree.el...
Compiling /Users/cceleri/.emacs.d/lib/magit/lisp/magit-tag.el...
Compiling /Users/cceleri/.emacs.d/lib/magit/lisp/magit-transient.el...
Compiling /Users/cceleri/.emacs.d/lib/magit/lisp/magit-utils.el...
Compiling /Users/cceleri/.emacs.d/lib/magit/lisp/magit-wip.el...
Compiling /Users/cceleri/.emacs.d/lib/magit/lisp/magit-worktree.el...
Compiling /Users/cceleri/.emacs.d/lib/magit/lisp/magit.el...
Done (Total of 47 files compiled, 1 skipped)
Running ‘makeinfo --no-split magit-section.texi -o magit-section.info’...
Running ‘makeinfo --no-split magit-section.texi -o magit-section.info’...done
Running ‘makeinfo --no-split magit.texi -o magit.info’...
Running ‘makeinfo --no-split magit.texi -o magit.info’...done
Running ‘install-info magit-section.info --dir=dir’...
Running ‘install-info magit-section.info --dir=dir’...done
Running ‘install-info magit.info --dir=dir’...
Running ‘install-info magit.info --dir=dir’...done
--- [markdown-mode] ---
Creating /Users/cceleri/.emacs.d/lib/markdown-mode/markdown-mode-autoloads.el...
Compiling /Users/cceleri/.emacs.d/lib/markdown-mode/markdown-mode.el...
Done (Total of 1 file compiled)
--- [no-littering] ---
Creating /Users/cceleri/.emacs.d/lib/no-littering/no-littering-autoloads.el...
Compiling /Users/cceleri/.emacs.d/lib/no-littering/no-littering.el...
Done (Total of 1 file compiled)
--- [packed] ---
Creating /Users/cceleri/.emacs.d/lib/packed/packed-autoloads.el...
Compiling /Users/cceleri/.emacs.d/lib/packed/packed.el...
Done (Total of 1 file compiled)
--- [transient] ---
Creating /Users/cceleri/.emacs.d/lib/transient/lisp/transient-autoloads.el...
Compiling /Users/cceleri/.emacs.d/lib/transient/lisp/transient.el...
Done (Total of 1 file compiled)
Running ‘makeinfo --no-split transient.texi -o transient.info’...
Running ‘makeinfo --no-split transient.texi -o transient.info’...done
Running ‘install-info transient.info --dir=dir’...
Running ‘install-info transient.info --dir=dir’...done
--- [treepy] ---
Creating /Users/cceleri/.emacs.d/lib/treepy/treepy-autoloads.el...
Compiling /Users/cceleri/.emacs.d/lib/treepy/treepy.el...
Done (Total of 1 file compiled)
--- [undo-tree] ---
Creating /Users/cceleri/.emacs.d/lib/undo-tree/undo-tree-autoloads.el...
Compiling /Users/cceleri/.emacs.d/lib/undo-tree/undo-tree.el...
In undo-tree-pull-undo-in-region-branch:
undo-tree.el:2352:16:Warning: ‘undo-elt-crosses-region’ is an obsolete
function (as of 25.1).
In undo-tree-pull-redo-in-region-branch:
undo-tree.el:2561:16:Warning: ‘undo-elt-crosses-region’ is an obsolete
function (as of 25.1).
Done (Total of 1 file compiled)
--- [use-package] ---
Creating /Users/cceleri/.emacs.d/lib/use-package/use-package-autoloads.el...
Compiling /Users/cceleri/.emacs.d/lib/use-package/bind-chord.el...
Compiling /Users/cceleri/.emacs.d/lib/use-package/bind-key.el...
Compiling /Users/cceleri/.emacs.d/lib/use-package/use-package-bind-key.el...
Compiling /Users/cceleri/.emacs.d/lib/use-package/use-package-chords.el...
Compiling /Users/cceleri/.emacs.d/lib/use-package/use-package-core.el...
Compiling /Users/cceleri/.emacs.d/lib/use-package/use-package-delight.el...
Compiling /Users/cceleri/.emacs.d/lib/use-package/use-package-diminish.el...
Compiling /Users/cceleri/.emacs.d/lib/use-package/use-package-ensure-system-package.el...
Compiling /Users/cceleri/.emacs.d/lib/use-package/use-package-ensure.el...
Compiling /Users/cceleri/.emacs.d/lib/use-package/use-package-jump.el...
Compiling /Users/cceleri/.emacs.d/lib/use-package/use-package-lint.el...
Skipping /Users/cceleri/.emacs.d/lib/use-package/use-package-tests.el...skipped
Compiling /Users/cceleri/.emacs.d/lib/use-package/use-package.el...
Done (Total of 12 files compiled, 1 skipped)
Running ‘makeinfo --no-split use-package.texi -o use-package.info’...
Running ‘makeinfo --no-split use-package.texi -o use-package.info’...done
--- [with-editor] ---
Creating /Users/cceleri/.emacs.d/lib/with-editor/with-editor-autoloads.el...
Compiling /Users/cceleri/.emacs.d/lib/with-editor/with-editor.el...
Done (Total of 1 file compiled)
Running ‘makeinfo --no-split with-editor.texi -o with-editor.info’...
Running ‘makeinfo --no-split with-editor.texi -o with-editor.info’...done
Running ‘install-info with-editor.info --dir=dir’...
Running ‘install-info with-editor.info --dir=dir’...done
--- [yaml-mode] ---
Creating /Users/cceleri/.emacs.d/lib/yaml-mode/yaml-mode-autoloads.el...
Compiling /Users/cceleri/.emacs.d/lib/yaml-mode/yaml-mode.el...
Done (Total of 1 file compiled)
--- [init.el] ---
Loading /Users/cceleri/.emacs.d/init.el (source)...
Loading Emacs...done (20.252s)
Loading /Users/cceleri/.emacs.d/init.el...
Loading /Users/cceleri/.emacs.d/early-init.el (source)...
Initializing drones...done (20 drones in 0.121s)
Loading early birds...done (0.154s)
Loading /Users/cceleri/.emacs.d/init.el...done (0.227s)
Compiling /Users/cceleri/.emacs.d/init.el...
Opening output file: No such file or directory, /Users/cceleri/.emacs.d/var/savehist.el
^COpening output file: No such file or directory, /Users/cceleri/.emacs.d/var/savehist.el
emacs: Opening output file: No such file or directory, /Users/cceleri/.emacs.d/var/savehist.el
make[1]: *** [build] Error 1
make: *** [bootstrap] Interrupt: 2
Probably just a notice, but all your currently-submoduled repos in .gitmodules
are read/write, which can bug someone else cloning without the necessary permissions.
On emacs 25 running on Ubuntu 16.04, I get "Not a git repository" when I tried to install a package. Details follow.
I setup emacs.g via
$ git config --global url.https://github.com/.insteadOf [email protected]:
$ git config --global url.https://gitlab.com/.insteadOf [email protected]:
$ git config --global core.excludesfile ~/.gitignore_global
$ echo '*-autoloads.el' >> ~/.gitignore_global
$ echo '*.elc' >> ~/.gitignore_global
$ echo 'dir' >> ~/.gitignore_global
$ cd ~/Private
$ git clone https://github.com/emacscollective/emacs.g emacs.g
$ cd emacs.g
$ make bootstrap
$ mkdir var
$ cd var
$ git clone https://github.com/emacsmirror/epkgs.git
$ rm -rf ~/.emacs.d
$ ln -s ~/Private/emacs.g ~/.emacs.d
then launched emacs 25 without any argument, and tried to install one package via
M-x borg-assimilate RET beacon RET
which resulted in this error message in the mini-buffer:
fatal: Not a git repository: ../../.git/modules/beacon
Despite the error message, it appears to me that at least the cloning process worked:
$ cd ~/Private/emacs.g
$ ls .git/modules/beacon
branches config description HEAD hooks index info logs objects packed-refs refs
Did I missing something in my setup?
Should I just ignore this error message?
My emacs configuration was bad from years of abuse so I decided to start fresh. Cloned a new local version of emacscollective/emacs.g and ran make bootstrap
. Received several error messages like:
magit-bisect.el:30:1:Error: Cannot open load file: No such file or directory, ghub
It looks like magit/ghub
is missing as it's required by magit in magit-collab.el
and listed in magit-pkg.el
.
Manually magit/ghub as a submodule with git submodule add [email protected]:magit/ghub.git lib/ghub
and rebuilding the drones with make clean && make all
did not remove the errors for me. I also tried removing all *-autoload.el
files before running make again. I've included the full section of output for ghub and magit when running make all
below.
--- [ghub] ---
Creating /home/brendan/.emacs.d/lib/ghub/ghub-autoloads.el...
Compiling /home/brendan/.emacs.d/lib/ghub/ghub.el...
Done (Total of 1 file compiled in 2 directories)
Running ’makeinfo --no-split ghub.texi -o ghub.info’...
Running ’makeinfo --no-split ghub.texi -o ghub.info’...done
Running ’install-info ghub.info --dir=dir’...
Running ’install-info ghub.info --dir=dir’...done
--- [git-modes] ---
Creating /home/brendan/.emacs.d/lib/git-modes/git-modes-autoloads.el...
Compiling /home/brendan/.emacs.d/lib/git-modes/git-modes.el...
Compiling /home/brendan/.emacs.d/lib/git-modes/gitattributes-mode.el...
Compiling /home/brendan/.emacs.d/lib/git-modes/gitconfig-mode.el...
Compiling /home/brendan/.emacs.d/lib/git-modes/gitignore-mode.el...
Done (Total of 4 files compiled in 2 directories)
--- [magit] ---
Creating /home/brendan/.emacs.d/lib/magit/lisp/magit-autoloads.el...
Compiling /home/brendan/.emacs.d/lib/magit/lisp/git-commit.el...
Compiling /home/brendan/.emacs.d/lib/magit/lisp/git-rebase.el...
In toplevel form:
git-rebase.el:73:1:Error: Cannot open load file: No such file or directory, ghub
Compiling /home/brendan/.emacs.d/lib/magit/lisp/magit-apply.el...
Compiling /home/brendan/.emacs.d/lib/magit/lisp/magit-autorevert.el...
Compiling /home/brendan/.emacs.d/lib/magit/lisp/magit-bisect.el...
In toplevel form:
magit-bisect.el:30:1:Error: Cannot open load file: No such file or directory, ghub
Compiling /home/brendan/.emacs.d/lib/magit/lisp/magit-blame.el...
In toplevel form:
magit-blame.el:31:1:Error: Cannot open load file: No such file or directory, ghub
Compiling /home/brendan/.emacs.d/lib/magit/lisp/magit-bookmark.el...
In toplevel form:
magit-bookmark.el:30:1:Error: Cannot open load file: No such file or directory, ghub
Compiling /home/brendan/.emacs.d/lib/magit/lisp/magit-branch.el...
In toplevel form:
magit-branch.el:34:1:Error: Cannot open load file: No such file or directory, ghub
Compiling /home/brendan/.emacs.d/lib/magit/lisp/magit-collab.el...
In toplevel form:
magit-collab.el:37:1:Error: Cannot open load file: No such file or directory, ghub
Compiling /home/brendan/.emacs.d/lib/magit/lisp/magit-commit.el...
In toplevel form:
magit-commit.el:32:1:Error: Cannot open load file: No such file or directory, ghub
Compiling /home/brendan/.emacs.d/lib/magit/lisp/magit-core.el...
Compiling /home/brendan/.emacs.d/lib/magit/lisp/magit-diff.el...
Compiling /home/brendan/.emacs.d/lib/magit/lisp/magit-ediff.el...
In toplevel form:
magit-ediff.el:30:1:Error: Cannot open load file: No such file or directory, ghub
Compiling /home/brendan/.emacs.d/lib/magit/lisp/magit-extras.el...
In toplevel form:
magit-extras.el:27:1:Error: Cannot open load file: No such file or directory, ghub
Compiling /home/brendan/.emacs.d/lib/magit/lisp/magit-files.el...
In toplevel form:
magit-files.el:33:1:Error: Cannot open load file: No such file or directory, ghub
Compiling /home/brendan/.emacs.d/lib/magit/lisp/magit-git.el...
Compiling /home/brendan/.emacs.d/lib/magit/lisp/magit-imenu.el...
In toplevel form:
magit-imenu.el:38:1:Error: Cannot open load file: No such file or directory, ghub
Compiling /home/brendan/.emacs.d/lib/magit/lisp/magit-log.el...
Compiling /home/brendan/.emacs.d/lib/magit/lisp/magit-margin.el...
Compiling /home/brendan/.emacs.d/lib/magit/lisp/magit-mode.el...
Compiling /home/brendan/.emacs.d/lib/magit/lisp/magit-notes.el...
In toplevel form:
magit-notes.el:30:1:Error: Cannot open load file: No such file or directory, ghub
Compiling /home/brendan/.emacs.d/lib/magit/lisp/magit-obsolete.el...
In toplevel form:
magit-obsolete.el:30:1:Error: Cannot open load file: No such file or directory, ghub
Skipping /home/brendan/.emacs.d/lib/magit/lisp/magit-pkg.el...skipped
Compiling /home/brendan/.emacs.d/lib/magit/lisp/magit-process.el...
Compiling /home/brendan/.emacs.d/lib/magit/lisp/magit-refs.el...
In toplevel form:
magit-refs.el:30:1:Error: Cannot open load file: No such file or directory, ghub
Compiling /home/brendan/.emacs.d/lib/magit/lisp/magit-remote.el...
In toplevel form:
magit-remote.el:32:1:Error: Cannot open load file: No such file or directory, ghub
Compiling /home/brendan/.emacs.d/lib/magit/lisp/magit-repos.el...
Compiling /home/brendan/.emacs.d/lib/magit/lisp/magit-section.el...
Compiling /home/brendan/.emacs.d/lib/magit/lisp/magit-sequence.el...
In toplevel form:
magit-sequence.el:32:1:Error: Cannot open load file: No such file or directory, ghub
Compiling /home/brendan/.emacs.d/lib/magit/lisp/magit-stash.el...
In toplevel form:
magit-stash.el:30:1:Error: Cannot open load file: No such file or directory, ghub
Compiling /home/brendan/.emacs.d/lib/magit/lisp/magit-status.el...
In toplevel form:
magit-status.el:30:1:Error: Cannot open load file: No such file or directory, ghub
Compiling /home/brendan/.emacs.d/lib/magit/lisp/magit-submodule.el...
In toplevel form:
magit-submodule.el:26:1:Error: Cannot open load file: No such file or directory, ghub
Compiling /home/brendan/.emacs.d/lib/magit/lisp/magit-subtree.el...
In toplevel form:
magit-subtree.el:26:1:Error: Cannot open load file: No such file or directory, ghub
Compiling /home/brendan/.emacs.d/lib/magit/lisp/magit-utils.el...
Compiling /home/brendan/.emacs.d/lib/magit/lisp/magit-wip.el...
Compiling /home/brendan/.emacs.d/lib/magit/lisp/magit-worktree.el...
In toplevel form:
magit-worktree.el:33:1:Error: Cannot open load file: No such file or directory, ghub
Compiling /home/brendan/.emacs.d/lib/magit/lisp/magit.el...
Done (Total of 15 files compiled, 21 failed, 1 skipped in 2 directories)
Running ’makeinfo --no-split magit.texi -o magit.info’...
Running ’makeinfo --no-split magit.texi -o magit.info’...done
Running ’install-info magit.info --dir=dir’...
Running ’install-info magit.info --dir=dir’...done
The SHA bc78f600b2c451bc8df1cf73bbb14476c11ece1d
that you updated to recently doesn't seem to be present in https://github.com/emacscollective/epkg. Do you have a local commit that didn't get pushed?
Also, thanks for all your work on borg and related packages, it's a really slick setup.
I clone this repo and then run make bootstrap-borg
, that only clone borg
from github. All the other repos are still empty dir. So could you please help me, what's the next step to continue? I've tried git submodule update --init --recursive
and also didn't work.
Say I have the following in my .gitmodules:
[submodule "no-littering"]
path = lib/no-littering
url = [email protected]:tarsius/no-littering.git
Now through the magit interface, I added a remote [email protected]:justbur/no-littering.git
to use its fork. This works just fine on the same machine, but git submodule update --init
fails on a new machine, complaining it can't find the commit. The announcement mentions you have to keep track of this manually, how is that done?
After cloning this repo to ~/.emacs.d, make bootstrap
gives me the following errors at the end:
Error (use-package): eldoc :config: Symbol's function definition is void: global-eldoc-mode
Error (use-package): saveplace :config: Symbol's function definition is void: save-place-mode
Loading /Users/sooheon/.emacs.d/init.el...done (0.346s)
Compiling /Users/sooheon/.emacs.d/init.el...
Cannot load epkg: (file-error "Cannot open load file" "no such file or directory" "seq")
In end of data:
../../init.el:177:1:Warning: the function `magit-add-section-hook' might not
be defined at runtime.
../../init.el:177:1:Warning: the following functions are not known to be
defined: global-eldoc-mode, save-place-mode
Wrote /Users/sooheon/.emacs.d/init.elc
Is there some loading gone wrong? Using emacs 24.5.1
the supplied link in the readme [https://gitlab.com/emacscollective/emacs.g] is not found on Gitlab. Maybe the repository isn't private.
The dash package is loaded twice in init.el on lines 36 and 73. Can the load on 73 be removed?
When I run make build
from the layer/all
branch (as of commit 3c1593b) I get:
[...]
--- [init.el] ---
Loading /home/ivan/.emacs.d/init.el (source)...
Loading Emacs...done (53.226s)
Loading /home/ivan/.emacs.d/init.el...
Initializing drones...done (40 drones in 0.040s)
Loading early birds...done (0.051s)
Error (use-package): sisyphus/:catch: Cannot open load file: No such file or directory, llama
Loading /home/ivan/.emacs.d/init.el...done (0.104s)
Compiling /home/ivan/.emacs.d/init.el...
Initializing drones...done (40 drones in 0.134s)
Cannot load sisyphus: (file-missing "Cannot open load file" "No such file or directory" "llama")
I would expect make build
to not produce such errors, though it seems to exit with rc=0 anyway. 😕
When I merge that into [my own branch[(https://github.com/aij/dotemacs/commit/72db29f967c5ff5c1c67886c3bc9ba9f1a893c68) where I have (setq debug-on-error t)
in init.el
it actually causes make build
to fail:
lib/yasnippet/yasnippet.el:798:1: Warning: Alias for ‘yas--extra-modes’ should
be declared before its referent
Done (Total of 2 files compiled, 1 skipped)
--- [init.el] ---
Loading /home/ivan/.emacs.d/init.el (source)...
Loading Emacs...done (77.198s)
Loading /home/ivan/.emacs.d/init.el...
Initializing drones...done (93 drones in 0.087s)
Loading /home/ivan/.emacs.d/custom.el (source)...
Loading saveplace (native compiled elisp)...
Loading early birds...done (0.136s)
Debugger entered--Lisp error: (file-missing "Cannot open load file" "No such file or directory" "llama")
#<subr require>(llama)
apply(#<subr require> llama)
require(llama)
load-with-code-conversion("/home/ivan/.emacs.d/lib/sisyphus/sisyphus.el" "/home/ivan/.emacs.d/lib/sisyphus/sisyphus.el" t t)
#<subr require>(sisyphus nil t)
apply(#<subr require> (sisyphus nil t))
require(sisyphus nil t)
(not (require 'sisyphus nil t))
(if (not (require 'sisyphus nil t)) (display-warning 'use-package (format "Cannot load %s" 'sisyphus) :error))
(prog1 (if (not (require 'sisyphus nil t)) (display-warning 'use-package (format "Cannot load %s" 'sisyphus) :error)) (let ((elapsed (float-time (time-subtract (current-time) now)))) (if (> elapsed 0.1) (message "%s...done (%.3fs)" "Loading package sisyphus" elapsed) (message "%s...done" "Loading package sisyphus"))))
(let ((now (current-time))) (message "%s..." "Loading package sisyphus") (prog1 (if (not (require 'sisyphus nil t)) (display-warning 'use-package (format "Cannot load %s" 'sisyphus) :error)) (let ((elapsed (float-time (time-subtract (current-time) now)))) (if (> elapsed 0.1) (message "%s...done (%.3fs)" "Loading package sisyphus" elapsed) (message "%s...done" "Loading package sisyphus")))))
(closure (t) nil (let ((now (current-time))) (message "%s..." "Loading package sisyphus") (prog1 (if (not (require 'sisyphus nil t)) (display-warning 'use-package (format "Cannot load %s" 'sisyphus) :error)) (let ((elapsed (float-time (time-subtract ... now)))) (if (> elapsed 0.1) (message "%s...done (%.3fs)" "Loading package sisyphus" elapsed) (message "%s...done" "Loading package sisyphus"))))))()
eval-after-load(magit (closure (t) nil (let ((now (current-time))) (message "%s..." "Loading package sisyphus") (prog1 (if (not (require 'sisyphus nil t)) (display-warning 'use-package (format "Cannot load %s" 'sisyphus) :error)) (let ((elapsed (float-time ...))) (if (> elapsed 0.1) (message "%s...done (%.3fs)" "Loading package sisyphus" elapsed) (message "%s...done" "Loading package sisyphus")))))))
(condition-case err (eval-after-load 'magit #'(lambda nil (let ((now (current-time))) (message "%s..." "Loading package sisyphus") (prog1 (if (not ...) (display-warning ... ... :error)) (let (...) (if ... ... ...)))))) ((debug error) (funcall use-package--warning41 :catch err)))
(progn (defvar use-package--warning41 #'(lambda (keyword err) (let ((msg (format "%s/%s: %s" ... keyword ...))) (display-warning 'use-package msg :error)))) (condition-case err (eval-after-load 'magit #'(lambda nil (let ((now ...)) (message "%s..." "Loading package sisyphus") (prog1 (if ... ...) (let ... ...))))) ((debug error) (funcall use-package--warning41 :catch err))))
(if (>= emacs-major-version 27) (progn (defvar use-package--warning41 #'(lambda (keyword err) (let ((msg ...)) (display-warning 'use-package msg :error)))) (condition-case err (eval-after-load 'magit #'(lambda nil (let (...) (message "%s..." "Loading package sisyphus") (prog1 ... ...)))) ((debug error) (funcall use-package--warning41 :catch err)))))
load-with-code-conversion("/home/ivan/.emacs.d/init.el" "/home/ivan/.emacs.d/init.el" nil nil)
load-file("init.el")
borg-batch-rebuild-init()
borg-batch-rebuild()
command-line-1(("--eval" "(setq load-prefer-newer t)" "--load" "subr-x" "--eval" "(setq byte-compile-warnings '(not docstrings))" "--eval" "(fset 'original-message (symbol-function 'message)..." "--eval" "(fset 'message (lambda (format &rest args) (unless..." "-L" "lib/borg/" "--load" "borg" "--funcall" "borg-initialize" "--funcall" "borg-batch-rebuild"))
command-line()
normal-top-level()
make: *** [lib/borg/borg.mk:101: build] Error 255
To repro the first error: git checkout 3c1593ba18b5b93c5161d41a5de3e7cf1e968ece && git submodule update && make build
I like to keep my emacs-config in a private repository as it contains email signatures and the like. For that reason I was trying to fork emacs.g to a private fork that still follows upstream for the master and various branches. This to be able to keep my own config in a separate branch in my own fork that I can push to, while being able to pull from here.
Despite having tried various git clone --bare or git clone --mirror approaches I unfortunately can't seem to get this working at all.
I assume that I am not the only one that would want to use emacs.g in this way. Would it be possible to give some hints on how the average user would be able to use emacs.g this way for their private repositories?
I'm highly interested in using emacs.g
to bootstrap Borg but have no idea what the implications are for using or distributing it given there is no provided license.
Scenario:
My current personal configuration is a private repo that for embarrassing reasons I'd like to keep private. I want to combine that code with Borg
and:
magit
emacs.g
as a bootstrapYou already provided instructions for creating a private repo, even explaining the "why" and "what" in git terms which is AWESOME, but you make no reference to Licensing and a lack of installation notes that would otherwise round out a well composed package kit seems... odd.
Related:
How to Make a fork of public repository private?
How does GitHub's “forking right” cope with an “All rights reserved” project?
Full disclaimer:
I don't develop for a living, and I've never forked. Would love to be set straight.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.