Bug#828154: RFP: spacemacs -- Emacs configuration to get best of Emacs and Vim

2020-06-06 Thread Lev Lamberov
Hi,

recently I rewrote a bit my ugly spacemacs_pkg script [spacemacs_pkg] to
get a list of Spacemacs packages and mark those that are maintained by
Debian Emacsen team in Debian as done. Switched to parsing use-package
declarations, which made it possible to get a list of packages not just
in Spacemacs [spacemacs], but also in Doom Emacs [doomemacs]. Also,
added some jinja2 templating, so now it outputs an HTML rather then DSV
(as was required for the team's old wiki). You may look at the output at
my page [my-page].

[spacemacs_pkg] https://salsa.debian.org/dogsleg/spacemacs-pkgs

[spacemacs] https://github.com/syl20bnr/spacemacs

[doomemacs] https://github.com/hlissner/doom-emacs

[my-page] https://pimentola.ru/spacemacs/

Later I'll switch to marking as done those packages that have elpa-
prefix, so statistics will be a bit better (say, agda2-mode is marked as
todo because it is maintained not by the Debian Emacsen team). But I
first need to find a better way to get a list of packages in unstable,
which will not require changing /etc/apt/source.list and will be able to
work automatically.

Unfortunately, Spacemacs and Doom Emacs use use-package declarations
also for loading built-in packages. Currently, I'm not quite sure what
is the best way of excluding the built-in packages from the output of
spacemacs_pkgs. Probably, fetching GNU Emacs source code and getting all
the filenames in its lisp directory. So, need to figure out what to do.

After resolving these difficulties I plan to automatically run the
script on one of my server machines, so we'll have a more of less
up-to-date todo list concerning packaging Spacemacs and Doom Emacs.
Honestly, I don't think it's a good idea to package them as whole, but
such a list still can be used as a source of interesting packages which
may be added to Debian.

If you have any suggestions, please let me know. Comments and patches
are welcome.

Cheers!
Lev



Bug#828154: RFP: spacemacs -- Emacs configuration to get best of Emacs and Vim

2017-01-26 Thread Lev Lamberov
27.01.2017 04:24, Sean Whitton пишет:
> On Fri, Jan 27, 2017 at 01:10:51AM +0500, Lev Lamberov wrote:
>> With up-to-date Spacemacs source it produces a list of 558 packages.
>> Please, find the output attached. So, it is ready to put to the team's
>> wiki. ;-)
> 
> Done!

Cool! Thank you! Probably at some point we will need a script to mark
packages already in Debian as DONE. Otherwise task of selecting package
from that table to prepare Debian package will be time-consuming.

Cheers!
Lev



signature.asc
Description: OpenPGP digital signature


Bug#828154: RFP: spacemacs -- Emacs configuration to get best of Emacs and Vim

2017-01-26 Thread Sean Whitton
Hello Lev,

On Fri, Jan 27, 2017 at 01:10:51AM +0500, Lev Lamberov wrote:
> With up-to-date Spacemacs source it produces a list of 558 packages.
> Please, find the output attached. So, it is ready to put to the team's
> wiki. ;-)

Done!

-- 
Sean Whitton


signature.asc
Description: PGP signature


Bug#828154: RFP: spacemacs -- Emacs configuration to get best of Emacs and Vim

2017-01-26 Thread Lev Lamberov
Hi,

26.01.2017 01:23, Sean Whitton пишет:
> We don't need the list of packages to be machine-readable.  We just need
> it to generate a "to-do list" for pkg-emacsen team members.  So how
> about outputting it in ikiwiki's table format?[1]  Then we can add it to
> our team wiki[2] (after enabling the table plug-in).

OK, now it outputs (alphabetically ordered) data in ikiwiki's table
format, using "|" as separators. The output has the following form:

package_name|built-in_status|layers_list

With up-to-date Spacemacs source it produces a list of 558 packages.
Please, find the output attached. So, it is ready to put to the team's
wiki. ;-)

