* bug#33998: 27.0.50; cl-delete does not delete the first list element
@ 2019-01-06 13:30 Deus Max
2019-01-07 17:13 ` João Távora
0 siblings, 1 reply; 18+ messages in thread
From: Deus Max @ 2019-01-06 13:30 UTC (permalink / raw)
To: 33998
Function cl-delete refuses to delete the first element of a list.
I tried with all sorts of list elements, same results each time.
Here is a simple example:
(setq tst '(5 8 9 5 10 14 5 23))
(cl-delete 10 tst) -> returns (5 8 9 5 14 5 23)
and
tst -> (5 8 9 5 14 5 23)
(cl-delete 5 tst) -> returns (8 9 14 23)
but
tst -> (5 8 9 14 23)
The CL-manual says nothing about the first element being special. *ALL*
should mean all, right ? Am I missing something here ?
CL-manual says:
— Function: cl-delete item seq &key :test :test-not :key :count :start :end :from-end
This deletes all elements of seq that match item. It is a
destructive operation. Since Emacs Lisp does not support
stretchable strings or vectors, this is the same as cl-remove for
those sequence types. On lists, cl-remove will copy the list if
necessary to preserve the original list, whereas cl-delete will
splice out parts of the argument list. Compare append and nconc,
which are analogous non-destructive and destructive list
operations in Emacs Lisp.
In GNU Emacs 27.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.22.24)
of 2018-11-24 built on dellcorei5dias
Repository revision: 4ef9bcd0ff0eccb0c0810f43370eaa76aef2f4ec
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.11905000
System Description: Debian GNU/Linux buster/sid
Recent messages:
(5 8 9 10 14 23)
(5 8 9 14 23) [3 times]
(5 8 9 14) [2 times]
(8 9 14)
(5 8 9 14) [2 times]
Indenting region...done
t
nil
8 (#o10, #x8, ?\C-h)
(8 9 14)
(5 8 9 14)
Configured using:
'configure --with-x-toolkit=gtk3 --with-dbus --without-cairo
--with-modules --with-file-notification=yes --with-xwidgets
--without-selinux 'CFLAGS=-O2 -s''
Configured features:
XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GSETTINGS GLIB
NOTIFY INOTIFY GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB
TOOLKIT_SCROLL_BARS GTK3 X11 XDBE XIM MODULES THREADS XWIDGETS
LIBSYSTEMD JSON LCMS2 GMP
Important settings:
value of $LANG: en_GB.UTF-8
locale-coding-system: utf-8-unix
Major mode: Emacs-Lisp
Minor modes in effect:
treemacs-follow-mode: t
treemacs-filewatch-mode: t
treemacs-git-mode: deferred
treemacs-fringe-indicator-mode: t
which-key-mode: t
global-magit-file-mode: t
magit-auto-revert-mode: t
global-git-commit-mode: t
recentf-mode: t
diff-auto-refine-mode: t
paredit-mode: t
helm-mode: t
helm-autoresize-mode: t
async-bytecomp-package-mode: t
mode-icons-mode: t
global-hl-line-mode: t
shell-dirtrack-mode: t
show-paren-mode: t
midnight-mode: t
electric-pair-mode: t
tooltip-mode: t
global-eldoc-mode: t
eldoc-mode: t
electric-indent-mode: t
mouse-wheel-mode: t
tool-bar-mode: t
menu-bar-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
buffer-read-only: t
column-number-mode: t
line-number-mode: t
transient-mark-mode: t
Load-path shadows:
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-tangle hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-tangle
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-eshell hides /home/deusmax/.emacs.d/elpa/org-20181230/org-eshell
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org hides /home/deusmax/.emacs.d/elpa/org-20181230/org
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-clock hides /home/deusmax/.emacs.d/elpa/org-20181230/org-clock
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-install hides /home/deusmax/.emacs.d/elpa/org-20181230/org-install
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-keys hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-keys
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-octave hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-octave
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-indent hides /home/deusmax/.emacs.d/elpa/org-20181230/org-indent
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ox-org hides /home/deusmax/.emacs.d/elpa/org-20181230/ox-org
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-processing hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-processing
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-version hides /home/deusmax/.emacs.d/elpa/org-20181230/org-version
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-ref hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-ref
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-lua hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-lua
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-sed hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-sed
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-exp hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-exp
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ox-html hides /home/deusmax/.emacs.d/elpa/org-20181230/ox-html
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ox hides /home/deusmax/.emacs.d/elpa/org-20181230/ox
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-plantuml hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-plantuml
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-faces hides /home/deusmax/.emacs.d/elpa/org-20181230/org-faces
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-sass hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-sass
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-coq hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-coq
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-irc hides /home/deusmax/.emacs.d/elpa/org-20181230/org-irc
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-mouse hides /home/deusmax/.emacs.d/elpa/org-20181230/org-mouse
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-pcomplete hides /home/deusmax/.emacs.d/elpa/org-20181230/org-pcomplete
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-latex hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-latex
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-css hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-css
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-gnuplot hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-gnuplot
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ox-texinfo hides /home/deusmax/.emacs.d/elpa/org-20181230/ox-texinfo
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-rmail hides /home/deusmax/.emacs.d/elpa/org-20181230/org-rmail
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-crypt hides /home/deusmax/.emacs.d/elpa/org-20181230/org-crypt
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-ebnf hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-ebnf
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-feed hides /home/deusmax/.emacs.d/elpa/org-20181230/org-feed
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-C hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-C
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-mhe hides /home/deusmax/.emacs.d/elpa/org-20181230/org-mhe
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-perl hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-perl
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ox-latex hides /home/deusmax/.emacs.d/elpa/org-20181230/ox-latex
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-comint hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-comint
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-table hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-table
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-agenda hides /home/deusmax/.emacs.d/elpa/org-20181230/org-agenda
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ox-man hides /home/deusmax/.emacs.d/elpa/org-20181230/ox-man
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-footnote hides /home/deusmax/.emacs.d/elpa/org-20181230/org-footnote
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ox-md hides /home/deusmax/.emacs.d/elpa/org-20181230/ox-md
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-ledger hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-ledger
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-abc hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-abc
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-io hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-io
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-hledger hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-hledger
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-maxima hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-maxima
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-plot hides /home/deusmax/.emacs.d/elpa/org-20181230/org-plot
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-duration hides /home/deusmax/.emacs.d/elpa/org-20181230/org-duration
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-ocaml hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-ocaml
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-eww hides /home/deusmax/.emacs.d/elpa/org-20181230/org-eww
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-archive hides /home/deusmax/.emacs.d/elpa/org-20181230/org-archive
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-dot hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-dot
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-mscgen hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-mscgen
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-habit hides /home/deusmax/.emacs.d/elpa/org-20181230/org-habit
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ox-icalendar hides /home/deusmax/.emacs.d/elpa/org-20181230/ox-icalendar
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-java hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-java
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-mobile hides /home/deusmax/.emacs.d/elpa/org-20181230/org-mobile
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-attach hides /home/deusmax/.emacs.d/elpa/org-20181230/org-attach
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-macro hides /home/deusmax/.emacs.d/elpa/org-20181230/org-macro
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-asymptote hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-asymptote
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-calc hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-calc
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-js hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-js
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-sql hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-sql
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-clojure hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-clojure
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-shen hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-shen
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ox-odt hides /home/deusmax/.emacs.d/elpa/org-20181230/ox-odt
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-stan hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-stan
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ox-beamer hides /home/deusmax/.emacs.d/elpa/org-20181230/ox-beamer
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-shell hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-shell
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob hides /home/deusmax/.emacs.d/elpa/org-20181230/ob
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-forth hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-forth
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-entities hides /home/deusmax/.emacs.d/elpa/org-20181230/org-entities
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-timer hides /home/deusmax/.emacs.d/elpa/org-20181230/org-timer
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-scheme hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-scheme
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ox-publish hides /home/deusmax/.emacs.d/elpa/org-20181230/ox-publish
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-bbdb hides /home/deusmax/.emacs.d/elpa/org-20181230/org-bbdb
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-eval hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-eval
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-src hides /home/deusmax/.emacs.d/elpa/org-20181230/org-src
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-macs hides /home/deusmax/.emacs.d/elpa/org-20181230/org-macs
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ox-ascii hides /home/deusmax/.emacs.d/elpa/org-20181230/ox-ascii
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-core hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-core
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-inlinetask hides /home/deusmax/.emacs.d/elpa/org-20181230/org-inlinetask
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-docview hides /home/deusmax/.emacs.d/elpa/org-20181230/org-docview
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-gnus hides /home/deusmax/.emacs.d/elpa/org-20181230/org-gnus
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-capture hides /home/deusmax/.emacs.d/elpa/org-20181230/org-capture
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-haskell hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-haskell
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-datetree hides /home/deusmax/.emacs.d/elpa/org-20181230/org-datetree
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-groovy hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-groovy
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-emacs-lisp hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-emacs-lisp
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-protocol hides /home/deusmax/.emacs.d/elpa/org-20181230/org-protocol
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-awk hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-awk
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-info hides /home/deusmax/.emacs.d/elpa/org-20181230/org-info
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-lint hides /home/deusmax/.emacs.d/elpa/org-20181230/org-lint
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-lilypond hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-lilypond
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-id hides /home/deusmax/.emacs.d/elpa/org-20181230/org-id
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-picolisp hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-picolisp
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-screen hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-screen
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-fortran hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-fortran
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-matlab hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-matlab
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-colview hides /home/deusmax/.emacs.d/elpa/org-20181230/org-colview
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-bibtex hides /home/deusmax/.emacs.d/elpa/org-20181230/org-bibtex
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-python hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-python
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-compat hides /home/deusmax/.emacs.d/elpa/org-20181230/org-compat
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-lisp hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-lisp
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-list hides /home/deusmax/.emacs.d/elpa/org-20181230/org-list
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-sqlite hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-sqlite
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-J hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-J
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-w3m hides /home/deusmax/.emacs.d/elpa/org-20181230/org-w3m
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-makefile hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-makefile
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-ditaa hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-ditaa
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-R hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-R
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-org hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-org
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-goto hides /home/deusmax/.emacs.d/elpa/org-20181230/org-goto
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-table hides /home/deusmax/.emacs.d/elpa/org-20181230/org-table
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-ruby hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-ruby
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-ctags hides /home/deusmax/.emacs.d/elpa/org-20181230/org-ctags
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-element hides /home/deusmax/.emacs.d/elpa/org-20181230/org-element
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-vala hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-vala
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-tempo hides /home/deusmax/.emacs.d/elpa/org-20181230/org-tempo
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-loaddefs hides /home/deusmax/.emacs.d/elpa/org-20181230/org-loaddefs
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-lob hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-lob
/home/deusmax/.emacs.d/elpa/auth-source-pass-20181106.1348/auth-source-pass hides /usr/local/share/emacs/27.0.50/lisp/auth-source-pass
/home/deusmax/.emacs.d/elpa/ada-mode-6.0.1/ada-xref hides /usr/local/share/emacs/27.0.50/lisp/progmodes/ada-xref
/home/deusmax/.emacs.d/elpa/ada-mode-6.0.1/ada-stmt hides /usr/local/share/emacs/27.0.50/lisp/progmodes/ada-stmt
/home/deusmax/.emacs.d/elpa/ada-mode-6.0.1/ada-mode hides /usr/local/share/emacs/27.0.50/lisp/progmodes/ada-mode
/home/deusmax/.emacs.d/elpa/ada-mode-6.0.1/ada-prj hides /usr/local/share/emacs/27.0.50/lisp/progmodes/ada-prj
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-tangle hides /usr/local/share/emacs/27.0.50/lisp/org/ob-tangle
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-eshell hides /usr/local/share/emacs/27.0.50/lisp/org/org-eshell
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ox-publish hides /usr/local/share/emacs/27.0.50/lisp/org/ox-publish
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org hides /usr/local/share/emacs/27.0.50/lisp/org/org
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-clock hides /usr/local/share/emacs/27.0.50/lisp/org/org-clock
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-install hides /usr/local/share/emacs/27.0.50/lisp/org/org-install
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-keys hides /usr/local/share/emacs/27.0.50/lisp/org/ob-keys
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-octave hides /usr/local/share/emacs/27.0.50/lisp/org/ob-octave
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-compat hides /usr/local/share/emacs/27.0.50/lisp/org/org-compat
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-indent hides /usr/local/share/emacs/27.0.50/lisp/org/org-indent
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-shen hides /usr/local/share/emacs/27.0.50/lisp/org/ob-shen
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-mouse hides /usr/local/share/emacs/27.0.50/lisp/org/org-mouse
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-forth hides /usr/local/share/emacs/27.0.50/lisp/org/ob-forth
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-asymptote hides /usr/local/share/emacs/27.0.50/lisp/org/ob-asymptote
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-processing hides /usr/local/share/emacs/27.0.50/lisp/org/ob-processing
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-element hides /usr/local/share/emacs/27.0.50/lisp/org/org-element
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ox-icalendar hides /usr/local/share/emacs/27.0.50/lisp/org/ox-icalendar
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-version hides /usr/local/share/emacs/27.0.50/lisp/org/org-version
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-lua hides /usr/local/share/emacs/27.0.50/lisp/org/ob-lua
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-ctags hides /usr/local/share/emacs/27.0.50/lisp/org/org-ctags
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-w3m hides /usr/local/share/emacs/27.0.50/lisp/org/org-w3m
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-sqlite hides /usr/local/share/emacs/27.0.50/lisp/org/ob-sqlite
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ox-html hides /usr/local/share/emacs/27.0.50/lisp/org/ox-html
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-feed hides /usr/local/share/emacs/27.0.50/lisp/org/org-feed
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-plantuml hides /usr/local/share/emacs/27.0.50/lisp/org/ob-plantuml
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-faces hides /usr/local/share/emacs/27.0.50/lisp/org/org-faces
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-irc hides /usr/local/share/emacs/27.0.50/lisp/org/org-irc
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-pcomplete hides /usr/local/share/emacs/27.0.50/lisp/org/org-pcomplete
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ox-org hides /usr/local/share/emacs/27.0.50/lisp/org/ox-org
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-css hides /usr/local/share/emacs/27.0.50/lisp/org/ob-css
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-timer hides /usr/local/share/emacs/27.0.50/lisp/org/org-timer
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-capture hides /usr/local/share/emacs/27.0.50/lisp/org/org-capture
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-clojure hides /usr/local/share/emacs/27.0.50/lisp/org/ob-clojure
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ox-texinfo hides /usr/local/share/emacs/27.0.50/lisp/org/ox-texinfo
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-rmail hides /usr/local/share/emacs/27.0.50/lisp/org/org-rmail
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-crypt hides /usr/local/share/emacs/27.0.50/lisp/org/org-crypt
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-ebnf hides /usr/local/share/emacs/27.0.50/lisp/org/ob-ebnf
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-mhe hides /usr/local/share/emacs/27.0.50/lisp/org/org-mhe
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-maxima hides /usr/local/share/emacs/27.0.50/lisp/org/ob-maxima
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-exp hides /usr/local/share/emacs/27.0.50/lisp/org/ob-exp
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-perl hides /usr/local/share/emacs/27.0.50/lisp/org/ob-perl
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ox-latex hides /usr/local/share/emacs/27.0.50/lisp/org/ox-latex
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-docview hides /usr/local/share/emacs/27.0.50/lisp/org/org-docview
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-eww hides /usr/local/share/emacs/27.0.50/lisp/org/org-eww
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-duration hides /usr/local/share/emacs/27.0.50/lisp/org/org-duration
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-comint hides /usr/local/share/emacs/27.0.50/lisp/org/ob-comint
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ox hides /usr/local/share/emacs/27.0.50/lisp/org/ox
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-table hides /usr/local/share/emacs/27.0.50/lisp/org/ob-table
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ox-man hides /usr/local/share/emacs/27.0.50/lisp/org/ox-man
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ox-md hides /usr/local/share/emacs/27.0.50/lisp/org/ox-md
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-archive hides /usr/local/share/emacs/27.0.50/lisp/org/org-archive
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-abc hides /usr/local/share/emacs/27.0.50/lisp/org/ob-abc
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ox-odt hides /usr/local/share/emacs/27.0.50/lisp/org/ox-odt
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-groovy hides /usr/local/share/emacs/27.0.50/lisp/org/ob-groovy
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-src hides /usr/local/share/emacs/27.0.50/lisp/org/org-src
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-sql hides /usr/local/share/emacs/27.0.50/lisp/org/ob-sql
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-io hides /usr/local/share/emacs/27.0.50/lisp/org/ob-io
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-coq hides /usr/local/share/emacs/27.0.50/lisp/org/ob-coq
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-ledger hides /usr/local/share/emacs/27.0.50/lisp/org/ob-ledger
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-plot hides /usr/local/share/emacs/27.0.50/lisp/org/org-plot
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-macro hides /usr/local/share/emacs/27.0.50/lisp/org/org-macro
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ox-ascii hides /usr/local/share/emacs/27.0.50/lisp/org/ox-ascii
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-mscgen hides /usr/local/share/emacs/27.0.50/lisp/org/ob-mscgen
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-ref hides /usr/local/share/emacs/27.0.50/lisp/org/ob-ref
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-awk hides /usr/local/share/emacs/27.0.50/lisp/org/ob-awk
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-ruby hides /usr/local/share/emacs/27.0.50/lisp/org/ob-ruby
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-inlinetask hides /usr/local/share/emacs/27.0.50/lisp/org/org-inlinetask
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-java hides /usr/local/share/emacs/27.0.50/lisp/org/ob-java
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-attach hides /usr/local/share/emacs/27.0.50/lisp/org/org-attach
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-entities hides /usr/local/share/emacs/27.0.50/lisp/org/org-entities
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-js hides /usr/local/share/emacs/27.0.50/lisp/org/ob-js
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-core hides /usr/local/share/emacs/27.0.50/lisp/org/ob-core
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-latex hides /usr/local/share/emacs/27.0.50/lisp/org/ob-latex
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-matlab hides /usr/local/share/emacs/27.0.50/lisp/org/ob-matlab
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob hides /usr/local/share/emacs/27.0.50/lisp/org/ob
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-vala hides /usr/local/share/emacs/27.0.50/lisp/org/ob-vala
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-picolisp hides /usr/local/share/emacs/27.0.50/lisp/org/ob-picolisp
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-lint hides /usr/local/share/emacs/27.0.50/lisp/org/org-lint
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-hledger hides /usr/local/share/emacs/27.0.50/lisp/org/ob-hledger
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-sass hides /usr/local/share/emacs/27.0.50/lisp/org/ob-sass
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-scheme hides /usr/local/share/emacs/27.0.50/lisp/org/ob-scheme
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-lilypond hides /usr/local/share/emacs/27.0.50/lisp/org/ob-lilypond
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-bbdb hides /usr/local/share/emacs/27.0.50/lisp/org/org-bbdb
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-eval hides /usr/local/share/emacs/27.0.50/lisp/org/ob-eval
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-habit hides /usr/local/share/emacs/27.0.50/lisp/org/org-habit
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-shell hides /usr/local/share/emacs/27.0.50/lisp/org/ob-shell
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-macs hides /usr/local/share/emacs/27.0.50/lisp/org/org-macs
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-mobile hides /usr/local/share/emacs/27.0.50/lisp/org/org-mobile
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-C hides /usr/local/share/emacs/27.0.50/lisp/org/ob-C
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-gnus hides /usr/local/share/emacs/27.0.50/lisp/org/org-gnus
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-agenda hides /usr/local/share/emacs/27.0.50/lisp/org/org-agenda
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-info hides /usr/local/share/emacs/27.0.50/lisp/org/org-info
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-stan hides /usr/local/share/emacs/27.0.50/lisp/org/ob-stan
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-J hides /usr/local/share/emacs/27.0.50/lisp/org/ob-J
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-emacs-lisp hides /usr/local/share/emacs/27.0.50/lisp/org/ob-emacs-lisp
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-protocol hides /usr/local/share/emacs/27.0.50/lisp/org/org-protocol
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-org hides /usr/local/share/emacs/27.0.50/lisp/org/ob-org
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-id hides /usr/local/share/emacs/27.0.50/lisp/org/org-id
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-colview hides /usr/local/share/emacs/27.0.50/lisp/org/org-colview
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-screen hides /usr/local/share/emacs/27.0.50/lisp/org/ob-screen
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-bibtex hides /usr/local/share/emacs/27.0.50/lisp/org/org-bibtex
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-haskell hides /usr/local/share/emacs/27.0.50/lisp/org/ob-haskell
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ox-beamer hides /usr/local/share/emacs/27.0.50/lisp/org/ox-beamer
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-ocaml hides /usr/local/share/emacs/27.0.50/lisp/org/ob-ocaml
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-datetree hides /usr/local/share/emacs/27.0.50/lisp/org/org-datetree
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-makefile hides /usr/local/share/emacs/27.0.50/lisp/org/ob-makefile
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-list hides /usr/local/share/emacs/27.0.50/lisp/org/org-list
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-table hides /usr/local/share/emacs/27.0.50/lisp/org/org-table
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-lisp hides /usr/local/share/emacs/27.0.50/lisp/org/ob-lisp
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-fortran hides /usr/local/share/emacs/27.0.50/lisp/org/ob-fortran
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-ditaa hides /usr/local/share/emacs/27.0.50/lisp/org/ob-ditaa
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-sed hides /usr/local/share/emacs/27.0.50/lisp/org/ob-sed
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-python hides /usr/local/share/emacs/27.0.50/lisp/org/ob-python
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-calc hides /usr/local/share/emacs/27.0.50/lisp/org/ob-calc
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-R hides /usr/local/share/emacs/27.0.50/lisp/org/ob-R
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-lob hides /usr/local/share/emacs/27.0.50/lisp/org/ob-lob
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-loaddefs hides /usr/local/share/emacs/27.0.50/lisp/org/org-loaddefs
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-dot hides /usr/local/share/emacs/27.0.50/lisp/org/ob-dot
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-footnote hides /usr/local/share/emacs/27.0.50/lisp/org/org-footnote
/home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-gnuplot hides /usr/local/share/emacs/27.0.50/lisp/org/ob-gnuplot
Features:
(shadow flyspell emacsbug gnus-registry registry helm-misc helm-ls-git
powerline-separators powerline-themes gnus-recent-helm gnus-uu yenc
novice ac-js2 skewer-mode cache-table js2-mode js sgml-mode simple-httpd
ert ewoc spinner ghub-graphql treepy graphql ghub guix-ui-generation
guix-ui-profile guix-ui-package guix-license guix-ui-store-item
guix-package pcmpl-unix guix-location guix-auto-mode guix-build-log
guix-misc guix-ui guix-ui-messages guix-read guix-repl guix-profiles
guix-external guix-geiser guix-guile geiser-mode geiser-xref
geiser-compile geiser-debug geiser-chibi geiser-mit geiser-chez
geiser-chicken geiser-racket geiser-guile geiser-repl geiser-image
geiser-company geiser-doc geiser-menu geiser-edit geiser-completion
geiser-autodoc geiser-eval geiser-connection tq geiser-syntax scheme
geiser-log geiser-popup view guix-help-vars guix-config
guix-default-config guix-help guix-utils guix bui bui-list bui-info
bui-entry bui-core bui-history bui-button bui-utils request trace
info-look shut-up dash-functional elisp-refs loop ledger-check
ledger-texi ledger-test ledger-sort ledger-reconcile ledger-occur
ledger-fonts ledger-complete ledger-fontify ledger-state ledger-schedule
ledger-init ledger-report ledger-commodities ledger-xact ledger-post
ledger-exec ledger-navigate ledger-context ledger-regex edit-indirect
dabbrev savehist org-learn hi-lock org-capture org-bibtex org-attach
ob-clojure password-store skeleton ibuf-macs ibuf-ext ibuffer
ibuffer-loaddefs treemacs-compatibility treemacs-mode treemacs-interface
treemacs-extensions treemacs-persistence treemacs-mouse-interface
treemacs-tag-follow-mode treemacs-follow-mode treemacs-filewatch-mode
treemacs-tags treemacs-faces treemacs-rendering treemacs-async
treemacs-icons treemacs-workspaces treemacs-structure treemacs-visuals
treemacs-fringe-indicator pulse treemacs-impl treemacs-macros inline
treemacs-customization ace-window avy f pfuture s tempo org-table bibtex
geiser-impl geiser-custom geiser-base geiser ob-octave ebnf2ps
calc-store calc-trail calc-ext autoload url-http-ntlm ntlm calc
calc-loaddefs calc-macs hmac-md5 hex-util md4 url-http url-gw url-cache
wdired cc-awk magit-ediff ediff-merg ediff-wind ediff-diff ediff-mult
ediff-help ediff-init ediff-util ediff vc vc-dispatcher auto-complete
popup php-mode php-project mode-local flymake-proc flymake warnings
cc-langs sh-script smie executable org-eldoc org-toc org-bookmark
org-mouse org-info org-id org-gnus nnir org-eww org-eshell org-docview
doc-view org-crypt org-bbdb gitconfig-mode lisp-mnt checkdoc gnus-kill
iso-transl which-key cus-edit shr-color gitignore-mode conf-mode
bug-reference image-mode dired-x magit-extras magit-bookmark
magit-submodule magit-obsolete magit-blame magit-stash magit-bisect
magit-push magit-pull magit-fetch magit-clone magit-remote magit-commit
magit-sequence magit-notes magit-worktree magit-tag magit-merge
magit-branch magit-reset magit-files magit-refs magit-status magit
magit-repos magit-apply magit-wip magit-log which-func imenu magit-diff
magit-core magit-autorevert autorevert filenotify magit-process
magit-margin magit-mode git-commit magit-git magit-section magit-utils
magit-popup log-edit pcvs-util add-log with-editor server smerge-mode
diff ispell helm-ring switch-window switch-window-mvborder
switch-window-asciiart quail cc-mode cc-fonts cc-guess cc-menus cc-cmds
cc-styles cc-align cc-engine cc-vars cc-defs debug cl-print gnus-dup shr
text-property-search svg dom mm-archive sort smiley gnus-cite mail-extr
gnus-bcklg gnus-async qp gnus-ml cursor-sensor nndraft nnmh nnfolder
utf-7 gnutls network-stream nsm gnus-agent gnus-srvr gnus-score
score-mode nnvirtual nntp gnus-cache misearch multi-isearch help-fns
radix-tree dired-aux helm-eshell company-oddmuse company-keywords
company-etags etags multifile xref project company-gtags
company-dabbrev-code company-dabbrev company-files company-capf
company-cmake company-xcode company-clang company-semantic company-eclim
company-template company-bbdb eshell-fringe-status jka-compr em-unix
em-term term disp-table ehelp em-script em-prompt em-ls em-hist em-pred
em-glob em-cmpl em-basic em-banner em-alias tramp-cache tramp-sh recentf
tree-widget ido helm-x-files helm-for-files helm-bookmark helm-adaptive
bookmark pp dired-hide-dotfiles gnus-recent helm-command helm-elisp
helm-eval edebug backtrace helm-info vc-git diff-mode winner image-file
helm-external helm-net browse-url xml url url-proxy url-privacy
url-expand url-methods url-history url-cookie url-domsuf ffap paredit
pdf-loader two-column hydra lv bm printing ps-print ps-print-loaddefs
ps-def lpr flycheck-ledger flycheck occur-x multiple-cursors
mc-hide-unmatched-lines-mode mc-separate-operations
rectangular-region-mode mc-mark-pop mc-mark-more thingatpt
mc-cycle-cursors mc-edit-lines multiple-cursors-core rect
esh-autosuggest company eshell-z em-dirs eshell-did-you-mean esh-var
esh-cmd esh-opt esh-io esh-ext esh-proc esh-arg esh-groups eshell
esh-module esh-mode esh-util eshell-up helm-swoop helm-mode helm-files
helm-buffers helm-tags helm-locate helm-grep wgrep-helm wgrep grep
compile helm-regexp helm-utils helm-help helm-types helm helm-source
eieio-compat helm-multi-match helm-lib helm-config helm-easymenu
async-bytecomp async ace-jump-mode mode-icons emojify apropos tar-mode
ht dash hl-line color edmacro kmacro cal-china lunar solar cal-dst
cal-islam cal-julian holidays hol-loaddefs appt diary-lib diary-loaddefs
org-mime ox-org 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-habit org-edna
org-clock htmlize cl ebdb-complete ebdb-message sendmail ebdb-gnus
gnus-msg gnus-art mm-uu mml2015 mm-view mml-smime smime dig mailcap
gnus-sum gnus-group gnus-undo gnus-start gnus-cloud nnimap nnmail
mail-source utf7 netrc nnoo gnus-spec gnus-int gnus-range message rmc
puny dired dired-loaddefs rfc822 mml mml-sec epa mm-decode mm-bodies
mm-encode mail-parse rfc2231 gmm-utils mailheader gnus-win ebdb-mua
ebdb-org org-element avl-tree generator org-location-google-maps
org-agenda google-maps google-maps-static url-util google-maps-geocode
google-maps-base org org-macro org-footnote org-pcomplete org-list
org-faces org-entities noutline outline easy-mmode org-version ob-latex
ob-plantuml ob-org ob-shell ob-ditaa ob-dot ob-emacs-lisp ob ob-tangle
org-src ob-ref ob-lob ob-table ob-keys ob-exp ob-comint ob-core ob-eval
org-compat org-macs org-loaddefs ebdb-com crm mailabbrev ebdb-format
ebdb eieio-opt speedbar sb-image ezimage dframe find-func eieio-base
cal-menu calendar cal-loaddefs timezone lxc-tramp tramp trampver
tramp-compat tramp-loaddefs ucs-normalize shell pcomplete comint
ansi-color ring parse-time format-spec advice paren midnight gnus
nnheader gnus-util rmail rmail-loaddefs rfc2047 rfc2045 ietf-drums
time-date mail-utils mm-util mail-prsvr wid-edit elec-pair cus-start
cus-load mule-util tex-site rx url-auth info finder-inf package
let-alist derived pcase cl-extra help-mode easymenu url-handlers
url-parse auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs
password-cache json map url-vars seq byte-opt gv bytecomp byte-compile
cconv epg epg-config subr-x cl-loaddefs cl-lib 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 replace newcomment text-mode elisp-mode lisp-mode
prog-mode register page menu-bar rfn-eshadow isearch 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 composite charscript charprop 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 threads dbusbind inotify lcms2 dynamic-setting
system-font-setting font-render-setting xwidget-internal move-toolbar
gtk x-toolkit x multi-tty make-network-process emacs)
Memory information:
((conses 16 2296603 369440)
(symbols 48 101962 3)
(strings 32 395979 68773)
(string-bytes 1 12997792)
(vectors 16 172805)
(vector-slots 8 3160555 181220)
(floats 8 2162 1676)
(intervals 56 154396 6404)
(buffers 992 375))
^ permalink raw reply [flat|nested] 18+ messages in thread
* bug#33998: 27.0.50; cl-delete does not delete the first list element
2019-01-06 13:30 bug#33998: 27.0.50; cl-delete does not delete the first list element Deus Max
@ 2019-01-07 17:13 ` João Távora
2019-01-07 17:28 ` Drew Adams
2019-01-07 20:20 ` Deus Max
0 siblings, 2 replies; 18+ messages in thread
From: João Távora @ 2019-01-07 17:13 UTC (permalink / raw)
To: Deus Max; +Cc: 33998
There is no bug.
You should always read "destructive" as "potentially
destructive".
'cl-delete', being a function, cannot know that the value
you passed it is pointed to by the symbol 'tst'. Or, in lisp
speak, that that value is the variable binding of 'tst'.
Because it doesn't know this, it cannot affect the variable
binding of 'tst', to be '(cdr tst)', which would be the only
way to do what you want (remove the first element).
If 'cl-delete' were a macro, like 'pop' is, it could do that
(but that would have other disadvantages).
So, cumbersome as it is, you should always use:
(setq seq (cl-delete thing seq ))
The docstring of 'delq' has this explanation more or less:
delq is a built-in function in `C source code'.
(delq ELT LIST)
Delete members of LIST which are `eq' to ELT, and return the result.
More precisely, this function skips any members `eq' to ELT at the
front of LIST, then removes members `eq' to ELT from the remaining
sublist by modifying its list structure, then returns the resulting
list.
Write `(setq foo (delq element foo))' to be sure of correctly changing
the value of a list `foo'. See also `remq', which does not modify the
argument.
João
On Sun, Jan 6, 2019 at 5:48 PM Deus Max <deusmax@gmx.com> wrote:
>
>
> Function cl-delete refuses to delete the first element of a list.
> I tried with all sorts of list elements, same results each time.
> Here is a simple example:
>
> (setq tst '(5 8 9 5 10 14 5 23))
>
> (cl-delete 10 tst) -> returns (5 8 9 5 14 5 23)
> and
> tst -> (5 8 9 5 14 5 23)
>
> (cl-delete 5 tst) -> returns (8 9 14 23)
> but
> tst -> (5 8 9 14 23)
>
> The CL-manual says nothing about the first element being special. *ALL*
> should mean all, right ? Am I missing something here ?
>
> CL-manual says:
> — Function: cl-delete item seq &key :test :test-not :key :count :start :end :from-end
>
> This deletes all elements of seq that match item. It is a
> destructive operation. Since Emacs Lisp does not support
> stretchable strings or vectors, this is the same as cl-remove for
> those sequence types. On lists, cl-remove will copy the list if
> necessary to preserve the original list, whereas cl-delete will
> splice out parts of the argument list. Compare append and nconc,
> which are analogous non-destructive and destructive list
> operations in Emacs Lisp.
>
>
> In GNU Emacs 27.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.22.24)
> of 2018-11-24 built on dellcorei5dias
> Repository revision: 4ef9bcd0ff0eccb0c0810f43370eaa76aef2f4ec
> Repository branch: master
> Windowing system distributor 'The X.Org Foundation', version 11.0.11905000
> System Description: Debian GNU/Linux buster/sid
>
> Recent messages:
> (5 8 9 10 14 23)
> (5 8 9 14 23) [3 times]
> (5 8 9 14) [2 times]
> (8 9 14)
> (5 8 9 14) [2 times]
> Indenting region...done
> t
> nil
> 8 (#o10, #x8, ?\C-h)
> (8 9 14)
> (5 8 9 14)
> Configured using:
> 'configure --with-x-toolkit=gtk3 --with-dbus --without-cairo
> --with-modules --with-file-notification=yes --with-xwidgets
> --without-selinux 'CFLAGS=-O2 -s''
>
> Configured features:
> XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GSETTINGS GLIB
> NOTIFY INOTIFY GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB
> TOOLKIT_SCROLL_BARS GTK3 X11 XDBE XIM MODULES THREADS XWIDGETS
> LIBSYSTEMD JSON LCMS2 GMP
>
> Important settings:
> value of $LANG: en_GB.UTF-8
> locale-coding-system: utf-8-unix
>
> Major mode: Emacs-Lisp
>
> Minor modes in effect:
> treemacs-follow-mode: t
> treemacs-filewatch-mode: t
> treemacs-git-mode: deferred
> treemacs-fringe-indicator-mode: t
> which-key-mode: t
> global-magit-file-mode: t
> magit-auto-revert-mode: t
> global-git-commit-mode: t
> recentf-mode: t
> diff-auto-refine-mode: t
> paredit-mode: t
> helm-mode: t
> helm-autoresize-mode: t
> async-bytecomp-package-mode: t
> mode-icons-mode: t
> global-hl-line-mode: t
> shell-dirtrack-mode: t
> show-paren-mode: t
> midnight-mode: t
> electric-pair-mode: t
> tooltip-mode: t
> global-eldoc-mode: t
> eldoc-mode: t
> electric-indent-mode: t
> mouse-wheel-mode: t
> tool-bar-mode: t
> menu-bar-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
> buffer-read-only: t
> column-number-mode: t
> line-number-mode: t
> transient-mark-mode: t
>
> Load-path shadows:
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-tangle hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-tangle
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-eshell hides /home/deusmax/.emacs.d/elpa/org-20181230/org-eshell
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org hides /home/deusmax/.emacs.d/elpa/org-20181230/org
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-clock hides /home/deusmax/.emacs.d/elpa/org-20181230/org-clock
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-install hides /home/deusmax/.emacs.d/elpa/org-20181230/org-install
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-keys hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-keys
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-octave hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-octave
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-indent hides /home/deusmax/.emacs.d/elpa/org-20181230/org-indent
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ox-org hides /home/deusmax/.emacs.d/elpa/org-20181230/ox-org
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-processing hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-processing
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-version hides /home/deusmax/.emacs.d/elpa/org-20181230/org-version
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-ref hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-ref
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-lua hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-lua
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-sed hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-sed
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-exp hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-exp
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ox-html hides /home/deusmax/.emacs.d/elpa/org-20181230/ox-html
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ox hides /home/deusmax/.emacs.d/elpa/org-20181230/ox
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-plantuml hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-plantuml
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-faces hides /home/deusmax/.emacs.d/elpa/org-20181230/org-faces
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-sass hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-sass
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-coq hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-coq
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-irc hides /home/deusmax/.emacs.d/elpa/org-20181230/org-irc
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-mouse hides /home/deusmax/.emacs.d/elpa/org-20181230/org-mouse
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-pcomplete hides /home/deusmax/.emacs.d/elpa/org-20181230/org-pcomplete
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-latex hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-latex
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-css hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-css
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-gnuplot hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-gnuplot
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ox-texinfo hides /home/deusmax/.emacs.d/elpa/org-20181230/ox-texinfo
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-rmail hides /home/deusmax/.emacs.d/elpa/org-20181230/org-rmail
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-crypt hides /home/deusmax/.emacs.d/elpa/org-20181230/org-crypt
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-ebnf hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-ebnf
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-feed hides /home/deusmax/.emacs.d/elpa/org-20181230/org-feed
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-C hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-C
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-mhe hides /home/deusmax/.emacs.d/elpa/org-20181230/org-mhe
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-perl hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-perl
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ox-latex hides /home/deusmax/.emacs.d/elpa/org-20181230/ox-latex
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-comint hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-comint
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-table hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-table
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-agenda hides /home/deusmax/.emacs.d/elpa/org-20181230/org-agenda
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ox-man hides /home/deusmax/.emacs.d/elpa/org-20181230/ox-man
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-footnote hides /home/deusmax/.emacs.d/elpa/org-20181230/org-footnote
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ox-md hides /home/deusmax/.emacs.d/elpa/org-20181230/ox-md
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-ledger hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-ledger
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-abc hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-abc
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-io hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-io
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-hledger hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-hledger
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-maxima hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-maxima
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-plot hides /home/deusmax/.emacs.d/elpa/org-20181230/org-plot
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-duration hides /home/deusmax/.emacs.d/elpa/org-20181230/org-duration
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-ocaml hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-ocaml
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-eww hides /home/deusmax/.emacs.d/elpa/org-20181230/org-eww
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-archive hides /home/deusmax/.emacs.d/elpa/org-20181230/org-archive
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-dot hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-dot
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-mscgen hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-mscgen
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-habit hides /home/deusmax/.emacs.d/elpa/org-20181230/org-habit
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ox-icalendar hides /home/deusmax/.emacs.d/elpa/org-20181230/ox-icalendar
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-java hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-java
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-mobile hides /home/deusmax/.emacs.d/elpa/org-20181230/org-mobile
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-attach hides /home/deusmax/.emacs.d/elpa/org-20181230/org-attach
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-macro hides /home/deusmax/.emacs.d/elpa/org-20181230/org-macro
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-asymptote hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-asymptote
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-calc hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-calc
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-js hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-js
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-sql hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-sql
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-clojure hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-clojure
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-shen hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-shen
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ox-odt hides /home/deusmax/.emacs.d/elpa/org-20181230/ox-odt
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-stan hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-stan
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ox-beamer hides /home/deusmax/.emacs.d/elpa/org-20181230/ox-beamer
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-shell hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-shell
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob hides /home/deusmax/.emacs.d/elpa/org-20181230/ob
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-forth hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-forth
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-entities hides /home/deusmax/.emacs.d/elpa/org-20181230/org-entities
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-timer hides /home/deusmax/.emacs.d/elpa/org-20181230/org-timer
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-scheme hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-scheme
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ox-publish hides /home/deusmax/.emacs.d/elpa/org-20181230/ox-publish
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-bbdb hides /home/deusmax/.emacs.d/elpa/org-20181230/org-bbdb
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-eval hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-eval
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-src hides /home/deusmax/.emacs.d/elpa/org-20181230/org-src
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-macs hides /home/deusmax/.emacs.d/elpa/org-20181230/org-macs
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ox-ascii hides /home/deusmax/.emacs.d/elpa/org-20181230/ox-ascii
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-core hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-core
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-inlinetask hides /home/deusmax/.emacs.d/elpa/org-20181230/org-inlinetask
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-docview hides /home/deusmax/.emacs.d/elpa/org-20181230/org-docview
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-gnus hides /home/deusmax/.emacs.d/elpa/org-20181230/org-gnus
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-capture hides /home/deusmax/.emacs.d/elpa/org-20181230/org-capture
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-haskell hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-haskell
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-datetree hides /home/deusmax/.emacs.d/elpa/org-20181230/org-datetree
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-groovy hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-groovy
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-emacs-lisp hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-emacs-lisp
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-protocol hides /home/deusmax/.emacs.d/elpa/org-20181230/org-protocol
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-awk hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-awk
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-info hides /home/deusmax/.emacs.d/elpa/org-20181230/org-info
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-lint hides /home/deusmax/.emacs.d/elpa/org-20181230/org-lint
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-lilypond hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-lilypond
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-id hides /home/deusmax/.emacs.d/elpa/org-20181230/org-id
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-picolisp hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-picolisp
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-screen hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-screen
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-fortran hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-fortran
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-matlab hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-matlab
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-colview hides /home/deusmax/.emacs.d/elpa/org-20181230/org-colview
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-bibtex hides /home/deusmax/.emacs.d/elpa/org-20181230/org-bibtex
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-python hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-python
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-compat hides /home/deusmax/.emacs.d/elpa/org-20181230/org-compat
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-lisp hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-lisp
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-list hides /home/deusmax/.emacs.d/elpa/org-20181230/org-list
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-sqlite hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-sqlite
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-J hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-J
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-w3m hides /home/deusmax/.emacs.d/elpa/org-20181230/org-w3m
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-makefile hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-makefile
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-ditaa hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-ditaa
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-R hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-R
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-org hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-org
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-goto hides /home/deusmax/.emacs.d/elpa/org-20181230/org-goto
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-table hides /home/deusmax/.emacs.d/elpa/org-20181230/org-table
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-ruby hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-ruby
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-ctags hides /home/deusmax/.emacs.d/elpa/org-20181230/org-ctags
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-element hides /home/deusmax/.emacs.d/elpa/org-20181230/org-element
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-vala hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-vala
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-tempo hides /home/deusmax/.emacs.d/elpa/org-20181230/org-tempo
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-loaddefs hides /home/deusmax/.emacs.d/elpa/org-20181230/org-loaddefs
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-lob hides /home/deusmax/.emacs.d/elpa/org-20181230/ob-lob
> /home/deusmax/.emacs.d/elpa/auth-source-pass-20181106.1348/auth-source-pass hides /usr/local/share/emacs/27.0.50/lisp/auth-source-pass
> /home/deusmax/.emacs.d/elpa/ada-mode-6.0.1/ada-xref hides /usr/local/share/emacs/27.0.50/lisp/progmodes/ada-xref
> /home/deusmax/.emacs.d/elpa/ada-mode-6.0.1/ada-stmt hides /usr/local/share/emacs/27.0.50/lisp/progmodes/ada-stmt
> /home/deusmax/.emacs.d/elpa/ada-mode-6.0.1/ada-mode hides /usr/local/share/emacs/27.0.50/lisp/progmodes/ada-mode
> /home/deusmax/.emacs.d/elpa/ada-mode-6.0.1/ada-prj hides /usr/local/share/emacs/27.0.50/lisp/progmodes/ada-prj
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-tangle hides /usr/local/share/emacs/27.0.50/lisp/org/ob-tangle
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-eshell hides /usr/local/share/emacs/27.0.50/lisp/org/org-eshell
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ox-publish hides /usr/local/share/emacs/27.0.50/lisp/org/ox-publish
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org hides /usr/local/share/emacs/27.0.50/lisp/org/org
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-clock hides /usr/local/share/emacs/27.0.50/lisp/org/org-clock
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-install hides /usr/local/share/emacs/27.0.50/lisp/org/org-install
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-keys hides /usr/local/share/emacs/27.0.50/lisp/org/ob-keys
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-octave hides /usr/local/share/emacs/27.0.50/lisp/org/ob-octave
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-compat hides /usr/local/share/emacs/27.0.50/lisp/org/org-compat
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-indent hides /usr/local/share/emacs/27.0.50/lisp/org/org-indent
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-shen hides /usr/local/share/emacs/27.0.50/lisp/org/ob-shen
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-mouse hides /usr/local/share/emacs/27.0.50/lisp/org/org-mouse
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-forth hides /usr/local/share/emacs/27.0.50/lisp/org/ob-forth
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-asymptote hides /usr/local/share/emacs/27.0.50/lisp/org/ob-asymptote
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-processing hides /usr/local/share/emacs/27.0.50/lisp/org/ob-processing
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-element hides /usr/local/share/emacs/27.0.50/lisp/org/org-element
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ox-icalendar hides /usr/local/share/emacs/27.0.50/lisp/org/ox-icalendar
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-version hides /usr/local/share/emacs/27.0.50/lisp/org/org-version
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-lua hides /usr/local/share/emacs/27.0.50/lisp/org/ob-lua
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-ctags hides /usr/local/share/emacs/27.0.50/lisp/org/org-ctags
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-w3m hides /usr/local/share/emacs/27.0.50/lisp/org/org-w3m
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-sqlite hides /usr/local/share/emacs/27.0.50/lisp/org/ob-sqlite
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ox-html hides /usr/local/share/emacs/27.0.50/lisp/org/ox-html
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-feed hides /usr/local/share/emacs/27.0.50/lisp/org/org-feed
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-plantuml hides /usr/local/share/emacs/27.0.50/lisp/org/ob-plantuml
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-faces hides /usr/local/share/emacs/27.0.50/lisp/org/org-faces
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-irc hides /usr/local/share/emacs/27.0.50/lisp/org/org-irc
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-pcomplete hides /usr/local/share/emacs/27.0.50/lisp/org/org-pcomplete
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ox-org hides /usr/local/share/emacs/27.0.50/lisp/org/ox-org
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-css hides /usr/local/share/emacs/27.0.50/lisp/org/ob-css
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-timer hides /usr/local/share/emacs/27.0.50/lisp/org/org-timer
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-capture hides /usr/local/share/emacs/27.0.50/lisp/org/org-capture
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-clojure hides /usr/local/share/emacs/27.0.50/lisp/org/ob-clojure
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ox-texinfo hides /usr/local/share/emacs/27.0.50/lisp/org/ox-texinfo
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-rmail hides /usr/local/share/emacs/27.0.50/lisp/org/org-rmail
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-crypt hides /usr/local/share/emacs/27.0.50/lisp/org/org-crypt
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-ebnf hides /usr/local/share/emacs/27.0.50/lisp/org/ob-ebnf
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-mhe hides /usr/local/share/emacs/27.0.50/lisp/org/org-mhe
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-maxima hides /usr/local/share/emacs/27.0.50/lisp/org/ob-maxima
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-exp hides /usr/local/share/emacs/27.0.50/lisp/org/ob-exp
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-perl hides /usr/local/share/emacs/27.0.50/lisp/org/ob-perl
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ox-latex hides /usr/local/share/emacs/27.0.50/lisp/org/ox-latex
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-docview hides /usr/local/share/emacs/27.0.50/lisp/org/org-docview
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-eww hides /usr/local/share/emacs/27.0.50/lisp/org/org-eww
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-duration hides /usr/local/share/emacs/27.0.50/lisp/org/org-duration
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-comint hides /usr/local/share/emacs/27.0.50/lisp/org/ob-comint
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ox hides /usr/local/share/emacs/27.0.50/lisp/org/ox
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-table hides /usr/local/share/emacs/27.0.50/lisp/org/ob-table
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ox-man hides /usr/local/share/emacs/27.0.50/lisp/org/ox-man
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ox-md hides /usr/local/share/emacs/27.0.50/lisp/org/ox-md
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-archive hides /usr/local/share/emacs/27.0.50/lisp/org/org-archive
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-abc hides /usr/local/share/emacs/27.0.50/lisp/org/ob-abc
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ox-odt hides /usr/local/share/emacs/27.0.50/lisp/org/ox-odt
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-groovy hides /usr/local/share/emacs/27.0.50/lisp/org/ob-groovy
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-src hides /usr/local/share/emacs/27.0.50/lisp/org/org-src
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-sql hides /usr/local/share/emacs/27.0.50/lisp/org/ob-sql
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-io hides /usr/local/share/emacs/27.0.50/lisp/org/ob-io
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-coq hides /usr/local/share/emacs/27.0.50/lisp/org/ob-coq
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-ledger hides /usr/local/share/emacs/27.0.50/lisp/org/ob-ledger
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-plot hides /usr/local/share/emacs/27.0.50/lisp/org/org-plot
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-macro hides /usr/local/share/emacs/27.0.50/lisp/org/org-macro
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ox-ascii hides /usr/local/share/emacs/27.0.50/lisp/org/ox-ascii
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-mscgen hides /usr/local/share/emacs/27.0.50/lisp/org/ob-mscgen
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-ref hides /usr/local/share/emacs/27.0.50/lisp/org/ob-ref
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-awk hides /usr/local/share/emacs/27.0.50/lisp/org/ob-awk
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-ruby hides /usr/local/share/emacs/27.0.50/lisp/org/ob-ruby
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-inlinetask hides /usr/local/share/emacs/27.0.50/lisp/org/org-inlinetask
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-java hides /usr/local/share/emacs/27.0.50/lisp/org/ob-java
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-attach hides /usr/local/share/emacs/27.0.50/lisp/org/org-attach
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-entities hides /usr/local/share/emacs/27.0.50/lisp/org/org-entities
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-js hides /usr/local/share/emacs/27.0.50/lisp/org/ob-js
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-core hides /usr/local/share/emacs/27.0.50/lisp/org/ob-core
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-latex hides /usr/local/share/emacs/27.0.50/lisp/org/ob-latex
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-matlab hides /usr/local/share/emacs/27.0.50/lisp/org/ob-matlab
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob hides /usr/local/share/emacs/27.0.50/lisp/org/ob
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-vala hides /usr/local/share/emacs/27.0.50/lisp/org/ob-vala
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-picolisp hides /usr/local/share/emacs/27.0.50/lisp/org/ob-picolisp
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-lint hides /usr/local/share/emacs/27.0.50/lisp/org/org-lint
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-hledger hides /usr/local/share/emacs/27.0.50/lisp/org/ob-hledger
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-sass hides /usr/local/share/emacs/27.0.50/lisp/org/ob-sass
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-scheme hides /usr/local/share/emacs/27.0.50/lisp/org/ob-scheme
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-lilypond hides /usr/local/share/emacs/27.0.50/lisp/org/ob-lilypond
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-bbdb hides /usr/local/share/emacs/27.0.50/lisp/org/org-bbdb
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-eval hides /usr/local/share/emacs/27.0.50/lisp/org/ob-eval
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-habit hides /usr/local/share/emacs/27.0.50/lisp/org/org-habit
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-shell hides /usr/local/share/emacs/27.0.50/lisp/org/ob-shell
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-macs hides /usr/local/share/emacs/27.0.50/lisp/org/org-macs
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-mobile hides /usr/local/share/emacs/27.0.50/lisp/org/org-mobile
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-C hides /usr/local/share/emacs/27.0.50/lisp/org/ob-C
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-gnus hides /usr/local/share/emacs/27.0.50/lisp/org/org-gnus
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-agenda hides /usr/local/share/emacs/27.0.50/lisp/org/org-agenda
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-info hides /usr/local/share/emacs/27.0.50/lisp/org/org-info
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-stan hides /usr/local/share/emacs/27.0.50/lisp/org/ob-stan
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-J hides /usr/local/share/emacs/27.0.50/lisp/org/ob-J
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-emacs-lisp hides /usr/local/share/emacs/27.0.50/lisp/org/ob-emacs-lisp
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-protocol hides /usr/local/share/emacs/27.0.50/lisp/org/org-protocol
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-org hides /usr/local/share/emacs/27.0.50/lisp/org/ob-org
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-id hides /usr/local/share/emacs/27.0.50/lisp/org/org-id
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-colview hides /usr/local/share/emacs/27.0.50/lisp/org/org-colview
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-screen hides /usr/local/share/emacs/27.0.50/lisp/org/ob-screen
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-bibtex hides /usr/local/share/emacs/27.0.50/lisp/org/org-bibtex
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-haskell hides /usr/local/share/emacs/27.0.50/lisp/org/ob-haskell
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ox-beamer hides /usr/local/share/emacs/27.0.50/lisp/org/ox-beamer
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-ocaml hides /usr/local/share/emacs/27.0.50/lisp/org/ob-ocaml
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-datetree hides /usr/local/share/emacs/27.0.50/lisp/org/org-datetree
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-makefile hides /usr/local/share/emacs/27.0.50/lisp/org/ob-makefile
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-list hides /usr/local/share/emacs/27.0.50/lisp/org/org-list
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-table hides /usr/local/share/emacs/27.0.50/lisp/org/org-table
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-lisp hides /usr/local/share/emacs/27.0.50/lisp/org/ob-lisp
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-fortran hides /usr/local/share/emacs/27.0.50/lisp/org/ob-fortran
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-ditaa hides /usr/local/share/emacs/27.0.50/lisp/org/ob-ditaa
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-sed hides /usr/local/share/emacs/27.0.50/lisp/org/ob-sed
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-python hides /usr/local/share/emacs/27.0.50/lisp/org/ob-python
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-calc hides /usr/local/share/emacs/27.0.50/lisp/org/ob-calc
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-R hides /usr/local/share/emacs/27.0.50/lisp/org/ob-R
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-lob hides /usr/local/share/emacs/27.0.50/lisp/org/ob-lob
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-loaddefs hides /usr/local/share/emacs/27.0.50/lisp/org/org-loaddefs
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-dot hides /usr/local/share/emacs/27.0.50/lisp/org/ob-dot
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/org-footnote hides /usr/local/share/emacs/27.0.50/lisp/org/org-footnote
> /home/deusmax/.emacs.d/elpa/org-plus-contrib-20181230/ob-gnuplot hides /usr/local/share/emacs/27.0.50/lisp/org/ob-gnuplot
>
> Features:
> (shadow flyspell emacsbug gnus-registry registry helm-misc helm-ls-git
> powerline-separators powerline-themes gnus-recent-helm gnus-uu yenc
> novice ac-js2 skewer-mode cache-table js2-mode js sgml-mode simple-httpd
> ert ewoc spinner ghub-graphql treepy graphql ghub guix-ui-generation
> guix-ui-profile guix-ui-package guix-license guix-ui-store-item
> guix-package pcmpl-unix guix-location guix-auto-mode guix-build-log
> guix-misc guix-ui guix-ui-messages guix-read guix-repl guix-profiles
> guix-external guix-geiser guix-guile geiser-mode geiser-xref
> geiser-compile geiser-debug geiser-chibi geiser-mit geiser-chez
> geiser-chicken geiser-racket geiser-guile geiser-repl geiser-image
> geiser-company geiser-doc geiser-menu geiser-edit geiser-completion
> geiser-autodoc geiser-eval geiser-connection tq geiser-syntax scheme
> geiser-log geiser-popup view guix-help-vars guix-config
> guix-default-config guix-help guix-utils guix bui bui-list bui-info
> bui-entry bui-core bui-history bui-button bui-utils request trace
> info-look shut-up dash-functional elisp-refs loop ledger-check
> ledger-texi ledger-test ledger-sort ledger-reconcile ledger-occur
> ledger-fonts ledger-complete ledger-fontify ledger-state ledger-schedule
> ledger-init ledger-report ledger-commodities ledger-xact ledger-post
> ledger-exec ledger-navigate ledger-context ledger-regex edit-indirect
> dabbrev savehist org-learn hi-lock org-capture org-bibtex org-attach
> ob-clojure password-store skeleton ibuf-macs ibuf-ext ibuffer
> ibuffer-loaddefs treemacs-compatibility treemacs-mode treemacs-interface
> treemacs-extensions treemacs-persistence treemacs-mouse-interface
> treemacs-tag-follow-mode treemacs-follow-mode treemacs-filewatch-mode
> treemacs-tags treemacs-faces treemacs-rendering treemacs-async
> treemacs-icons treemacs-workspaces treemacs-structure treemacs-visuals
> treemacs-fringe-indicator pulse treemacs-impl treemacs-macros inline
> treemacs-customization ace-window avy f pfuture s tempo org-table bibtex
> geiser-impl geiser-custom geiser-base geiser ob-octave ebnf2ps
> calc-store calc-trail calc-ext autoload url-http-ntlm ntlm calc
> calc-loaddefs calc-macs hmac-md5 hex-util md4 url-http url-gw url-cache
> wdired cc-awk magit-ediff ediff-merg ediff-wind ediff-diff ediff-mult
> ediff-help ediff-init ediff-util ediff vc vc-dispatcher auto-complete
> popup php-mode php-project mode-local flymake-proc flymake warnings
> cc-langs sh-script smie executable org-eldoc org-toc org-bookmark
> org-mouse org-info org-id org-gnus nnir org-eww org-eshell org-docview
> doc-view org-crypt org-bbdb gitconfig-mode lisp-mnt checkdoc gnus-kill
> iso-transl which-key cus-edit shr-color gitignore-mode conf-mode
> bug-reference image-mode dired-x magit-extras magit-bookmark
> magit-submodule magit-obsolete magit-blame magit-stash magit-bisect
> magit-push magit-pull magit-fetch magit-clone magit-remote magit-commit
> magit-sequence magit-notes magit-worktree magit-tag magit-merge
> magit-branch magit-reset magit-files magit-refs magit-status magit
> magit-repos magit-apply magit-wip magit-log which-func imenu magit-diff
> magit-core magit-autorevert autorevert filenotify magit-process
> magit-margin magit-mode git-commit magit-git magit-section magit-utils
> magit-popup log-edit pcvs-util add-log with-editor server smerge-mode
> diff ispell helm-ring switch-window switch-window-mvborder
> switch-window-asciiart quail cc-mode cc-fonts cc-guess cc-menus cc-cmds
> cc-styles cc-align cc-engine cc-vars cc-defs debug cl-print gnus-dup shr
> text-property-search svg dom mm-archive sort smiley gnus-cite mail-extr
> gnus-bcklg gnus-async qp gnus-ml cursor-sensor nndraft nnmh nnfolder
> utf-7 gnutls network-stream nsm gnus-agent gnus-srvr gnus-score
> score-mode nnvirtual nntp gnus-cache misearch multi-isearch help-fns
> radix-tree dired-aux helm-eshell company-oddmuse company-keywords
> company-etags etags multifile xref project company-gtags
> company-dabbrev-code company-dabbrev company-files company-capf
> company-cmake company-xcode company-clang company-semantic company-eclim
> company-template company-bbdb eshell-fringe-status jka-compr em-unix
> em-term term disp-table ehelp em-script em-prompt em-ls em-hist em-pred
> em-glob em-cmpl em-basic em-banner em-alias tramp-cache tramp-sh recentf
> tree-widget ido helm-x-files helm-for-files helm-bookmark helm-adaptive
> bookmark pp dired-hide-dotfiles gnus-recent helm-command helm-elisp
> helm-eval edebug backtrace helm-info vc-git diff-mode winner image-file
> helm-external helm-net browse-url xml url url-proxy url-privacy
> url-expand url-methods url-history url-cookie url-domsuf ffap paredit
> pdf-loader two-column hydra lv bm printing ps-print ps-print-loaddefs
> ps-def lpr flycheck-ledger flycheck occur-x multiple-cursors
> mc-hide-unmatched-lines-mode mc-separate-operations
> rectangular-region-mode mc-mark-pop mc-mark-more thingatpt
> mc-cycle-cursors mc-edit-lines multiple-cursors-core rect
> esh-autosuggest company eshell-z em-dirs eshell-did-you-mean esh-var
> esh-cmd esh-opt esh-io esh-ext esh-proc esh-arg esh-groups eshell
> esh-module esh-mode esh-util eshell-up helm-swoop helm-mode helm-files
> helm-buffers helm-tags helm-locate helm-grep wgrep-helm wgrep grep
> compile helm-regexp helm-utils helm-help helm-types helm helm-source
> eieio-compat helm-multi-match helm-lib helm-config helm-easymenu
> async-bytecomp async ace-jump-mode mode-icons emojify apropos tar-mode
> ht dash hl-line color edmacro kmacro cal-china lunar solar cal-dst
> cal-islam cal-julian holidays hol-loaddefs appt diary-lib diary-loaddefs
> org-mime ox-org 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-habit org-edna
> org-clock htmlize cl ebdb-complete ebdb-message sendmail ebdb-gnus
> gnus-msg gnus-art mm-uu mml2015 mm-view mml-smime smime dig mailcap
> gnus-sum gnus-group gnus-undo gnus-start gnus-cloud nnimap nnmail
> mail-source utf7 netrc nnoo gnus-spec gnus-int gnus-range message rmc
> puny dired dired-loaddefs rfc822 mml mml-sec epa mm-decode mm-bodies
> mm-encode mail-parse rfc2231 gmm-utils mailheader gnus-win ebdb-mua
> ebdb-org org-element avl-tree generator org-location-google-maps
> org-agenda google-maps google-maps-static url-util google-maps-geocode
> google-maps-base org org-macro org-footnote org-pcomplete org-list
> org-faces org-entities noutline outline easy-mmode org-version ob-latex
> ob-plantuml ob-org ob-shell ob-ditaa ob-dot ob-emacs-lisp ob ob-tangle
> org-src ob-ref ob-lob ob-table ob-keys ob-exp ob-comint ob-core ob-eval
> org-compat org-macs org-loaddefs ebdb-com crm mailabbrev ebdb-format
> ebdb eieio-opt speedbar sb-image ezimage dframe find-func eieio-base
> cal-menu calendar cal-loaddefs timezone lxc-tramp tramp trampver
> tramp-compat tramp-loaddefs ucs-normalize shell pcomplete comint
> ansi-color ring parse-time format-spec advice paren midnight gnus
> nnheader gnus-util rmail rmail-loaddefs rfc2047 rfc2045 ietf-drums
> time-date mail-utils mm-util mail-prsvr wid-edit elec-pair cus-start
> cus-load mule-util tex-site rx url-auth info finder-inf package
> let-alist derived pcase cl-extra help-mode easymenu url-handlers
> url-parse auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs
> password-cache json map url-vars seq byte-opt gv bytecomp byte-compile
> cconv epg epg-config subr-x cl-loaddefs cl-lib 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 replace newcomment text-mode elisp-mode lisp-mode
> prog-mode register page menu-bar rfn-eshadow isearch 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 composite charscript charprop 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 threads dbusbind inotify lcms2 dynamic-setting
> system-font-setting font-render-setting xwidget-internal move-toolbar
> gtk x-toolkit x multi-tty make-network-process emacs)
>
> Memory information:
> ((conses 16 2296603 369440)
> (symbols 48 101962 3)
> (strings 32 395979 68773)
> (string-bytes 1 12997792)
> (vectors 16 172805)
> (vector-slots 8 3160555 181220)
> (floats 8 2162 1676)
> (intervals 56 154396 6404)
> (buffers 992 375))
>
>
>
--
João Távora
^ permalink raw reply [flat|nested] 18+ messages in thread
* bug#33998: 27.0.50; cl-delete does not delete the first list element
2019-01-07 17:13 ` João Távora
@ 2019-01-07 17:28 ` Drew Adams
2019-01-07 18:04 ` João Távora
2019-01-07 20:20 ` Deus Max
1 sibling, 1 reply; 18+ messages in thread
From: Drew Adams @ 2019-01-07 17:28 UTC (permalink / raw)
To: João Távora, Deus Max; +Cc: 33998
> So, cumbersome as it is, you should always use:
^^^^^^^^^^^^^
> (setq seq (cl-delete thing seq))
FWIW, this is not really true.
`cl-delete' deletes THING from the
_value_ of SEQ. You might or you
might not want variable SEQ to have
the updated value. A variable and
its value are two different things.
IOW, that's one common, and important,
use case, but this is not some
always-do-this rule for users.
The manual takes pains to explain
this stuff carefully. It's better
to just refer to the manual to help
users understand it. (And you did
that, which is great.)
^ permalink raw reply [flat|nested] 18+ messages in thread
* bug#33998: 27.0.50; cl-delete does not delete the first list element
2019-01-07 17:28 ` Drew Adams
@ 2019-01-07 18:04 ` João Távora
2019-01-07 18:14 ` Drew Adams
0 siblings, 1 reply; 18+ messages in thread
From: João Távora @ 2019-01-07 18:04 UTC (permalink / raw)
To: Drew Adams; +Cc: 33998, Deus Max
On Mon, Jan 7, 2019 at 5:29 PM Drew Adams <drew.adams@oracle.com> wrote:
>
> > So, cumbersome as it is, you should always use:
> ^^^^^^^^^^^^^
> > (setq seq (cl-delete thing seq))
>
> FWIW, this is not really true.
>
> `cl-delete' deletes THING from the
> _value_ of SEQ. You might or you
> might not want variable SEQ to have
> the updated value.
But this is what he wanted, so what's
the point in making this more confusing
than it needs to be? (rethorical btw,
but type away if you so wish...).
João
^ permalink raw reply [flat|nested] 18+ messages in thread
* bug#33998: 27.0.50; cl-delete does not delete the first list element
2019-01-07 18:04 ` João Távora
@ 2019-01-07 18:14 ` Drew Adams
2019-01-08 13:45 ` João Távora
0 siblings, 1 reply; 18+ messages in thread
From: Drew Adams @ 2019-01-07 18:14 UTC (permalink / raw)
To: João Távora; +Cc: 33998, Deus Max
> > > So, cumbersome as it is, you should always use:
> > ^^^^^^^^^^^^^
> > > (setq seq (cl-delete thing seq))
> >
> > FWIW, this is not really true.
> >
> > `cl-delete' deletes THING from the
> > _value_ of SEQ. You might or you
> > might not want variable SEQ to have
> > the updated value.
>
> But this is what he wanted, so what's
> the point in making this more confusing
> than it needs to be?
It's enough to suggest that he might want
to do that, and point to the manual for
explanation. It's the "always" that's
misleading.
^ permalink raw reply [flat|nested] 18+ messages in thread
* bug#33998: 27.0.50; cl-delete does not delete the first list element
2019-01-07 17:13 ` João Távora
2019-01-07 17:28 ` Drew Adams
@ 2019-01-07 20:20 ` Deus Max
2019-01-07 20:27 ` Dmitry Gutov
1 sibling, 1 reply; 18+ messages in thread
From: Deus Max @ 2019-01-07 20:20 UTC (permalink / raw)
To: João Távora, Drew Adams; +Cc: 33998
Thank you both for your replies.
On Mon, Jan 07 2019, João Távora wrote:
> There is no bug.
>
> You should always read "destructive" as "potentially
> destructive".
>
I believe the manual is precise and not up to interpretation. When it
says that it is "destructive", it is always "destructive". The cl-delete
function is always destructive. The variable you pass is modified.
> 'cl-delete', being a function, cannot know that the value
> you passed it is pointed to by the symbol 'tst'. Or, in lisp
> speak, that that value is the variable binding of 'tst'.
>
> Because it doesn't know this, it cannot affect the variable
> binding of 'tst', to be '(cdr tst)', which would be the only
> way to do what you want (remove the first element).
>
> If 'cl-delete' were a macro, like 'pop' is, it could do that
> (but that would have other disadvantages).
>
> So, cumbersome as it is, you should always use:
>
> (setq seq (cl-delete thing seq ))
>
> The docstring of 'delq' has this explanation more or less:
>
> delq is a built-in function in `C source code'.
>
> (delq ELT LIST)
>
> Delete members of LIST which are `eq' to ELT, and return the result.
> More precisely, this function skips any members `eq' to ELT at the
> front of LIST, then removes members `eq' to ELT from the remaining
> sublist by modifying its list structure, then returns the resulting
> list.
>
> Write `(setq foo (delq element foo))' to be sure of correctly changing
> the value of a list `foo'. See also `remq', which does not modify the
> argument.
>
> João
>
The elisp functions `delq' and delete "destructive" as per manual remove
elements from a list and return the resulting list. It goes on to
recommend to always use the `(setq foo (delq elm foo))' construct.
OK, I agree, no argument here.
But my point is about function `cl-delete', which is part of the
cl-extension. So, the manual descriptions of `delq', `delete' do not
apply.
In cl:
- to keep the original sequence intact, use `cl-remove'.
- to modify the original sequence, use `cl-delete'.
The manual states for `cl-delete':
This deletes all elements of seq that match item. It is a
destructive operation. (period, no optional)
It goes on to remark, on the analogy between `cl-remove' and `cl-delete':
Compare append and nconc, which are analogous non-destructive and
destructive list operations in Emacs Lisp.
I still thing it is a bug.
It (`cl-delete') should delete *all* elements of seq, that match item, not only in the
returning value, but in the sequence itself.
Anyway, that is how it behaves in all other cases, except for the case
of a match on the *first* element. I don't see why the first element
should be different. The manual makes no mention of this as a special
(and peculiar) case.
>
>
>
>
> On Sun, Jan 6, 2019 at 5:48 PM Deus Max <deusmax@gmx.com> wrote:
>>
>>
>> Function cl-delete refuses to delete the first element of a list.
>> I tried with all sorts of list elements, same results each time.
>> Here is a simple example:
>>
>> (setq tst '(5 8 9 5 10 14 5 23))
>>
>> (cl-delete 10 tst) -> returns (5 8 9 5 14 5 23)
>> and
>> tst -> (5 8 9 5 14 5 23)
>>
>> (cl-delete 5 tst) -> returns (8 9 14 23)
>> but
>> tst -> (5 8 9 14 23)
*** Wrong ! should be the same to the returned value.
>>
>> The CL-manual says nothing about the first element being special. *ALL*
>> should mean all, right ? Am I missing something here ?
>>
>> CL-manual says:
>> — Function: cl-delete item seq &key :test :test-not :key :count :start :end
> :from-end
>>
>> This deletes all elements of seq that match item. It is a
>> destructive operation. Since Emacs Lisp does not support
>> stretchable strings or vectors, this is the same as cl-remove for
>> those sequence types. On lists, cl-remove will copy the list if
>> necessary to preserve the original list, whereas cl-delete will
>> splice out parts of the argument list. Compare append and nconc,
>> which are analogous non-destructive and destructive list
>> operations in Emacs Lisp.
>>
DeusMax
^ permalink raw reply [flat|nested] 18+ messages in thread
* bug#33998: 27.0.50; cl-delete does not delete the first list element
2019-01-07 20:20 ` Deus Max
@ 2019-01-07 20:27 ` Dmitry Gutov
2019-01-07 20:48 ` Deus Max
2019-01-07 21:06 ` João Távora
0 siblings, 2 replies; 18+ messages in thread
From: Dmitry Gutov @ 2019-01-07 20:27 UTC (permalink / raw)
To: Deus Max, João Távora, Drew Adams; +Cc: 33998
On 07.01.2019 23:20, Deus Max wrote:
> The variable you pass is modified.
The value. Not the variable. The latter keeps pointing at whatever cons
it's pointed before.
^ permalink raw reply [flat|nested] 18+ messages in thread
* bug#33998: 27.0.50; cl-delete does not delete the first list element
2019-01-07 20:27 ` Dmitry Gutov
@ 2019-01-07 20:48 ` Deus Max
2019-01-07 21:06 ` João Távora
1 sibling, 0 replies; 18+ messages in thread
From: Deus Max @ 2019-01-07 20:48 UTC (permalink / raw)
To: Dmitry Gutov; +Cc: 33998, João Távora
On Mon, Jan 07 2019, Dmitry Gutov wrote:
> On 07.01.2019 23:20, Deus Max wrote:
>> The variable you pass is modified.
>
> The value. Not the variable. The latter keeps pointing at whatever cons it's pointed
> before.
Now, I got it ! Yes it is not a bug!
thank you all !
^ permalink raw reply [flat|nested] 18+ messages in thread
* bug#33998: 27.0.50; cl-delete does not delete the first list element
2019-01-07 20:27 ` Dmitry Gutov
2019-01-07 20:48 ` Deus Max
@ 2019-01-07 21:06 ` João Távora
2019-01-07 22:46 ` Deus Max
1 sibling, 1 reply; 18+ messages in thread
From: João Távora @ 2019-01-07 21:06 UTC (permalink / raw)
To: Dmitry Gutov; +Cc: 33998, Deus Max
Dmitry Gutov <dgutov@yandex.ru> writes:
> On 07.01.2019 23:20, Deus Max wrote:
>> The variable you pass is modified.
>
> The value. Not the variable. The latter keeps pointing at whatever
> cons it's pointed before.
What Dmitry said, let me just add this: what you call variables in Lisp
are actually symbols that, among other things, may (or may not) have a
"variable binding" (this is why you sometimes get "unbound" errors when
you try to evaluate a symbol's variable value). They are indeed
pointers.
So if you read "destructive" as in "modify a variable's binding,
i.e. the place where it points to" then no *function* can do that when
passed the variable, because what it is receiving is the value pointed
to by the symbol. A macro, like 'setq' or 'pop' can do that, because it
"sees" the symbol.
An alternative place to read on Common Lisp's DELETE is Common Lisp's
hyperspec:
http://www.lispworks.com/documentation/HyperSpec/Body/f_rm_rm.htm
The "may modify sequence" sentence figures prominently there.
Emacs's cl-delete attempts to emulate Common Lisp's CL:DELETE. In Emacs
it behaves, in this regard, no different from delete or delq. It is
"potentially destructive" because it *may* modify the *structure* of the
sequence *value* that you pass to it, be it a linked list or a vector:
1) If it is a linked list, it does the trick of making the pointer
before the element you want to delete point to the element after it;
2) If it is a vector, it moves all the vector elements after the one you
want to delete back one position and readjusts the vector size.
If you notice, for situation 2 you could theoretically affect the
variable binding directly. And curiously, this is where I found
differences between Emacs's cl-delete and some CL's implementation of
CL:DELETE.
Emacs:
(setq bla (vector 1 2 3 4))
(delete 1 bla) => [2 3 4]
bla => [1 2 3 4]
(setq bla (vector 1 2 3 4))
(cl-delete 1 bla) => [2 3 4]
bla => [1 2 3 4]
Allegro common lisp and CMU common lisp:
(setq bla (vector 1 2 3 4))
(delete 1 bla) => #(2 3 4)
bla => #(2 3 4)
SBCL common lisp:
(setq bla (vector 1 2 3 4))
(delete 1 bla) => #(2 3 4)
bla => #(2 3 4 4)
So, for vector sequences, CL:DELETE is apparently allowed to do
whatever. Reading the hyperspec, it seems that all these results are
correct, even SBCL's.
João
^ permalink raw reply [flat|nested] 18+ messages in thread
* bug#33998: 27.0.50; cl-delete does not delete the first list element
2019-01-07 21:06 ` João Távora
@ 2019-01-07 22:46 ` Deus Max
0 siblings, 0 replies; 18+ messages in thread
From: Deus Max @ 2019-01-07 22:46 UTC (permalink / raw)
To: João Távora; +Cc: 33998, Dmitry Gutov
On Mon, Jan 07 2019, João Távora wrote:
> Emacs's cl-delete attempts to emulate Common Lisp's CL:DELETE. In Emacs
> it behaves, in this regard, no different from delete or delq. It is
> "potentially destructive" because it *may* modify the *structure* of the
> sequence *value* that you pass to it, be it a linked list or a vector:
>
> 1) If it is a linked list, it does the trick of making the pointer
> before the element you want to delete point to the element after it;
>
> 2) If it is a vector, it moves all the vector elements after the one you
> want to delete back one position and readjusts the vector size.
>
> If you notice, for situation 2 you could theoretically affect the
> variable binding directly. And curiously, this is where I found
> differences between Emacs's cl-delete and some CL's implementation of
> CL:DELETE.
>
> Emacs:
>
> (setq bla (vector 1 2 3 4))
> (delete 1 bla) => [2 3 4]
> bla => [1 2 3 4]
>
> (setq bla (vector 1 2 3 4))
> (cl-delete 1 bla) => [2 3 4]
> bla => [1 2 3 4]
>
> Allegro common lisp and CMU common lisp:
>
> (setq bla (vector 1 2 3 4))
> (delete 1 bla) => #(2 3 4)
> bla => #(2 3 4)
>
> SBCL common lisp:
>
> (setq bla (vector 1 2 3 4))
> (delete 1 bla) => #(2 3 4)
> bla => #(2 3 4 4)
>
> So, for vector sequences, CL:DELETE is apparently allowed to do
> whatever. Reading the hyperspec, it seems that all these results are
> correct, even SBCL's.
>
> João
Wow! thanks for clarifying the points.
I had to fire up my SBCL to see it !
^ permalink raw reply [flat|nested] 18+ messages in thread
* bug#33998: 27.0.50; cl-delete does not delete the first list element
2019-01-07 18:14 ` Drew Adams
@ 2019-01-08 13:45 ` João Távora
2019-01-08 18:22 ` Drew Adams
0 siblings, 1 reply; 18+ messages in thread
From: João Távora @ 2019-01-08 13:45 UTC (permalink / raw)
To: Drew Adams; +Cc: 33998, Deus Max
On Mon, Jan 7, 2019 at 6:14 PM Drew Adams <drew.adams@oracle.com> wrote:
>
> > > > So, cumbersome as it is, you should always use:
> > > ^^^^^^^^^^^^^
> > > > (setq seq (cl-delete thing seq))
> > >
> > > FWIW, this is not really true.
> > >
> > > `cl-delete' deletes THING from the
> > > _value_ of SEQ. You might or you
> > > might not want variable SEQ to have
> > > the updated value.
> >
> > But this is what he wanted, so what's
> > the point in making this more confusing
> > than it needs to be?
>
> It's enough to suggest that he might want
> to do that, and point to the manual for
> explanation. It's the "always" that's
> misleading.
Actually, as I've subsequently demonstrated
the leeway given to cl-delete by the CL spec
is such that it is quite a good idea to *always*
use the (setq SEQ (cl-delete THING SEQ)) idiom,
because you have no control on what cl-delete
does with SEQ. You might indeed not want it
changed but it may change, and not in ways
you can predict.
João
^ permalink raw reply [flat|nested] 18+ messages in thread
* bug#33998: 27.0.50; cl-delete does not delete the first list element
2019-01-08 13:45 ` João Távora
@ 2019-01-08 18:22 ` Drew Adams
2019-01-08 18:31 ` João Távora
0 siblings, 1 reply; 18+ messages in thread
From: Drew Adams @ 2019-01-08 18:22 UTC (permalink / raw)
To: João Távora; +Cc: 33998, Deus Max
> > > > > So, cumbersome as it is, you should always use:
> > > > ^^^^^^^^^^^^^
> > > > > (setq seq (cl-delete thing seq))
> > > >
> > > > FWIW, this is not really true.
> > > >
> > > > `cl-delete' deletes THING from the
> > > > _value_ of SEQ. You might or you
> > > > might not want variable SEQ to have
> > > > the updated value.
> > >
> > > But this is what he wanted, so what's
> > > the point in making this more confusing
> > > than it needs to be?
> >
> > It's enough to suggest that he might want
> > to do that, and point to the manual for
> > explanation. It's the "always" that's
> > misleading.
>
> Actually, as I've subsequently demonstrated
> the leeway given to cl-delete by the CL spec
> is such that it is quite a good idea to *always*
> use the (setq SEQ (cl-delete THING SEQ)) idiom,
> because you have no control on what cl-delete
> does with SEQ. You might indeed not want it
> changed but it may change, and not in ways
> you can predict.
No. This has nothing to do with CL or the
CL spec or the implementation of `cl-delete'.
Again, you should set the variable to the value
returned by `cl-delete' only if that's what you
want - only if you want the variable to point
to the result of the operation instead of what
it pointed to previously.
This is so, regardless of what the result of
that operation might be - regardless of how
`cl-delete' is implemented or even what it
might do.
It's about the difference between a variable
and its value. `cl-delete' can only act on
the value, not on the variable (it never sees
the variable). Only other code can decide
whether the variable should be set to the
return value of `cl-delete'. If yes, then
`setq'; if no, then no `set'`.
Pretty simple, really.
^ permalink raw reply [flat|nested] 18+ messages in thread
* bug#33998: 27.0.50; cl-delete does not delete the first list element
2019-01-08 18:22 ` Drew Adams
@ 2019-01-08 18:31 ` João Távora
2019-01-08 18:45 ` Drew Adams
0 siblings, 1 reply; 18+ messages in thread
From: João Távora @ 2019-01-08 18:31 UTC (permalink / raw)
To: Drew Adams; +Cc: 33998, Deus Max
On Tue, Jan 8, 2019 at 6:22 PM Drew Adams <drew.adams@oracle.com> wrote:
> Again, you should set the variable to the value
> returned by `cl-delete' only if that's what you
> want
OK. Say you don't. Say you don't SETQ the variable
to the return value. What do you expect to be left
with in the value bound to the SEQ symbol?
> Pretty simple, really.
Then answer the pretty simple question above.
João
^ permalink raw reply [flat|nested] 18+ messages in thread
* bug#33998: 27.0.50; cl-delete does not delete the first list element
2019-01-08 18:31 ` João Távora
@ 2019-01-08 18:45 ` Drew Adams
2019-01-08 18:57 ` João Távora
0 siblings, 1 reply; 18+ messages in thread
From: Drew Adams @ 2019-01-08 18:45 UTC (permalink / raw)
To: João Távora; +Cc: 33998, Deus Max
> > Again, you should set the variable to the value
> > returned by `cl-delete' only if that's what you
> > want
>
> OK. Say you don't. Say you don't SETQ the variable
> to the return value. What do you expect to be left
> with in the value bound to the SEQ symbol?
>
> > Pretty simple, really.
>
> Then answer the pretty simple question above.
Without setting variable `seq' (i.e., without
the `setq'), that variable is still bound to
whatever it was bound to prior to your invoking
`(cl-delete thing seq)'. Presumably it was
bound to a cons. It is still bound to that
cons - the same (`eq') cons.
`cl-delete' is not passed the variable. It is
passed only its value. It can only act on that
value. It can act on that cons.
A function can change the car or cdr of a cons.
A function cannot change which cons some variable
points to, unless the function has access to that
variable (not just its value).
Whether the car or cdr of the cons passed to
`cl-delete' is redirected, that has no effect
on which cons is the value of variable `seq'.
^ permalink raw reply [flat|nested] 18+ messages in thread
* bug#33998: 27.0.50; cl-delete does not delete the first list element
2019-01-08 18:45 ` Drew Adams
@ 2019-01-08 18:57 ` João Távora
2019-01-08 19:07 ` Drew Adams
0 siblings, 1 reply; 18+ messages in thread
From: João Távora @ 2019-01-08 18:57 UTC (permalink / raw)
To: Drew Adams; +Cc: 33998, Deus Max
On Tue, Jan 8, 2019 at 6:46 PM Drew Adams <drew.adams@oracle.com> wrote:
>
> > > Again, you should set the variable to the value
> > > returned by `cl-delete' only if that's what you
> > > want
> >
> > OK. Say you don't. Say you don't SETQ the variable
> > to the return value. What do you expect to be left
> > with in the value bound to the SEQ symbol?
> >
> > > Pretty simple, really.
> >
> > Then answer the pretty simple question above.
>
> Without setting variable `seq' (i.e., without
> the `setq'), that variable is still bound to
> whatever it was bound to prior to your invoking
> `(cl-delete thing seq)'. Presumably it was
> bound to a cons.
It could have been bound to a vector. cl-delete (as delq, delete)
accepts sequences. And contrary to those two, it makes
no guarantees as to how it potentially destroys the original
sequence. So unless you're relying on a particular
implementation, relying on SEQ after calling cl-delete on it
is a bad, bad idea.
So yes, always (setq SEQ (cl-delete THING SEQ)). With
the extraordinary exception that you're leaving the scope
where SEQ is visible. Then you can bypass it.
João
^ permalink raw reply [flat|nested] 18+ messages in thread
* bug#33998: 27.0.50; cl-delete does not delete the first list element
2019-01-08 18:57 ` João Távora
@ 2019-01-08 19:07 ` Drew Adams
2019-01-08 21:38 ` João Távora
0 siblings, 1 reply; 18+ messages in thread
From: Drew Adams @ 2019-01-08 19:07 UTC (permalink / raw)
To: João Távora; +Cc: 33998, Deus Max
> > Without setting variable `seq' (i.e., without
> > the `setq'), that variable is still bound to
> > whatever it was bound to prior to your invoking
> > `(cl-delete thing seq)'. Presumably it was
> > bound to a cons.
>
> It could have been bound to a vector. cl-delete (as delq, delete)
> accepts sequences. And contrary to those two, it makes
> no guarantees as to how it potentially destroys the original
> sequence. So unless you're relying on a particular
> implementation, relying on SEQ after calling cl-delete on it
> is a bad, bad idea.
>
> So yes, always (setq SEQ (cl-delete THING SEQ)). With
> the extraordinary exception that you're leaving the scope
> where SEQ is visible. Then you can bypass it.
I'm repeating myself, so I'll stop here.
You are _not_ "calling cl-delete on it", where "it"
is the variable SEQ. You are calling the function
on its value, whether that value is a vector, a
list or any other kind of sequence. `cl-delete'
never sees, smells, or hears the variable.
It all depends what a user intends by "relying on
SEQ". If you ALWAYS mean relying on its value to
be what `cl-delete' returns then sure, clearly you
must ALWAYS set it to that return value. If in
some case you instead mean relying on it not to be
affected by `cl-delete' then you won't want to
assign it to the result of invoking `cl-delete'.
It's not about implementation of `cl-delete'. It's
not about the type of sequence you pass it. It's
about a variable being something different from its
value.
^ permalink raw reply [flat|nested] 18+ messages in thread
* bug#33998: 27.0.50; cl-delete does not delete the first list element
2019-01-08 19:07 ` Drew Adams
@ 2019-01-08 21:38 ` João Távora
2019-01-09 1:30 ` Drew Adams
0 siblings, 1 reply; 18+ messages in thread
From: João Távora @ 2019-01-08 21:38 UTC (permalink / raw)
To: Drew Adams; +Cc: 33998, Deus Max
Drew Adams <drew.adams@oracle.com> writes:
> It's not about implementation of `cl-delete'. It's
> not about the type of sequence you pass it. It's
> about a variable being something different from its
> value.
Drew, it is you who are missing something basic here:
(defun mistery (thing seq)
(let ((head (elt seq 0)))
(cl-delete thing seq)
(eq head (elt seq 0))))
Today, in Emacs this always returns t, for every THING and sequence SEQ
you can think of (in fact, for vectors, cl-delete delegates to cl-remove).
This is perfectly CL-compliant. But a future, different, also perfectly
CL-compliant, implementation of cl-delete, might very well make this
function return nil. In fact, if you port this code to SBCL or Allegro
CL by changing 'cl-delete' to 'cl:delete'
(mistery 1 (list 1 2 3 4)) ;; => t
(mistery 1 (vector 1 2 3 4)) ;; => nil
So again, for the nth time, it's a bad idea to rely on SEQ after calling
'cl-delete'.
João
^ permalink raw reply [flat|nested] 18+ messages in thread
* bug#33998: 27.0.50; cl-delete does not delete the first list element
2019-01-08 21:38 ` João Távora
@ 2019-01-09 1:30 ` Drew Adams
0 siblings, 0 replies; 18+ messages in thread
From: Drew Adams @ 2019-01-09 1:30 UTC (permalink / raw)
To: João Távora; +Cc: 33998, Deus Max
> > It's not about implementation of `cl-delete'. It's
> > not about the type of sequence you pass it. It's
> > about a variable being something different from its
> > value.
>
> Drew, it is you who are missing something basic here:
>
> (defun mistery (thing seq)
> (let ((head (elt seq 0)))
> (cl-delete thing seq)
> (eq head (elt seq 0))))
>
> Today, in Emacs this always returns t, for every THING and sequence SEQ
> you can think of (in fact, for vectors, cl-delete delegates to cl-remove).
> This is perfectly CL-compliant. But a future, different, also perfectly
> CL-compliant, implementation of cl-delete, might very well make this
> function return nil. In fact, if you port this code to SBCL or Allegro
> CL by changing 'cl-delete' to 'cl:delete'
>
> (mistery 1 (list 1 2 3 4)) ;; => t
> (mistery 1 (vector 1 2 3 4)) ;; => nil
Your example has no bearing on our discussion,
AFAICT.
What is passed to your function are two values -
no variables. Again, `cl-delete' sees only a
sequence value, not any _variable_ that might
have that sequence as its variable. And yes,
that's by design. `cl-delete' can change the
elements of a sequence (a value), but it cannot
change the value of a variable. That's not its
job.
> So again, for the nth time, it's a bad idea to rely on SEQ after calling
> 'cl-delete'.
Again, you are confusing `SEQ' the variable with
its value. There is no such general rule with
"always" as part of it. Not in Lisp, there ain't.
If that were not the case then you would be in
effect claiming (and perhaps you are explicitly
claiming) that CL's definition of `delete' is a
bad one, misguided, since it applies only to a
sequence and not to any variable that might have
that sequence as its value.
Contrast Lisp functions such as `delete' and
`nconc' to a Lisp function such as `add-to-list'
or to a special form (or macro) such as `push'.
The latter act on a _variable_ (possibly a
generalized variable - a place). `delete',
`nconc' etc. do NOT act on a variable.
If you really believe "always" to apply then you
had better toss all of the functions that possibly
modify values, replacing them with only macros or
special forms that (like `push') set a variable
(place) to its modified value or to functions that
(like `add-to-list') accept a variable (symbol)
as argument and set it to its modified value.
Such things are available in Lisp, and you can
define more such. But Lisp doesn't _limit_ itself
to such things - IOW, Lisp does NOT say "always".
Why? For the reasons I gave - sometimes you don't
want to update a variable. IOW, "always" is not
always the case - it just isn't.
I already said I'd stop. I hope that's the case
now, at least. Perhaps we can agree to disagree:
you say "always"; I say "often".
You (apparently) think there's no reason for a
function such as `cl-delete', and that it would be
better for Lisp itself to enforce your "always"
rule, using either a macro or a function that
takes a symbol argument rather than just a value.
Any programmer can certainly do that. Lisp offers
both possibilities.
^ permalink raw reply [flat|nested] 18+ messages in thread
end of thread, other threads:[~2019-01-09 1:30 UTC | newest]
Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-01-06 13:30 bug#33998: 27.0.50; cl-delete does not delete the first list element Deus Max
2019-01-07 17:13 ` João Távora
2019-01-07 17:28 ` Drew Adams
2019-01-07 18:04 ` João Távora
2019-01-07 18:14 ` Drew Adams
2019-01-08 13:45 ` João Távora
2019-01-08 18:22 ` Drew Adams
2019-01-08 18:31 ` João Távora
2019-01-08 18:45 ` Drew Adams
2019-01-08 18:57 ` João Távora
2019-01-08 19:07 ` Drew Adams
2019-01-08 21:38 ` João Távora
2019-01-09 1:30 ` Drew Adams
2019-01-07 20:20 ` Deus Max
2019-01-07 20:27 ` Dmitry Gutov
2019-01-07 20:48 ` Deus Max
2019-01-07 21:06 ` João Távora
2019-01-07 22:46 ` Deus Max
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).