>> By the way, I think I've spotted that possibly not all packages are
>> declared in the mentioned declarations. So, I also plan to write
>> functions to "parse" (use-package `pkg-name' [...]) declarations in
>> Spacemacs source code.
> 
> Good.  It sounds we need to add those to our list.

Next I'll check my hypothesis about it.

Cheers!
Lev
[[!table  data="""
Package|Built-in|Layers
2048-game|False|+fun/games
abbrev|True|+distributions/spacemacs-base
ac-ispell|False|+completion/auto-completion
ace-jump-helm-line|False|+completion/helm
ace-pinyin|False|+intl/chinese
ace-window|False|+distributions/spacemacs-base
adaptive-wrap|False|+spacemacs/spacemacs-editing-visual
adoc-mode|False|+lang/asciidoc
afternoon-theme|False|+themes/themes-megapack
alchemist|False|+lang/elixir
alect-themes|False|+themes/themes-megapack
ample-theme|False|+themes/themes-megapack
ample-zen-theme|False|+themes/themes-megapack
anaconda-mode|False|+lang/python
ansi-colors|True|+spacemacs/spacemacs-ui-visual
ansible-doc|False|+tools/ansible
anti-zenburn-theme|False|+themes/themes-megapack
apropospriate-theme|False|+themes/themes-megapack
archive-mode|True|+distributions/spacemacs-base
arduino-mode|False|+lang/extra-langs
asm-mode|False|+lang/asm
async|False|+distributions/spacemacs-bootstrap
auctex|False|+lang/latex
auctex-latexmk|False|+lang/latex
auto-compile|False|+lang/emacs-lisp
auto-complete|False|+completion/auto-completion
auto-dictionary|False|+checkers/spell-checking
auto-highlight-symbol|False|+spacemacs/spacemacs-editing-visual, 
+completion/ivy, +completion/helm
auto-yasnippet|False|+completion/auto-completion
avy|False|+spacemacs/spacemacs-editing
badwolf-theme|False|+themes/themes-megapack
bind-key|False|+distributions/spacemacs-bootstrap
bind-map|False|+distributions/spacemacs-bootstrap
birds-of-paradise-plus-theme|False|+themes/themes-megapack
bookmark|True|+distributions/spacemacs-base, +completion/helm
bracketed-paste|False|+spacemacs/spacemacs-editing
bubbleberry-theme|False|+themes/themes-megapack
bundler|False|+lang/ruby
busybee-theme|False|+themes/themes-megapack
cargo|False|+lang/rust
centered-buffer-mode|False|+distributions/spacemacs-base
centered-cursor|False|+spacemacs/spacemacs-ui
cherry-blossom-theme|False|+themes/themes-megapack
chinese-pyim|False|+intl/chinese
chinese-wbim|False|+intl/chinese
chruby|False|+lang/ruby
cider|False|+lang/clojure
cider-eval-sexp-fu|False|+lang/clojure
clean-aindent-mode|False|+spacemacs/spacemacs-editing
clj-refactor|False|+lang/clojure
clojure-mode|False|+lang/clojure
clojure-snippets|False|+lang/clojure
clues-theme|False|+themes/themes-megapack
cmm-mode|False|+lang/haskell
coffee-mode|False|+lang/javascript
color-identifiers-mode|False|+themes/colors
color-theme-sanityinc-solarized|False|+themes/themes-megapack
color-theme-sanityinc-tomorrow|False|+themes/themes-megapack
column-enforce-mode|False|+spacemacs/spacemacs-editing-visual
comint|True|+tools/shell
common-lisp-snippets|False|+lang/common-lisp
company|False|+os/nixos, +completion/auto-completion, +tools/shell, 
+tools/puppet, +tools/finance, +tools/ansible, +emacs/org, +lang/racket, 
+lang/ocaml, +lang/clojure, +lang/haskell, +lang/java, +lang/html, +lang/ruby, 
+lang/lua, +lang/latex, +lang/agda, +lang/csharp, +lang/erlang, 
+lang/shell-scripts, +lang/scheme, +lang/javascript, +lang/emacs-lisp, 
+lang/php, +lang/d, +lang/go, +lang/typescript, +lang/rust, +lang/markdown, 
+lang/python, +lang/elixir, +lang/elm, +chat/erc, +chat/rcirc, +frameworks/react
company-anaconda|False|+lang/python
company-auctex|False|+lang/latex
company-cabal|False|+lang/haskell
company-dcd|False|+lang/d
company-emacs-eclim|False|+lang/java
company-emoji|False|+emacs/org, +fun/emoji, +lang/markdown, +chat/erc, 
+chat/rcirc
company-ghc|False|+lang/haskell
company-ghci|False|+lang/haskell
company-go|False|+lang/go
company-nixos-options|False|+os/nixos
company-quickhelp|False|+completion/auto-completion, +lang/racket
company-shell|False|+lang/shell-scripts
company-statistics|False|+completion/auto-completion
company-tern|False|+lang/javascript, +frameworks/react
company-web|False|+lang/html
company-ycmd|False|+tools/ycmd
conf-mode|True|+distributions/spacemacs-base
counsel|False|+completion/ivy
counsel-dash|False|+tools/dash
counsel-projectile|False|+completion/ivy
csharp-mode|False|+lang/csharp
css-mode|Fal

Bug#828154: RFP: spacemacs -- Emacs configuration to get best of Emacs and Vim

2017-01-25 Thread Sean Whitton
Dear Lev,

On Wed, Jan 25, 2017 at 11:49:23PM +0500, Lev Lamberov wrote:
> I've wrote a small and ugly Python script which somewhat "parses" (setq
> *-packages [...]) declarations from Spacemacs source code and
> (currently) creates a list of dictionaries with package names as keys
> and booleans (representing built-in status of a given package as defined
> in Spacemacs source code) as values. You can find it in my repository [0].
> 
> If you find the script somehow useful, feel free to contribute and/or
> comment on it. For example, I'm not sure about the format of output. And
> should it be the output for the whole Spacemacs source code without
> duplicates, or a bunch of separate outputs for each packages.el file?

Thank you for working on this.

We don't need the list of packages to be machine-readable.  We just need
it to generate a "to-do list" for pkg-emacsen team members.  So how
about outputting it in ikiwiki's table format?[1]  Then we can add it to
our team wiki[2] (after enabling the table plug-in).

> By the way, I think I've spotted that possibly not all packages are
> declared in the mentioned declarations. So, I also plan to write
> functions to "parse" (use-package `pkg-name' [...]) declarations in
> Spacemacs source code.

Good.  It sounds we need to add those to our list.

[1]  https://ikiwiki.info/ikiwiki/directive/table/
[2]  http://pkg-emacsen.alioth.debian.org/spacemacs/

-- 
Sean Whitton


signature.asc
Description: PGP signature


Bug#828154: RFP: spacemacs -- Emacs configuration to get best of Emacs and Vim

2017-01-25 Thread Lev Lamberov
Hi Axel and Sean,

I've wrote a small and ugly Python script which somewhat "parses" (setq
*-packages [...]) declarations from Spacemacs source code and
(currently) creates a list of dictionaries with package names as keys
and booleans (representing built-in status of a given package as defined
in Spacemacs source code) as values. You can find it in my repository [0].

If you find the script somehow useful, feel free to contribute and/or
comment on it. For example, I'm not sure about the format of output. And
should it be the output for the whole Spacemacs source code without
duplicates, or a bunch of separate outputs for each packages.el file?

By the way, I think I've spotted that possibly not all packages are
declared in the mentioned declarations. So, I also plan to write
functions to "parse" (use-package `pkg-name' [...]) declarations in
Spacemacs source code.

Cheers!
Lev

[0] https://github.com/dogsleg/spacemacs-pkgs



signature.asc
Description: OpenPGP digital signature


Bug#828154: RFP: spacemacs -- Emacs configuration to get best of Emacs and Vim

2016-06-26 Thread Sean Whitton
Hello,

On Sun, Jun 26, 2016 at 12:02:43PM +0200, Axel Beckert wrote:
> The command as on the wiki didn't work as it misses the trailing ";"
> for the command and if that's added, only lists tons of "TODO".

The 'TODO' meant that I hadn't finished figuring out the command :P

Some `packages.el' files specify more than one package to be downloaded
from MELPA.  For example, in layers/+lang/elm/package.el:

(setq elm-packages
'(
  company
  elm-mode
  flycheck
  flycheck-elm
  popwin
  smartparens
  ))

I'd started writing lots of regexps to get the list of packages out but
I think it might be better just to invoke Emacs to, you know, parse the
lisp..

> According to "wc -l" this are 111 packages. From the logs of my first
> spacemacs run, it only seems to have downloaded 69 of them. And I
> don't have all available *-el and elpa-* packages installed on that
> system. So I also checked .emacs.d/elpa where it seems to store the
> downloaded packages:

I'm not sure whether this is a viable alternative to my approach or not
-- I don't think Spacemacs downloads all the packages on a first run.  I
think that some layers are considered 'optional'.  If there was some way
to know that we had activated every single layer, and we did it in a
clean sid chroot, it would give the correct list.

We could make a team decision to package spacemacs once all the
compulsory dependencies are packaged, or we could wait until we have the
packages that every single layer requires.

-- 
Sean Whitton


signature.asc
Description: PGP signature


Bug#828154: RFP: spacemacs -- Emacs configuration to get best of Emacs and Vim

2016-06-26 Thread Axel Beckert
Hi Sean,

Sean Whitton wrote:
> First we have to package all the MELPA packages it pulls in, as you
> point out.  I started a wiki page to list them all to keep track of
> that:
> 
> http://pkg-emacsen.alioth.debian.org/spacemacs/

I don't seem to have write permissions there, so I put the list here.
The command as on the wiki didn't work as it misses the trailing ";"
for the command and if that's added, only lists tons of "TODO". So I
used that one:

$ find layers -name "packages.el" -print
layers/osx/packages.el
layers/jabber/packages.el
layers/finance/packages.el
layers/+email/mu4e/packages.el
layers/+email/gnus/packages.el
layers/speed-reading/packages.el
layers/spotify/packages.el
layers/+tools/vagrant/packages.el
layers/+tools/command-log/packages.el
layers/+tools/ranger/packages.el
layers/+tools/fasd/packages.el
layers/+tools/pandoc/packages.el
layers/+tools/wakatime/packages.el
layers/+tools/ycmd/packages.el
layers/+tools/tmux/packages.el
layers/+tools/evernote/packages.el
layers/+tools/dash/packages.el
layers/+tools/elfeed/packages.el
layers/colors/packages.el
layers/auto-completion/packages.el
layers/spell-checking/packages.el
layers/+vim/vim-powerline/packages.el
layers/+vim/vinegar/packages.el
layers/+vim/evil-commentary/packages.el
layers/+vim/evil-snipe/packages.el
layers/+vim/evil-cleverparens/packages.el
layers/+vim/vim-empty-lines/packages.el
layers/ibuffer/packages.el
layers/+source-control/version-control/packages.el
layers/+source-control/git/packages.el
layers/+source-control/github/packages.el
layers/+source-control/perforce/packages.el
layers/+window-management/eyebrowse/packages.el
layers/+window-management/spacemacs-layouts/packages.el
layers/+config-files/puppet/packages.el
layers/+config-files/terraform/packages.el
layers/+config-files/ansible/packages.el
layers/+config-files/salt/packages.el
layers/+config-files/dockerfile/packages.el
layers/+lang/java/packages.el
layers/+lang/erlang/packages.el
layers/+lang/ipython-notebook/packages.el
layers/+lang/rust/packages.el
layers/+lang/yaml/packages.el
layers/+lang/haskell/packages.el
layers/+lang/markdown/packages.el
layers/+lang/purescript/packages.el
layers/+lang/ess/packages.el
layers/+lang/lua/packages.el
layers/+lang/javascript/packages.el
layers/+lang/octave/packages.el
layers/+lang/php/packages.el
layers/+lang/elixir/packages.el
layers/+lang/clojure/packages.el
layers/+lang/d/packages.el
layers/+lang/windows-scripts/packages.el
layers/+lang/asciidoc/packages.el
layers/+lang/extra-langs/packages.el
layers/+lang/emacs-lisp/packages.el
layers/+lang/c-c++/packages.el
layers/+lang/sql/packages.el
layers/+lang/fsharp/packages.el
layers/+lang/ocaml/packages.el
layers/+lang/vimscript/packages.el
layers/+lang/shell-scripts/packages.el
layers/+lang/idris/packages.el
layers/+lang/sml/packages.el
layers/+lang/typescript/packages.el
layers/+lang/common-lisp/packages.el
layers/+lang/latex/packages.el
layers/+lang/go/packages.el
layers/+lang/scala/packages.el
layers/+lang/swift/packages.el
layers/+lang/ruby/packages.el
layers/+lang/elm/packages.el
layers/+lang/csharp/packages.el
layers/+lang/racket/packages.el
layers/+lang/autohotkey/packages.el
layers/+lang/python/packages.el
layers/+lang/html/packages.el
layers/+lang/nim/packages.el
layers/+lang/scheme/packages.el
layers/+frameworks/react/packages.el
layers/+frameworks/ruby-on-rails/packages.el
layers/+frameworks/django/packages.el
layers/restclient/packages.el
layers/nixos/packages.el
layers/+fun/xkcd/packages.el
layers/+fun/games/packages.el
layers/+fun/selectric/packages.el
layers/+fun/emoji/packages.el
layers/syntax-checking/packages.el
layers/cscope/packages.el
layers/typography/packages.el
layers/prodigy/packages.el
layers/chinese/packages.el
layers/search-engine/packages.el
layers/geolocation/packages.el
layers/org/packages.el
layers/semantic/packages.el
layers/chrome/packages.el
layers/+distribution/spacemacs-base/packages.el
layers/+distribution/spacemacs/packages.el
layers/smex/packages.el
layers/themes-megapack/packages.el
layers/gtags/packages.el
layers/shell/packages.el
layers/deft/packages.el
layers/floobits/packages.el
layers/+irc/erc/packages.el
layers/+irc/rcirc/packages.el

According to "wc -l" this are 111 packages. From the logs of my first
spacemacs run, it only seems to have downloaded 69 of them. And I
don't have all available *-el and elpa-* packages installed on that
system. So I also checked .emacs.d/elpa where it seems to store the
downloaded packages:

…/.emacs.d/elpa $ ls -1d *-*/
ace-jump-helm-line-20160329.1218/
ace-link-20160529.2350/
ace-window-20160225.819/
adaptive-wrap-0.5/
aggressive-indent-20160608.1625/
anzu-20160617.730/
auto-compile-20160424.418/
auto-highlight-symbol-20130313.243/
avy-20160620.1240/
bind-key-20160227.48/
bind-map-20160606.1343/
bracketed-paste-20160407.1648/
buffer-move-20160615.1103/
clean-aindent-mode-20150816.2029/
dash-20160619.611/
define-word-20150709.1223/
diminish-20151215.915/
elisp-slime-nav-20160128.1109/
eval-sexp-fu-201

Bug#828154: RFP: spacemacs -- Emacs configuration to get best of Emacs and Vim

2016-06-25 Thread Sean Whitton
Hello,

First we have to package all the MELPA packages it pulls in, as you
point out.  I started a wiki page to list them all to keep track of
that:

http://pkg-emacsen.alioth.debian.org/spacemacs/

-- 
Sean Whitton


signature.asc
Description: PGP signature


Bug#828154: RFP: spacemacs -- Emacs configuration to get best of Emacs and Vim

2016-06-25 Thread Axel Beckert
Hi,

Axel Beckert wrote:
> David Bremner wrote in 
> https://lists.debian.org/debian-emacsen/2015/12/msg3.html:
> > What about a script called spacemacs that runs something like
> > 
> > emacs --no-init-file --load /usr/share/emacs/.../spacemacs-init.el
> 
> This sounds like the right approach to me, btw.

But there's much more to do if someone wants to get this into Debian:

Upon start, spacemacs contacts tons of websites to download additional
modules and stuff:

>From the *Messages* buffer:

[…]  
Loading /home/abe/tmp/spacemacs/.emacs.d/core/core-load-paths.el
(source)...done
Contacting host: melpa.org:443
Importing package-keyring.gpg...done
Contacting host: melpa.org:443
Contacting host: orgmode.org:80
Importing package-keyring.gpg...done
Contacting host: orgmode.org:80
Importing package-keyring.gpg...done
Contacting host: elpa.gnu.org:443 [2 times]
Contacting host: melpa.org:443
Parsing tar file...done
[…]
Done (Total of 2 files compiled, 1 skipped)
Contacting host: melpa.org:443
gnutls.c: [0] (Emacs) fatal error: The TLS connection was non-properly 
terminated.
[…]

For a package, this clearly needs to be disabled (by default at least)
and replaced by package dependencies.

> There is already something similar in the FAQ at
> https://github.com/syl20bnr/spacemacs/blob/master/doc/FAQ.org#try-spacemacs-without-modifying-my-existing-emacs-configuration
> but unfortunately it works by modifying $HOME which is definitely the
> wrong way for a package.

That's the way I tried it out.

Regards, Axel
-- 
 ,''`.  |  Axel Beckert , http://people.debian.org/~abe/
: :' :  |  Debian Developer, ftp.ch.debian.org Admin
`. `'   |  4096R: 2517 B724 C5F6 CA99 5329  6E61 2FF9 CD59 6126 16B5
  `-|  1024D: F067 EA27 26B9 C3FC 1486  202E C09E 1D89 9593 0EDE



Bug#828154: RFP: spacemacs -- Emacs configuration to get best of Emacs and Vim

2016-06-25 Thread Axel Beckert
Package: wnpp
Severity: wishlist

Hi,

spacemacs was mentioned on the debian-emacsen list
(https://lists.debian.org/debian-emacsen/) multiple times, hence let's
make an RFP out of it as that's where people look for it first:

* Package name: spacemacs
  Version : 0.105.21
  Upstream Author : Sylvain Benner 
* URL : http://spacemacs.org/
* License : GPLv3
  Programming Lang: Emacs Lisp
  Description : Emacs configuration to get the best of Emacs and Vim

Spacemacs is a new way to experience Emacs -- a sophisticated and
polished set-up focused on ergonomics, mnemonics and consistency.

Just install it, launch it then press the space bar to explore the
interactive list of carefully-chosen key bindings. You can also press
the home buffer's [?] button for some great first key bindings to try.

Spacemacs can be used naturally by both Emacs and Vim users -- you can
even mix the two editing styles. Switching easily between input styles
makes Spacemacs a great tool for pair-programming.

--

So far for the RFP and potential package description. Here are a few
citiations from the debian-emacsen list which show that there is
indeed some demand for this package including ideas how it could be
formed into a Debian package:

Thomas Koch wrote in 
https://lists.debian.org/debian-emacsen/2015/08/msg2.html:
> Has anybody tried spacemacs?
> https://github.com/syl20bnr/spacemacs
> 
> Is it good? Would it make sense to try to package it?
> 
> Actually it's a collection of the best emacs modes with an
> opinionated config, isn't it?

Vincent Bernat wrote in 
https://lists.debian.org/debian-emacsen/2015/08/msg5.html:
> It doesn't seem a fork. Just a bunch of regular Emacs Lisp configuration
> files. The installation instructions only say to clone in ~/.emacs.d.

David Bremner wrote in 
https://lists.debian.org/debian-emacsen/2015/12/msg3.html:
> Sean Whitton  writes:
> > Then the question is what to do about init.el.  The file is quite short
> > [3].  My ideas:
> >
> > 1. add the (patched) init.el to /usr/share/emacs24/site-lisp and suggest
> > in Readme.Debian that the user replace their ~/.emacs.d/init.el with a
> > `load-file' call to the Debian spacemacs-init.el.
> >
> > 2. put the whole (patched) init.el in Readme.Debian and suggest the user
> > put it in their home directory
> >
> > 3. provide a shell script spacemacs-activate which does (1) or (2),
> > perhaps backing up/restoring an existing ~/.emacs.d/init.el
> >
> > Since I'm new to Debian packaging I'd like to get feedback on these
> > alternatives before proceeding.
> 
> What about a script called spacemacs that runs something like
> 
> emacs --no-init-file --load /usr/share/emacs/.../spacemacs-init.el

This sounds like the right approach to me, btw.

> If that worked, then people could switch easily between emacs and
> spacemacs, which feels kindof important to me.

Yep.

There is already something similar in the FAQ at
https://github.com/syl20bnr/spacemacs/blob/master/doc/FAQ.org#try-spacemacs-without-modifying-my-existing-emacs-configuration
but unfortunately it works by modifying $HOME which is definitely the
wrong way for a package.

> Again assuming it works, we could also try to upstream such a script, to
> reduce the clash between debian and other systems

Good idea!

Regards, Axel
-- 
 ,''`.  |  Axel Beckert , http://people.debian.org/~abe/
: :' :  |  Debian Developer, ftp.ch.debian.org Admin
`. `'   |  4096R: 2517 B724 C5F6 CA99 5329  6E61 2FF9 CD59 6126 16B5
  `-|  1024D: F067 EA27 26B9 C3FC 1486  202E C09E 1D89 9593 0EDE