unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#45693: 28.0.50; abbrev does not expand two words any more
@ 2021-01-06 15:54 Uwe Brauer
  2021-01-10 14:35 ` Lars Ingebrigtsen
  0 siblings, 1 reply; 28+ messages in thread
From: Uwe Brauer @ 2021-01-06 15:54 UTC (permalink / raw)
  To: 45693

Hi

I swear that worked some time ago.

I am on Ubuntu 16.04 using emacs from master

"84ec57fe06e187f41a3546131d5dae3b185c3511"

Here is what I do:

Start emacs -q 

Load minimal file 
(setq-default abbrev-mode t)
(or turn abbrev mode on in the file you visit.


The abbrev file is default .abbrev_defs in the home directory. Its
fundamental mode abbrev table looks like



(define-abbrev-table 'fundamental-mode-abbrev-table
  '(
    ("a que" "a qué" nil :count 0)
    ("asi" "así" nil :count 1)
    ("ciertas problemas" "ciertos problemas" nil :count 0)
    ("di nos" "dinos" nil :count 0)
    ("lamentamos de" "lamentamos comunicarte" nil :count 0)
    ("likke" "bike" nil :count 0)
    ("los siguientes circunstancias" "las siguientes circunstancias" nil :count 0)
    ("no se" "no sé" nil :count 0)
    ("portail" "portátil" nil :count 0)
    ("premierment" "premièrement" nil :count 0)
    ("thiss" "this" nil :count 0)
    ("varias ordenadores" "varios ordenadores" nil :count 0)
   ))


I open an empty file in fundamental mode.


 asi --> así

However 

 a que is NOT expanded to a qué

As indicated in the table. I am pretty sure that worked some time ago. 

Any ideas?

Regards

Uwe Brauer 

In GNU Emacs 28.0.50 (build 1, x86_64-pc-linux-gnu, X toolkit, cairo version 1.14.6, Xaw3d scroll bars)
 of 2020-07-23 built on Utnapischtim
Repository revision: 84ec57fe06e187f41a3546131d5dae3b185c3511
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.11804000
System Description: Ubuntu 16.04.7 LTS

Recent messages:
Reading incoming mail from file...
nnml: Reading incoming mail (no new mail)...done
Reading active file via nnml...done
Reading active file via nndraft...done
Checking new news...done
Initializing the registry
Reading Gnus registry from ~/.gnus.registry.eieio...done
Invalid face reference: font-lock-comment-warn-face [90 times]
Making completion list...
Invalid face reference: font-lock-comment-warn-face [54 times]

Configured using:
 'configure --prefix=/opt/emacs28 --with-x-toolkit=athena --without-pop
 --with-mailutils'

Configured features:
XAW3D XPM JPEG TIFF GIF PNG CAIRO SOUND GPM DBUS GSETTINGS GLIB NOTIFY
INOTIFY ACL LIBSELINUX GNUTLS LIBXML2 FREETYPE HARFBUZZ M17N_FLT LIBOTF
ZLIB TOOLKIT_SCROLL_BARS LUCID X11 XDBE XIM MODULES THREADS PDUMPER
LCMS2

Important settings:
  value of $LC_MONETARY: es_ES.UTF-8
  value of $LC_NUMERIC: es_ES.UTF-8
  value of $LC_TIME: es_ES.UTF-8
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Group

Minor modes in effect:
  gnus-topic-mode: t
  cursor-sensor-mode: t
  which-key-mode: t
  path-headerline-mode: t
  save-place-mode: t
  global-diff-hl-mode: t
  display-time-mode: t
  global-orglink-mode: t
  better-registers: t
  recentf-mode: t
  gnus-undo-mode: t
  csv-field-index-mode: t
  shell-dirtrack-mode: t
  cl-old-struct-compat-mode: t
  tooltip-mode: t
  global-eldoc-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
  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/oub/emacs/site-lisp/linked-buffer hides /home/oub/ALLES/src/m-buffer-el/linked-buffer
/home/oub/emacs/site-lisp/babel hides /home/oub/emacs/site-lisp/versch/babel
/home/oub/emacs/site-lisp/packages/personal-lisp/extra hides /home/oub/emacs/site-lisp/versch/extra
/home/oub/emacs/site-lisp/packages/src/Matlab/matlab-sf-hg/matlab-publish hides /home/oub/emacs/site-lisp/versch/matlab-publish
/home/oub/emacs/site-lisp/packages/remember-2.0/remember hides /home/oub/emacs/site-lisp/versch/remember
/home/oub/emacs/site-lisp/packages/personal-lisp/test hides /home/oub/emacs/site-lisp/versch/test
/home/oub/emacs/site-lisp/versch/org-addons hides /home/oub/emacs/init/org-addons
/home/oub/emacs/site-lisp/versch/gnus-mini hides /home/oub/emacs/init/gnus-mini
/home/oub/emacs/site-lisp/packages/personal-lisp/test hides /home/oub/emacs/test
/home/oub/emacs/site-lisp/versch/bm hides /home/oub/.emacs.d/elpa/bm-20170815.1609/bm
/home/oub/emacs/site-lisp/versch/cdlatex hides /home/oub/.emacs.d/elpa/cdlatex-20140707.426/cdlatex
/home/oub/emacs/site-lisp/versch/easy-kill hides /home/oub/.emacs.d/elpa/easy-kill-20181114.2330/easy-kill
/home/oub/.emacs.d/elpa/google-translate-20190620.1416/.bump-version hides /home/oub/.emacs.d/elpa/iregister-20150515.1407/.bump-version
/home/oub/emacs/site-lisp/versch/latex-pretty-symbols hides /home/oub/.emacs.d/elpa/latex-pretty-symbols-20151112.244/latex-pretty-symbols
/home/oub/emacs/site-lisp/versch/list-register hides /home/oub/.emacs.d/elpa/list-register-20091203.1015/list-register
/home/oub/ALLES/src/m-buffer-el/m-buffer hides /home/oub/.emacs.d/elpa/m-buffer-20170407.2141/m-buffer
/home/oub/ALLES/src/m-buffer-el/m-buffer-macro hides /home/oub/.emacs.d/elpa/m-buffer-20170407.2141/m-buffer-macro
/home/oub/ALLES/src/m-buffer-el/m-buffer-at hides /home/oub/.emacs.d/elpa/m-buffer-20170407.2141/m-buffer-at
/home/oub/emacs/site-lisp/packages/src/Matlab/matlab-sf-hg/matlab-complete hides /home/oub/.emacs.d/elpa/matlab-mode-20191223.2012/matlab-complete
/home/oub/emacs/site-lisp/packages/src/Matlab/matlab-sf-hg/matlab-topic hides /home/oub/.emacs.d/elpa/matlab-mode-20191223.2012/matlab-topic
/home/oub/emacs/site-lisp/packages/src/Matlab/matlab-sf-hg/matlab-shell hides /home/oub/.emacs.d/elpa/matlab-mode-20191223.2012/matlab-shell
/home/oub/emacs/site-lisp/packages/src/Matlab/matlab-sf-hg/srecode-matlab hides /home/oub/.emacs.d/elpa/matlab-mode-20191223.2012/srecode-matlab
/home/oub/emacs/site-lisp/packages/src/Matlab/matlab-sf-hg/semantic-matlab hides /home/oub/.emacs.d/elpa/matlab-mode-20191223.2012/semantic-matlab
/home/oub/emacs/site-lisp/packages/src/Matlab/matlab-sf-hg/mlint hides /home/oub/.emacs.d/elpa/matlab-mode-20191223.2012/mlint
/home/oub/emacs/site-lisp/packages/src/Matlab/matlab-sf-hg/matlab-maint hides /home/oub/.emacs.d/elpa/matlab-mode-20191223.2012/matlab-maint
/home/oub/emacs/site-lisp/packages/src/Matlab/matlab-sf-hg/linemark hides /home/oub/.emacs.d/elpa/matlab-mode-20191223.2012/linemark
/home/oub/emacs/site-lisp/packages/src/Matlab/matlab-sf-hg/matlab-netshell hides /home/oub/.emacs.d/elpa/matlab-mode-20191223.2012/matlab-netshell
/home/oub/emacs/site-lisp/packages/src/Matlab/matlab-sf-hg/matlab-cgen hides /home/oub/.emacs.d/elpa/matlab-mode-20191223.2012/matlab-cgen
/home/oub/emacs/site-lisp/packages/src/Matlab/matlab-sf-hg/matlab-shell-gud hides /home/oub/.emacs.d/elpa/matlab-mode-20191223.2012/matlab-shell-gud
/home/oub/emacs/site-lisp/packages/src/Matlab/matlab-sf-hg/matlab hides /home/oub/.emacs.d/elpa/matlab-mode-20191223.2012/matlab
/home/oub/emacs/site-lisp/packages/src/Matlab/matlab-sf-hg/semanticdb-matlab hides /home/oub/.emacs.d/elpa/matlab-mode-20191223.2012/semanticdb-matlab
/home/oub/emacs/site-lisp/packages/src/Matlab/matlab-sf-hg/matlab-compat hides /home/oub/.emacs.d/elpa/matlab-mode-20191223.2012/matlab-compat
/home/oub/emacs/site-lisp/packages/src/Matlab/matlab-sf-hg/matlab-publish hides /home/oub/.emacs.d/elpa/matlab-mode-20191223.2012/matlab-publish
/home/oub/emacs/site-lisp/packages/src/Matlab/matlab-sf-hg/tlc hides /home/oub/.emacs.d/elpa/matlab-mode-20191223.2012/tlc
/home/oub/emacs/site-lisp/packages/src/Matlab/matlab-sf-hg/cedet-matlab hides /home/oub/.emacs.d/elpa/matlab-mode-20191223.2012/cedet-matlab
/home/oub/emacs/site-lisp/packages/src/Matlab/matlab-sf-hg/company-matlab-shell hides /home/oub/.emacs.d/elpa/matlab-mode-20191223.2012/company-matlab-shell
/home/oub/emacs/site-lisp/packages/src/Matlab/matlab-sf-hg/matlab-mode-pkg hides /home/oub/.emacs.d/elpa/matlab-mode-20191223.2012/matlab-mode-pkg
/home/oub/src/org-mode/contrib/lisp/org-mac-link hides /home/oub/.emacs.d/elpa/org-mac-link-20170105.1723/org-mac-link
/home/oub/.emacs.d/elpa/orgtbl-aggregate-20200605.555/org-insert-dblock hides /home/oub/.emacs.d/elpa/orgtbl-join-20200605.600/org-insert-dblock
/home/oub/.emacs.d/elpa/org-pandoc-20130729.1850/ox-pandoc hides /home/oub/.emacs.d/elpa/ox-pandoc-20171107.341/ox-pandoc
/home/oub/emacs/site-lisp/packages/org/org-agenda hides /home/oub/.emacs.d/elpa/org-20171116/org-agenda
/home/oub/emacs/site-lisp/packages/org/ob-lob hides /home/oub/.emacs.d/elpa/org-20171116/ob-lob
/home/oub/emacs/site-lisp/packages/org/ob hides /home/oub/.emacs.d/elpa/org-20171116/ob
/home/oub/emacs/site-lisp/packages/org/ob-ruby hides /home/oub/.emacs.d/elpa/org-20171116/ob-ruby
/home/oub/emacs/site-lisp/packages/org/ob-coq hides /home/oub/.emacs.d/elpa/org-20171116/ob-coq
/home/oub/emacs/site-lisp/packages/org/ob-stan hides /home/oub/.emacs.d/elpa/org-20171116/ob-stan
/home/oub/emacs/site-lisp/packages/org/ob-shell hides /home/oub/.emacs.d/elpa/org-20171116/ob-shell
/home/oub/emacs/site-lisp/packages/org/ox-man hides /home/oub/.emacs.d/elpa/org-20171116/ox-man
/home/oub/emacs/site-lisp/packages/org/org-faces hides /home/oub/.emacs.d/elpa/org-20171116/org-faces
/home/oub/emacs/site-lisp/packages/org/ox-publish hides /home/oub/.emacs.d/elpa/org-20171116/ox-publish
/home/oub/emacs/site-lisp/packages/org/ob-haskell hides /home/oub/.emacs.d/elpa/org-20171116/ob-haskell
/home/oub/emacs/site-lisp/packages/org/ob-mscgen hides /home/oub/.emacs.d/elpa/org-20171116/ob-mscgen
/home/oub/emacs/site-lisp/packages/org/ob-plantuml hides /home/oub/.emacs.d/elpa/org-20171116/ob-plantuml
/home/oub/emacs/site-lisp/packages/org/ob-comint hides /home/oub/.emacs.d/elpa/org-20171116/ob-comint
/home/oub/emacs/site-lisp/packages/org/ox-org hides /home/oub/.emacs.d/elpa/org-20171116/ox-org
/home/oub/emacs/site-lisp/packages/org/org-ctags hides /home/oub/.emacs.d/elpa/org-20171116/org-ctags
/home/oub/emacs/site-lisp/packages/org/ob-clojure hides /home/oub/.emacs.d/elpa/org-20171116/ob-clojure
/home/oub/emacs/site-lisp/packages/org/ob-forth hides /home/oub/.emacs.d/elpa/org-20171116/ob-forth
/home/oub/emacs/site-lisp/packages/org/ob-css hides /home/oub/.emacs.d/elpa/org-20171116/ob-css
/home/oub/emacs/site-lisp/packages/org/ob-maxima hides /home/oub/.emacs.d/elpa/org-20171116/ob-maxima
/home/oub/emacs/site-lisp/packages/org/ob-ebnf hides /home/oub/.emacs.d/elpa/org-20171116/ob-ebnf
/home/oub/emacs/site-lisp/packages/org/org-attach hides /home/oub/.emacs.d/elpa/org-20171116/org-attach
/home/oub/emacs/site-lisp/packages/org/ob-emacs-lisp hides /home/oub/.emacs.d/elpa/org-20171116/ob-emacs-lisp
/home/oub/emacs/site-lisp/packages/org/org-footnote hides /home/oub/.emacs.d/elpa/org-20171116/org-footnote
/home/oub/emacs/site-lisp/packages/org/ob-dot hides /home/oub/.emacs.d/elpa/org-20171116/ob-dot
/home/oub/emacs/site-lisp/packages/org/ob-shen hides /home/oub/.emacs.d/elpa/org-20171116/ob-shen
/home/oub/emacs/site-lisp/packages/org/ob-processing hides /home/oub/.emacs.d/elpa/org-20171116/ob-processing
/home/oub/emacs/site-lisp/packages/org/ob-picolisp hides /home/oub/.emacs.d/elpa/org-20171116/ob-picolisp
/home/oub/emacs/site-lisp/packages/org/ob-io hides /home/oub/.emacs.d/elpa/org-20171116/ob-io
/home/oub/emacs/site-lisp/packages/org/ob-ledger hides /home/oub/.emacs.d/elpa/org-20171116/ob-ledger
/home/oub/emacs/site-lisp/packages/org/org-compat hides /home/oub/.emacs.d/elpa/org-20171116/org-compat
/home/oub/emacs/site-lisp/packages/org/ob-org hides /home/oub/.emacs.d/elpa/org-20171116/ob-org
/home/oub/emacs/site-lisp/packages/org/ob-lilypond hides /home/oub/.emacs.d/elpa/org-20171116/ob-lilypond
/home/oub/emacs/site-lisp/packages/org/org-feed hides /home/oub/.emacs.d/elpa/org-20171116/org-feed
/home/oub/emacs/site-lisp/packages/org/ob-vala hides /home/oub/.emacs.d/elpa/org-20171116/ob-vala
/home/oub/emacs/site-lisp/packages/org/org-colview hides /home/oub/.emacs.d/elpa/org-20171116/org-colview
/home/oub/emacs/site-lisp/packages/org/ob-latex hides /home/oub/.emacs.d/elpa/org-20171116/ob-latex
/home/oub/emacs/site-lisp/packages/org/org-timer hides /home/oub/.emacs.d/elpa/org-20171116/org-timer
/home/oub/emacs/site-lisp/packages/org/org-archive hides /home/oub/.emacs.d/elpa/org-20171116/org-archive
/home/oub/emacs/site-lisp/packages/org/org-inlinetask hides /home/oub/.emacs.d/elpa/org-20171116/org-inlinetask
/home/oub/emacs/site-lisp/packages/org/ob-python hides /home/oub/.emacs.d/elpa/org-20171116/ob-python
/home/oub/emacs/site-lisp/packages/org/ob-awk hides /home/oub/.emacs.d/elpa/org-20171116/ob-awk
/home/oub/emacs/site-lisp/packages/org/ob-screen hides /home/oub/.emacs.d/elpa/org-20171116/ob-screen
/home/oub/emacs/site-lisp/packages/org/org-id hides /home/oub/.emacs.d/elpa/org-20171116/org-id
/home/oub/emacs/site-lisp/packages/org/ox-texinfo hides /home/oub/.emacs.d/elpa/org-20171116/ox-texinfo
/home/oub/emacs/site-lisp/packages/org/org-habit hides /home/oub/.emacs.d/elpa/org-20171116/org-habit
/home/oub/emacs/site-lisp/packages/org/ob-C hides /home/oub/.emacs.d/elpa/org-20171116/ob-C
/home/oub/emacs/site-lisp/packages/org/org-entities hides /home/oub/.emacs.d/elpa/org-20171116/org-entities
/home/oub/emacs/site-lisp/packages/org/ob-perl hides /home/oub/.emacs.d/elpa/org-20171116/ob-perl
/home/oub/emacs/site-lisp/packages/org/ob-gnuplot hides /home/oub/.emacs.d/elpa/org-20171116/ob-gnuplot
/home/oub/emacs/site-lisp/packages/org/ob-R hides /home/oub/.emacs.d/elpa/org-20171116/ob-R
/home/oub/emacs/site-lisp/packages/org/org-capture hides /home/oub/.emacs.d/elpa/org-20171116/org-capture
/home/oub/emacs/site-lisp/packages/org/ob-lisp hides /home/oub/.emacs.d/elpa/org-20171116/ob-lisp
/home/oub/emacs/site-lisp/packages/org/org-pcomplete hides /home/oub/.emacs.d/elpa/org-20171116/org-pcomplete
/home/oub/emacs/site-lisp/packages/org/ob-octave hides /home/oub/.emacs.d/elpa/org-20171116/ob-octave
/home/oub/emacs/site-lisp/packages/org/org-table hides /home/oub/.emacs.d/elpa/org-20171116/org-table
/home/oub/emacs/site-lisp/packages/org/ox hides /home/oub/.emacs.d/elpa/org-20171116/ox
/home/oub/emacs/site-lisp/packages/org/org-lint hides /home/oub/.emacs.d/elpa/org-20171116/org-lint
/home/oub/emacs/site-lisp/packages/org/ob-ocaml hides /home/oub/.emacs.d/elpa/org-20171116/ob-ocaml
/home/oub/emacs/site-lisp/packages/org/ob-lua hides /home/oub/.emacs.d/elpa/org-20171116/ob-lua
/home/oub/emacs/site-lisp/packages/org/ob-sql hides /home/oub/.emacs.d/elpa/org-20171116/ob-sql
/home/oub/emacs/site-lisp/packages/org/ob-scheme hides /home/oub/.emacs.d/elpa/org-20171116/ob-scheme
/home/oub/emacs/site-lisp/packages/org/ox-icalendar hides /home/oub/.emacs.d/elpa/org-20171116/ox-icalendar
/home/oub/emacs/site-lisp/packages/org/ob-abc hides /home/oub/.emacs.d/elpa/org-20171116/ob-abc
/home/oub/emacs/site-lisp/packages/org/ob-sed hides /home/oub/.emacs.d/elpa/org-20171116/ob-sed
/home/oub/emacs/site-lisp/packages/org/ob-matlab hides /home/oub/.emacs.d/elpa/org-20171116/ob-matlab
/home/oub/emacs/site-lisp/packages/org/ox-latex hides /home/oub/.emacs.d/elpa/org-20171116/ox-latex
/home/oub/emacs/site-lisp/packages/org/org-clock hides /home/oub/.emacs.d/elpa/org-20171116/org-clock
/home/oub/emacs/site-lisp/packages/org/org-mobile hides /home/oub/.emacs.d/elpa/org-20171116/org-mobile
/home/oub/emacs/site-lisp/packages/org/ob-js hides /home/oub/.emacs.d/elpa/org-20171116/ob-js
/home/oub/emacs/site-lisp/packages/org/org-indent hides /home/oub/.emacs.d/elpa/org-20171116/org-indent
/home/oub/emacs/site-lisp/packages/org/ob-ditaa hides /home/oub/.emacs.d/elpa/org-20171116/ob-ditaa
/home/oub/emacs/site-lisp/packages/org/ob-sqlite hides /home/oub/.emacs.d/elpa/org-20171116/ob-sqlite
/home/oub/emacs/site-lisp/packages/org/ob-table hides /home/oub/.emacs.d/elpa/org-20171116/ob-table
/home/oub/emacs/site-lisp/packages/org/ob-groovy hides /home/oub/.emacs.d/elpa/org-20171116/ob-groovy
/home/oub/emacs/site-lisp/packages/org/ox-odt hides /home/oub/.emacs.d/elpa/org-20171116/ox-odt
/home/oub/emacs/site-lisp/packages/org/org-datetree hides /home/oub/.emacs.d/elpa/org-20171116/org-datetree
/home/oub/emacs/site-lisp/packages/org/ob-calc hides /home/oub/.emacs.d/elpa/org-20171116/ob-calc
/home/oub/emacs/site-lisp/packages/org/ob-eval hides /home/oub/.emacs.d/elpa/org-20171116/ob-eval
/home/oub/emacs/site-lisp/packages/org/ox-ascii hides /home/oub/.emacs.d/elpa/org-20171116/ox-ascii
/home/oub/emacs/site-lisp/packages/org/ob-ref hides /home/oub/.emacs.d/elpa/org-20171116/ob-ref
/home/oub/emacs/site-lisp/packages/org/org-install hides /home/oub/.emacs.d/elpa/org-20171116/org-install
/home/oub/emacs/site-lisp/packages/org/org-list hides /home/oub/.emacs.d/elpa/org-20171116/org-list
/home/oub/emacs/site-lisp/packages/org/org-macs hides /home/oub/.emacs.d/elpa/org-20171116/org-macs
/home/oub/emacs/site-lisp/packages/org/org-element hides /home/oub/.emacs.d/elpa/org-20171116/org-element
/home/oub/emacs/site-lisp/packages/org/org-version hides /home/oub/.emacs.d/elpa/org-20171116/org-version
/home/oub/emacs/site-lisp/packages/org/ob-tangle hides /home/oub/.emacs.d/elpa/org-20171116/ob-tangle
/home/oub/emacs/site-lisp/packages/org/ob-java hides /home/oub/.emacs.d/elpa/org-20171116/ob-java
/home/oub/emacs/site-lisp/packages/org/org-duration hides /home/oub/.emacs.d/elpa/org-20171116/org-duration
/home/oub/emacs/site-lisp/packages/org/org hides /home/oub/.emacs.d/elpa/org-20171116/org
/home/oub/emacs/site-lisp/packages/org/org-protocol hides /home/oub/.emacs.d/elpa/org-20171116/org-protocol
/home/oub/emacs/site-lisp/packages/org/ob-hledger hides /home/oub/.emacs.d/elpa/org-20171116/ob-hledger
/home/oub/emacs/site-lisp/packages/org/ox-html hides /home/oub/.emacs.d/elpa/org-20171116/ox-html
/home/oub/emacs/site-lisp/packages/org/org-src hides /home/oub/.emacs.d/elpa/org-20171116/org-src
/home/oub/emacs/site-lisp/packages/org/org-loaddefs hides /home/oub/.emacs.d/elpa/org-20171116/org-loaddefs
/home/oub/emacs/site-lisp/packages/org/org-macro hides /home/oub/.emacs.d/elpa/org-20171116/org-macro
/home/oub/emacs/site-lisp/packages/org/ob-fortran hides /home/oub/.emacs.d/elpa/org-20171116/ob-fortran
/home/oub/emacs/site-lisp/packages/org/org-mouse hides /home/oub/.emacs.d/elpa/org-20171116/org-mouse
/home/oub/emacs/site-lisp/packages/org/ob-makefile hides /home/oub/.emacs.d/elpa/org-20171116/ob-makefile
/home/oub/emacs/site-lisp/packages/org/org-plot hides /home/oub/.emacs.d/elpa/org-20171116/org-plot
/home/oub/emacs/site-lisp/packages/org/ob-J hides /home/oub/.emacs.d/elpa/org-20171116/ob-J
/home/oub/emacs/site-lisp/packages/org/ob-core hides /home/oub/.emacs.d/elpa/org-20171116/ob-core
/home/oub/emacs/site-lisp/packages/org/org-crypt hides /home/oub/.emacs.d/elpa/org-20171116/org-crypt
/home/oub/emacs/site-lisp/packages/org/ob-asymptote hides /home/oub/.emacs.d/elpa/org-20171116/ob-asymptote
/home/oub/emacs/site-lisp/packages/org/ob-exp hides /home/oub/.emacs.d/elpa/org-20171116/ob-exp
/home/oub/emacs/site-lisp/packages/org/ox-beamer hides /home/oub/.emacs.d/elpa/org-20171116/ox-beamer
/home/oub/emacs/site-lisp/packages/org/ob-sass hides /home/oub/.emacs.d/elpa/org-20171116/ob-sass
/home/oub/emacs/site-lisp/packages/org/ox-md hides /home/oub/.emacs.d/elpa/org-20171116/ox-md
/home/oub/emacs/site-lisp/versch/markdown-mode hides /home/oub/.emacs.d/elpa/markdown-mode-20171116.756/markdown-mode
/home/oub/emacs/site-lisp/versch/json hides /opt/emacs28/share/emacs/28.0.50/lisp/json
/home/oub/emacs/site-lisp/versch/abbrev hides /opt/emacs28/share/emacs/28.0.50/lisp/abbrev
/home/oub/emacs/site-lisp/versch/ffap hides /opt/emacs28/share/emacs/28.0.50/lisp/ffap
/home/oub/emacs/site-lisp/packages/remember-2.0/remember hides /opt/emacs28/share/emacs/28.0.50/lisp/textmodes/remember
/home/oub/emacs/site-lisp/packages/personal-lisp/refill hides /opt/emacs28/share/emacs/28.0.50/lisp/textmodes/refill
/home/oub/emacs/site-lisp/packages/org/org-agenda hides /opt/emacs28/share/emacs/28.0.50/lisp/org/org-agenda
/home/oub/emacs/site-lisp/packages/org/org-macs hides /opt/emacs28/share/emacs/28.0.50/lisp/org/org-macs
/home/oub/emacs/site-lisp/packages/org/org-goto hides /opt/emacs28/share/emacs/28.0.50/lisp/org/org-goto
/home/oub/emacs/site-lisp/packages/org/ob-picolisp hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-picolisp
/home/oub/emacs/site-lisp/packages/org/ob-lob hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-lob
/home/oub/emacs/site-lisp/packages/org/ox-org hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ox-org
/home/oub/emacs/site-lisp/packages/org/ox-texinfo hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ox-texinfo
/home/oub/emacs/site-lisp/packages/org/ob-ruby hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-ruby
/home/oub/emacs/site-lisp/packages/org/ob-sed hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-sed
/home/oub/emacs/site-lisp/packages/org/ob-stan hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-stan
/home/oub/emacs/site-lisp/packages/org/org-mobile hides /opt/emacs28/share/emacs/28.0.50/lisp/org/org-mobile
/home/oub/emacs/site-lisp/packages/org/ob-shell hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-shell
/home/oub/emacs/site-lisp/packages/org/ob-shen hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-shen
/home/oub/emacs/site-lisp/packages/org/org-faces hides /opt/emacs28/share/emacs/28.0.50/lisp/org/org-faces
/home/oub/emacs/site-lisp/packages/org/ox-publish hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ox-publish
/home/oub/emacs/site-lisp/packages/org/ob-mscgen hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-mscgen
/home/oub/emacs/site-lisp/packages/org/ob-plantuml hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-plantuml
/home/oub/emacs/site-lisp/packages/org/ob-ledger hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-ledger
/home/oub/emacs/site-lisp/packages/org/org-indent hides /opt/emacs28/share/emacs/28.0.50/lisp/org/org-indent
/home/oub/emacs/site-lisp/packages/org/ob-sass hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-sass
/home/oub/emacs/site-lisp/packages/org/org-ctags hides /opt/emacs28/share/emacs/28.0.50/lisp/org/org-ctags
/home/oub/emacs/site-lisp/packages/org/ob-forth hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-forth
/home/oub/emacs/site-lisp/packages/org/ob-maxima hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-maxima
/home/oub/emacs/site-lisp/packages/org/org-archive hides /opt/emacs28/share/emacs/28.0.50/lisp/org/org-archive
/home/oub/emacs/site-lisp/packages/org/ol hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ol
/home/oub/emacs/site-lisp/packages/org/ob-emacs-lisp hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-emacs-lisp
/home/oub/emacs/site-lisp/packages/org/ob-comint hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-comint
/home/oub/emacs/site-lisp/packages/org/ob-core hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-core
/home/oub/emacs/site-lisp/packages/org/ob-processing hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-processing
/home/oub/emacs/site-lisp/packages/org/ol-eww hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ol-eww
/home/oub/emacs/site-lisp/packages/org/ob-io hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-io
/home/oub/emacs/site-lisp/packages/org/ob-hledger hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-hledger
/home/oub/emacs/site-lisp/packages/org/ol-gnus hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ol-gnus
/home/oub/emacs/site-lisp/packages/org/ob-eshell hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-eshell
/home/oub/emacs/site-lisp/packages/org/org-colview hides /opt/emacs28/share/emacs/28.0.50/lisp/org/org-colview
/home/oub/emacs/site-lisp/packages/org/ob-org hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-org
/home/oub/emacs/site-lisp/packages/org/ob-lilypond hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-lilypond
/home/oub/emacs/site-lisp/packages/org/ob-R hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-R
/home/oub/emacs/site-lisp/packages/org/org-mouse hides /opt/emacs28/share/emacs/28.0.50/lisp/org/org-mouse
/home/oub/emacs/site-lisp/packages/org/org-macro hides /opt/emacs28/share/emacs/28.0.50/lisp/org/org-macro
/home/oub/emacs/site-lisp/packages/org/org-compat hides /opt/emacs28/share/emacs/28.0.50/lisp/org/org-compat
/home/oub/emacs/site-lisp/packages/org/ox-man hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ox-man
/home/oub/emacs/site-lisp/packages/org/ob-haskell hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-haskell
/home/oub/emacs/site-lisp/packages/org/ob-latex hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-latex
/home/oub/emacs/site-lisp/packages/org/ob-fortran hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-fortran
/home/oub/emacs/site-lisp/packages/org/ob-ocaml hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-ocaml
/home/oub/emacs/site-lisp/packages/org/ob-lisp hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-lisp
/home/oub/emacs/site-lisp/packages/org/ob-vala hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-vala
/home/oub/emacs/site-lisp/packages/org/ob-abc hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-abc
/home/oub/emacs/site-lisp/packages/org/org-tempo hides /opt/emacs28/share/emacs/28.0.50/lisp/org/org-tempo
/home/oub/emacs/site-lisp/packages/org/ox-icalendar hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ox-icalendar
/home/oub/emacs/site-lisp/packages/org/ob-ref hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-ref
/home/oub/emacs/site-lisp/packages/org/ol-docview hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ol-docview
/home/oub/emacs/site-lisp/packages/org/ol-bibtex hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ol-bibtex
/home/oub/emacs/site-lisp/packages/org/ob-groovy hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-groovy
/home/oub/emacs/site-lisp/packages/org/ol-bbdb hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ol-bbdb
/home/oub/emacs/site-lisp/packages/org/org-feed hides /opt/emacs28/share/emacs/28.0.50/lisp/org/org-feed
/home/oub/emacs/site-lisp/packages/org/ob-perl hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-perl
/home/oub/emacs/site-lisp/packages/org/ob-gnuplot hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-gnuplot
/home/oub/emacs/site-lisp/packages/org/ob-ebnf hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-ebnf
/home/oub/emacs/site-lisp/packages/org/ob-dot hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-dot
/home/oub/emacs/site-lisp/packages/org/org-capture hides /opt/emacs28/share/emacs/28.0.50/lisp/org/org-capture
/home/oub/emacs/site-lisp/packages/org/ob-matlab hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-matlab
/home/oub/emacs/site-lisp/packages/org/org-pcomplete hides /opt/emacs28/share/emacs/28.0.50/lisp/org/org-pcomplete
/home/oub/emacs/site-lisp/packages/org/ob-octave hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-octave
/home/oub/emacs/site-lisp/packages/org/org-num hides /opt/emacs28/share/emacs/28.0.50/lisp/org/org-num
/home/oub/emacs/site-lisp/packages/org/ob-coq hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-coq
/home/oub/emacs/site-lisp/packages/org/ox hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ox
/home/oub/emacs/site-lisp/packages/org/ox-odt hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ox-odt
/home/oub/emacs/site-lisp/packages/org/ob-awk hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-awk
/home/oub/emacs/site-lisp/packages/org/org-lint hides /opt/emacs28/share/emacs/28.0.50/lisp/org/org-lint
/home/oub/emacs/site-lisp/packages/org/ob-lua hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-lua
/home/oub/emacs/site-lisp/packages/org/ob-sql hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-sql
/home/oub/emacs/site-lisp/packages/org/ob-scheme hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-scheme
/home/oub/emacs/site-lisp/packages/org/ox-latex hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ox-latex
/home/oub/emacs/site-lisp/packages/org/org-clock hides /opt/emacs28/share/emacs/28.0.50/lisp/org/org-clock
/home/oub/emacs/site-lisp/packages/org/org-entities hides /opt/emacs28/share/emacs/28.0.50/lisp/org/org-entities
/home/oub/emacs/site-lisp/packages/org/org-inlinetask hides /opt/emacs28/share/emacs/28.0.50/lisp/org/org-inlinetask
/home/oub/emacs/site-lisp/packages/org/org-keys hides /opt/emacs28/share/emacs/28.0.50/lisp/org/org-keys
/home/oub/emacs/site-lisp/packages/org/org-habit hides /opt/emacs28/share/emacs/28.0.50/lisp/org/org-habit
/home/oub/emacs/site-lisp/packages/org/org-datetree hides /opt/emacs28/share/emacs/28.0.50/lisp/org/org-datetree
/home/oub/emacs/site-lisp/packages/org/ob-ditaa hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-ditaa
/home/oub/emacs/site-lisp/packages/org/ob-sqlite hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-sqlite
/home/oub/emacs/site-lisp/packages/org/ob-exp hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-exp
/home/oub/emacs/site-lisp/packages/org/ob-python hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-python
/home/oub/emacs/site-lisp/packages/org/ol-eshell hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ol-eshell
/home/oub/emacs/site-lisp/packages/org/ob-css hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-css
/home/oub/emacs/site-lisp/packages/org/ob-calc hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-calc
/home/oub/emacs/site-lisp/packages/org/ox-html hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ox-html
/home/oub/emacs/site-lisp/packages/org/org-attach hides /opt/emacs28/share/emacs/28.0.50/lisp/org/org-attach
/home/oub/emacs/site-lisp/packages/org/ox-ascii hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ox-ascii
/home/oub/emacs/site-lisp/packages/org/org-install hides /opt/emacs28/share/emacs/28.0.50/lisp/org/org-install
/home/oub/emacs/site-lisp/packages/org/ol-mhe hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ol-mhe
/home/oub/emacs/site-lisp/packages/org/org-element hides /opt/emacs28/share/emacs/28.0.50/lisp/org/org-element
/home/oub/emacs/site-lisp/packages/org/org-version hides /opt/emacs28/share/emacs/28.0.50/lisp/org/org-version
/home/oub/emacs/site-lisp/packages/org/org-id hides /opt/emacs28/share/emacs/28.0.50/lisp/org/org-id
/home/oub/emacs/site-lisp/packages/org/org-duration hides /opt/emacs28/share/emacs/28.0.50/lisp/org/org-duration
/home/oub/emacs/site-lisp/packages/org/ox-md hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ox-md
/home/oub/emacs/site-lisp/packages/org/org hides /opt/emacs28/share/emacs/28.0.50/lisp/org/org
/home/oub/emacs/site-lisp/packages/org/org-protocol hides /opt/emacs28/share/emacs/28.0.50/lisp/org/org-protocol
/home/oub/emacs/site-lisp/packages/org/org-src hides /opt/emacs28/share/emacs/28.0.50/lisp/org/org-src
/home/oub/emacs/site-lisp/packages/org/org-loaddefs hides /opt/emacs28/share/emacs/28.0.50/lisp/org/org-loaddefs
/home/oub/emacs/site-lisp/packages/org/ob-tangle hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-tangle
/home/oub/emacs/site-lisp/packages/org/ob-table hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-table
/home/oub/emacs/site-lisp/packages/org/ol-rmail hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ol-rmail
/home/oub/emacs/site-lisp/packages/org/ob-java hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-java
/home/oub/emacs/site-lisp/packages/org/ol-irc hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ol-irc
/home/oub/emacs/site-lisp/packages/org/ob-makefile hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-makefile
/home/oub/emacs/site-lisp/packages/org/org-plot hides /opt/emacs28/share/emacs/28.0.50/lisp/org/org-plot
/home/oub/emacs/site-lisp/packages/org/ob-J hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-J
/home/oub/emacs/site-lisp/packages/org/ob-clojure hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-clojure
/home/oub/emacs/site-lisp/packages/org/ob hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob
/home/oub/emacs/site-lisp/packages/org/org-timer hides /opt/emacs28/share/emacs/28.0.50/lisp/org/org-timer
/home/oub/emacs/site-lisp/packages/org/org-table hides /opt/emacs28/share/emacs/28.0.50/lisp/org/org-table
/home/oub/emacs/site-lisp/packages/org/ob-screen hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-screen
/home/oub/emacs/site-lisp/packages/org/ob-asymptote hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-asymptote
/home/oub/emacs/site-lisp/packages/org/ob-eval hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-eval
/home/oub/emacs/site-lisp/packages/org/org-crypt hides /opt/emacs28/share/emacs/28.0.50/lisp/org/org-crypt
/home/oub/emacs/site-lisp/packages/org/ol-w3m hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ol-w3m
/home/oub/emacs/site-lisp/packages/org/ob-js hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-js
/home/oub/emacs/site-lisp/packages/org/org-attach-git hides /opt/emacs28/share/emacs/28.0.50/lisp/org/org-attach-git
/home/oub/emacs/site-lisp/packages/org/ob-C hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ob-C
/home/oub/emacs/site-lisp/packages/org/ol-info hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ol-info
/home/oub/emacs/site-lisp/packages/org/ox-beamer hides /opt/emacs28/share/emacs/28.0.50/lisp/org/ox-beamer
/home/oub/emacs/site-lisp/packages/org/org-footnote hides /opt/emacs28/share/emacs/28.0.50/lisp/org/org-footnote
/home/oub/emacs/site-lisp/packages/org/org-list hides /opt/emacs28/share/emacs/28.0.50/lisp/org/org-list
/home/oub/emacs/site-lisp/versch/quickurl hides /opt/emacs28/share/emacs/28.0.50/lisp/net/quickurl
/home/oub/emacs/site-lisp/versch/hebrew hides /opt/emacs28/share/emacs/28.0.50/lisp/language/hebrew
/home/oub/emacs/site-lisp/versch/iso-cvt hides /opt/emacs28/share/emacs/28.0.50/lisp/international/iso-cvt
/home/oub/emacs/site-lisp/packages/personal-lisp/lisp hides /opt/emacs28/share/emacs/28.0.50/lisp/emacs-lisp/lisp
/home/oub/emacs/site-lisp/versch/longlines hides /opt/emacs28/share/emacs/28.0.50/lisp/obsolete/longlines

Features:
(shadow gnus-cite hashcash flyspell ispell orgalist footnote
auto-capitalize emacsbug gnus-topic cursor-sensor utf-7 nndraft nnmh
nnml gnutls network-stream bbdb-gnus bbdb-snarf mail-extr nnnil
gnus-agent gnus-srvr gnus-score score-mode nnvirtual gnus-msg nntp
gnus-cache cl-print help-fns radix-tree edebug-x edebug backtrace
which-func imenu org-w3m org-rmail org-mhe org-irc org-info org-gnus
org-eww org-docview doc-view jka-compr image-mode exif gited vc-git
gited-ci org-fstree id-manager bibtex_init org-rich-yank langtool
bibliothek goto-addr pdf-info tq a visual-filename-abbrev which-key
outorg_init navi-mode outorg-export outshine outshine-org-cmds outorg
calfw-org calfw fill-column-indicator my-dired dired-tar dired-zip
org-contacts org-annotate-file my-downcase-abbrev under
org-agenda-property check-my-bcc bbdbadapt-sc-leader quail-acc
exec-path-from-shell move-text dired-filetype-face column-enforce-mode
emoji-display emojify vigenere my-change-eq-ref org-web-tools eww mm-url
org-protocol-capture-html html2org org-sync-github org-sync-bb org-sync
org-cliplink org-cliplink-transport org-cliplink-string em-glob esh-util
my-indirect edit-indirect ox-gfm el2org thingatpt
org-table-move-single-cell csv-to-xlsx bitbucket bitbucket-issues
bitbucket-http request bitbucket-api hide-region redo+ my-org-ref-html
org-ref-core reftex-cite parsebib org-ref-glossary org-ref-bibtex
org-ref-citeproc key-chord hydra lv doi-utils ol-bibtex matlab-org-init
ob-ipython python tramp-sh tramp tramp-loaddefs trampver
tramp-integration files-x tramp-compat ls-lisp dash-functional
matlab-org-addon ox-epub ox-clip htmlize ob-C cc-mode cc-fonts cc-guess
cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs org-bibtex
bibtex goto-chg orgtbl-show-header visual-regexp hide-comnt
path-headerline-mode saveplace indirect radio browse-kill-ring+
browse-kill-ring uimage url-ftp url-file url-dired url-queue image-file
iimage elpakit shadchen latex-unicode-math-mode robin code-library gist
gh-gist gh-oauth gh-api logito gh-cache pcache gh-auth gh-url url-http
url-auth url-gw nsm writegood-mode writeroom-mode visual-fill-column
xemacs-compat weekly-view cal-desk-calendar lunar solar cal-dst
diary-lib diary-loaddefs holidays hol-loaddefs bm diff-hl smartrep
vc-dir ahg vc-annotate grep ewoc log-edit pcvs-util add-log align time
iso-transl iso-acc iso-cvt ref-master my-hg-commit auto-insert-tkld date
addl all iso-cleanupmath hgignore-mode vc-change-login backup-each-save
vc-ensure-checkin my-vc-addons vc latex-wcount dob-words latexdiff
daily-journal gnus-dired matlab-addons matlab-publish matlab_init
srecode/srt-mode semantic/analyze semantic/sort semantic/scope
semantic/analyze/fcn semantic/format srecode/template srecode/srt-wy
semantic/wisent semantic/wisent/wisent semantic/ctxt srecode/ctxt
semantic/tag-ls semantic/find srecode/compile srecode/dictionary
srecode/fields srecode/table srecode/map srecode semanticdb-matlab
semantic/db semantic/util-modes semantic/util semantic pp semantic/tag
semantic/lex semantic/fw mode-local cedet eieio-opt cl-extra speedbar
ezimage dframe cedet-matlab matlab-load cus-edit cus-start cus-load
gdb-mi bindat company-matlab-shell matlab-shell gud server matlab
matlab-compat pulse company matlab-boxquote my-sc-addons gnus-encrypt
gnorb-init gnorb gnorb-org gnorb-bbdb gnorb-registry gnorb-gnus
gnorb-utils org-agenda pcase org-capture org-attach org-id org-refile
nngnorb org_init ob-sqlite ob-ruby ob-python ob-ledger ob-latex
ob-gnuplot ob-dot ob-ditaa ob-R org-tempo tempo ox-mediawiki ob-rec
rec-mode hl-line org-tracktable orgtbl-join orglink org-auctex-keys
ox-beamer ob-octave ob-org org-addons dired-x org-install org-mime
ox-org org-protocol org-ref-sci-id org-ref-utils org-ref-pdf f
better-registers list-register query-replace-region ediff-addons
re-builder extview ox-pandoc ox-md 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-element avl-tree generator pandoc-export anti-niqqud sigadapt-simple
sigadapt sendmail bbdbadapt-sc-nested texify-article supercite regi
bbdbciteadpt filladapt next-longline recentf tree-widget moy-bbdb
my-addons ffap gnus-init bbdbadapt-top-posting my-smiley epa-file
boxquote rect gnus-registry registry eieio-base gnus-art mm-uu mml2015
mm-view mml-smime smime dig nnir gnus-sum url url-proxy url-privacy
url-expand url-methods url-history mailcap shr url-cookie url-domsuf
url-util svg xml dom gnus-group gnus-undo gnus-start gnus-cloud nnimap
nnmail mail-source utf7 netrc parse-time iso8601 gnus-spec gnus-int
gnus-range message rmc puny dired dired-loaddefs rfc822 mml mml-sec epa
derived epg epg-config mm-decode mm-bodies mm-encode gmm-utils
mailheader gnus-win gnus wid-edit nnoo nnheader gnus-util rmail
rmail-loaddefs text-property-search mail-utils pgp-mime-attach-key
my-gnus-mime-setting gnus-move-display-attachment bbdb-init
vc-dispatcher vc-hg diff-mode bbdb-expire bbdb-hooks mail-parse rfc2231
rfc2047 rfc2045 mm-util ietf-drums mail-prsvr bbdb-com warnings
mailabbrev bbdb-autoloads bbdbadapt-ispell bbdbadapt-gcc
bbdbadapt-encrypt my-bbdb-addons bbdb timezone org-remember org-datetree
org-inset-dblock org ob ob-tangle ob-ref ob-lob ob-table ob-exp
org-macro org-footnote org-src ob-comint org-pcomplete org-list
org-faces org-entities time-date noutline outline easy-mmode org-version
ob-emacs-lisp ob-core ob-eval org-table ol org-keys org-compat org-macs
org-loaddefs format-spec find-func cal-menu calendar cal-loaddefs
remember my-toggle-functions extra emacs_keys csv-mode sort comment
my-hebrew-init toggle my-mark quail help-mode my-latex-env
my-auctex-init tex-delete-comment latex-keys tex-addons item-kill
my-fill-latex-sentence advice my-change-prettify-list tex-mode compile
shell pcomplete comint ansi-color ring preview-latex auto-loads tex-site
flyspell-abbrev-multilang iv-sp-am-br-ger-fr-minor
arash-bibtex-changelog reftex_init reftex reftex-loaddefs reftex-vars
cdlatex_init edmacro kmacro gh-common gh-profile rx s marshal
eieio-compat ht dash finder-inf cl info package easymenu browse-url
url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs
eieio-loaddefs password-cache json subr-x map url-vars seq byte-opt gv
bytecomp byte-compile cconv 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 tab-bar menu-bar rfn-eshadow isearch timer
select scroll-bar mouse jit-lock font-lock syntax facemenu font-core
term/tty-colors frame minibuffer 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 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 cairo x-toolkit x multi-tty
make-network-process emacs)

Memory information:
((conses 16 1539823 79233)
 (symbols 48 61655 2)
 (strings 32 935683 12049)
 (string-bytes 1 41166833)
 (vectors 16 84980)
 (vector-slots 8 1403353 29833)
 (floats 8 923 123)
 (intervals 56 1440 0)
 (buffers 992 29)
 (heap 1024 178957 12527))





^ permalink raw reply	[flat|nested] 28+ messages in thread

* bug#45693: 28.0.50; abbrev does not expand two words any more
  2021-01-06 15:54 bug#45693: 28.0.50; abbrev does not expand two words any more Uwe Brauer
@ 2021-01-10 14:35 ` Lars Ingebrigtsen
  2021-01-10 15:51   ` Uwe Brauer
  0 siblings, 1 reply; 28+ messages in thread
From: Lars Ingebrigtsen @ 2021-01-10 14:35 UTC (permalink / raw)
  To: Uwe Brauer; +Cc: 45693

Uwe Brauer <oub@mat.ucm.es> writes:

> I swear that worked some time ago.

This was discussed on the emacs-devel mailing list, and apparently it
never worked?  But reading that discussion, it seems like this is
under-documented.  Could you suggest something for the manual after you
actually get this working?  :-)

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





^ permalink raw reply	[flat|nested] 28+ messages in thread

* bug#45693: 28.0.50; abbrev does not expand two words any more
  2021-01-10 14:35 ` Lars Ingebrigtsen
@ 2021-01-10 15:51   ` Uwe Brauer
  2021-01-10 15:52     ` Lars Ingebrigtsen
  0 siblings, 1 reply; 28+ messages in thread
From: Uwe Brauer @ 2021-01-10 15:51 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: Uwe Brauer, 45693

[-- Attachment #1: Type: text/plain, Size: 720 bytes --]

>>> "LI" == Lars Ingebrigtsen <larsi@gnus.org> writes:

> Uwe Brauer <oub@mat.ucm.es> writes:
>> I swear that worked some time ago.

> This was discussed on the emacs-devel mailing list, and apparently it
> never worked? 

Well RMS said no, Stefan said in principal yes.


>  But reading that discussion, it seems like this is
> under-documented.  Could you suggest something for the manual after you
> actually get this working?  :-)

Robert (Pluim) presented a solution that works, however it seems that
write-abbrev-file destroys Robert's construct in the .abbrev_defs
file. 

I am trying to set up a recipe to reproduce that behavior. If I do that,
should I open a new bug or just post it here?

[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 5673 bytes --]

^ permalink raw reply	[flat|nested] 28+ messages in thread

* bug#45693: 28.0.50; abbrev does not expand two words any more
  2021-01-10 15:51   ` Uwe Brauer
@ 2021-01-10 15:52     ` Lars Ingebrigtsen
  2021-01-10 17:22       ` Uwe Brauer
  2021-01-10 21:21       ` bug#45693: [two word expansion works, but write-abbrev-file destroys it] (was: bug#45693: 28.0.50; abbrev does not expand two words any more) Uwe Brauer
  0 siblings, 2 replies; 28+ messages in thread
From: Lars Ingebrigtsen @ 2021-01-10 15:52 UTC (permalink / raw)
  To: Uwe Brauer; +Cc: 45693

Uwe Brauer <oub@mat.ucm.es> writes:

> I am trying to set up a recipe to reproduce that behavior. If I do that,
> should I open a new bug or just post it here?

Just post it here.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





^ permalink raw reply	[flat|nested] 28+ messages in thread

* bug#45693: 28.0.50; abbrev does not expand two words any more
  2021-01-10 15:52     ` Lars Ingebrigtsen
@ 2021-01-10 17:22       ` Uwe Brauer
  2021-01-10 21:21       ` bug#45693: [two word expansion works, but write-abbrev-file destroys it] (was: bug#45693: 28.0.50; abbrev does not expand two words any more) Uwe Brauer
  1 sibling, 0 replies; 28+ messages in thread
From: Uwe Brauer @ 2021-01-10 17:22 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: Uwe Brauer, 45693

[-- Attachment #1: Type: text/plain, Size: 403 bytes --]

>>> "LI" == Lars Ingebrigtsen <larsi@gnus.org> writes:

> Uwe Brauer <oub@mat.ucm.es> writes:
>> I am trying to set up a recipe to reproduce that behavior. If I do that,
>> should I open a new bug or just post it here?

> Just post it here.

Ok I will I just found another problem of Robert's solution concerning
flyspell (which is currently maintained by the emacs developers).

I will post both soon.

[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 5673 bytes --]

^ permalink raw reply	[flat|nested] 28+ messages in thread

* bug#45693: [two word expansion works, but write-abbrev-file destroys it] (was: bug#45693: 28.0.50; abbrev does not expand two words any more)
  2021-01-10 15:52     ` Lars Ingebrigtsen
  2021-01-10 17:22       ` Uwe Brauer
@ 2021-01-10 21:21       ` Uwe Brauer
  2021-01-11 10:49         ` bug#45693: [two word expansion works, but write-abbrev-file destroys it] Robert Pluim
  1 sibling, 1 reply; 28+ messages in thread
From: Uwe Brauer @ 2021-01-10 21:21 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: Uwe Brauer, Robert Pluim, 45693

[-- Attachment #1: Type: text/plain, Size: 1649 bytes --]

>>> "LI" == Lars Ingebrigtsen <larsi@gnus.org> writes:

> Uwe Brauer <oub@mat.ucm.es> writes:
>> I am trying to set up a recipe to reproduce that behavior. If I do that,
>> should I open a new bug or just post it here?

> Just post it here.

The solution posted by Robert Pluim allows a two word expansion but will
be destroyed by write-abbrev-file

Step to reproduce the issue.

    1. Start emacs -Q (using master commit  "84ec57fe06e187f41a3546131d5dae3b185c3511")

    2. Create an abbrev file (see attachment) called .abbrev-doble_defs
       that contain 
       (define-abbrev-table 'fundamental-mode-abbrev-table
      '(
        ("asi" "así" nil :count 0)))

        (define-abbrev-table 'my-abbrev-table
      '(
        ("a que" "a qué" nil :count 0))
      "Uwe's table"
      :regexp "\\(\\w+ \\w+\\)")

    3. Load files with the following lines
       (setq abbrev-file-name "~/ALLES/HGs/init_files/Abbrev-Doble/.abbrev-new_defs")
       (read-abbrev-file "~/ALLES/HGs/init_files/Abbrev-Doble/.abbrev-double_defs")
       (setq-default abbrev-mode t)
       Or any other path that is convenient.

    4. Open new file in fundamental mode, say called new
       execute in that file
       (setq local-abbrev-table (list my-abbrev-table fundamental-mode-abbrev-table))

       Then asi--> así
       and 
       a que--> a quë

    5. (write-abbrev-file "~/ALLES/HGs/init_files/Abbrev-Doble/.abbrev-new_defs")

The part 
        (define-abbrev-table 'my-abbrev-table
      '(
        ("a que" "a qué" nil :count 0))
      "Uwe's table"
      :regexp "\\(\\w+ \\w+\\)")

Is gone!

[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 5673 bytes --]

^ permalink raw reply	[flat|nested] 28+ messages in thread

* bug#45693: [two word expansion works, but write-abbrev-file destroys it]
  2021-01-10 21:21       ` bug#45693: [two word expansion works, but write-abbrev-file destroys it] (was: bug#45693: 28.0.50; abbrev does not expand two words any more) Uwe Brauer
@ 2021-01-11 10:49         ` Robert Pluim
  2021-01-11 15:26           ` Eli Zaretskii
  0 siblings, 1 reply; 28+ messages in thread
From: Robert Pluim @ 2021-01-11 10:49 UTC (permalink / raw)
  To: Uwe Brauer; +Cc: Lars Ingebrigtsen, 45693

Uwe Brauer <oub@mat.ucm.es> writes:

> The part 
>         (define-abbrev-table 'my-abbrev-table
>       '(
>         ("a que" "a qué" nil :count 0))
>       "Uwe's table"
>       :regexp "\\(\\w+ \\w+\\)")
>
> Is gone!

Yes, and it gets worse. You can get around the 'setq
local-abbrev-table' issue by using the ':parents' property:

    (define-abbrev-table 'fundamental-mode-abbrev-table
      '(
        ("asi" "así" nil :count 0))
      "Fundamental"
      :parents (list my-abbrev-table))

    (define-abbrev-table 'my-abbrev-table
      '(
        ("a que" "a qué" nil :count 0))
      "Uwe's table"
      :regexp "\\(\\w+ \\w+\\)")


but write-abbrev-table then produces the following abbrev file:

;;-*-coding: utf-8;-*-
(define-abbrev-table 'fundamental-mode-abbrev-table
  '(
    ("asi" "así" nil :count 1)
   ))

(define-abbrev-table 'my-abbrev-table
  '(
    ("a que" "a qué" nil :count 1)
   ))

so write-abbrev-file doesnʼt write any of the properties specified in
define-abbrev-table to the abbrev file.

Robert





^ permalink raw reply	[flat|nested] 28+ messages in thread

* bug#45693: [two word expansion works, but write-abbrev-file destroys it]
  2021-01-11 10:49         ` bug#45693: [two word expansion works, but write-abbrev-file destroys it] Robert Pluim
@ 2021-01-11 15:26           ` Eli Zaretskii
  2021-01-11 15:50             ` Uwe Brauer
  0 siblings, 1 reply; 28+ messages in thread
From: Eli Zaretskii @ 2021-01-11 15:26 UTC (permalink / raw)
  To: Robert Pluim; +Cc: oub, larsi, 45693

> From: Robert Pluim <rpluim@gmail.com>
> Date: Mon, 11 Jan 2021 11:49:41 +0100
> Cc: Lars Ingebrigtsen <larsi@gnus.org>, 45693@debbugs.gnu.org
> 
> Uwe Brauer <oub@mat.ucm.es> writes:
> 
> > The part 
> >         (define-abbrev-table 'my-abbrev-table
> >       '(
> >         ("a que" "a qué" nil :count 0))
> >       "Uwe's table"
> >       :regexp "\\(\\w+ \\w+\\)")
> >
> > Is gone!
> 
> Yes, and it gets worse. You can get around the 'setq
> local-abbrev-table' issue by using the ':parents' property:
> 
>     (define-abbrev-table 'fundamental-mode-abbrev-table
>       '(
>         ("asi" "así" nil :count 0))
>       "Fundamental"
>       :parents (list my-abbrev-table))
> 
>     (define-abbrev-table 'my-abbrev-table
>       '(
>         ("a que" "a qué" nil :count 0))
>       "Uwe's table"
>       :regexp "\\(\\w+ \\w+\\)")
> 
> 
> but write-abbrev-table then produces the following abbrev file:
> 
> ;;-*-coding: utf-8;-*-
> (define-abbrev-table 'fundamental-mode-abbrev-table
>   '(
>     ("asi" "así" nil :count 1)
>    ))
> 
> (define-abbrev-table 'my-abbrev-table
>   '(
>     ("a que" "a qué" nil :count 1)
>    ))
> 
> so write-abbrev-file doesnʼt write any of the properties specified in
> define-abbrev-table to the abbrev file.

So does it mean we had better avoid describing this "feature" in the
docs, until and unless it gets fixed to be more user-friendly?





^ permalink raw reply	[flat|nested] 28+ messages in thread

* bug#45693: [two word expansion works, but write-abbrev-file destroys it]
  2021-01-11 15:26           ` Eli Zaretskii
@ 2021-01-11 15:50             ` Uwe Brauer
  2021-01-11 17:38               ` Robert Pluim
  0 siblings, 1 reply; 28+ messages in thread
From: Uwe Brauer @ 2021-01-11 15:50 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: oub, Robert Pluim, larsi, 45693

[-- Attachment #1: Type: text/plain, Size: 336 bytes --]



> So does it mean we had better avoid describing this "feature" in the
> docs, until and unless it gets fixed to be more user-friendly?

Well, I find it useful and found a real kludge by using two abbrev files
and associated minor modes. I think what is *really* missing is to 
improve/rewrite the write-abbrev-file function.

[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 5673 bytes --]

^ permalink raw reply	[flat|nested] 28+ messages in thread

* bug#45693: [two word expansion works, but write-abbrev-file destroys it]
  2021-01-11 15:50             ` Uwe Brauer
@ 2021-01-11 17:38               ` Robert Pluim
  2021-01-11 20:17                 ` Uwe Brauer
  0 siblings, 1 reply; 28+ messages in thread
From: Robert Pluim @ 2021-01-11 17:38 UTC (permalink / raw)
  To: Uwe Brauer; +Cc: larsi, 45693

Uwe Brauer <oub@mat.ucm.es> writes:

>> So does it mean we had better avoid describing this "feature" in the
>> docs, until and unless it gets fixed to be more user-friendly?
>
> Well, I find it useful and found a real kludge by using two abbrev files
> and associated minor modes. I think what is *really* missing is to 
> improve/rewrite the write-abbrev-file function.

At the very least we need to support :regexp and
:case-fixed. Something like this, maybe?

diff --git i/lisp/abbrev.el w/lisp/abbrev.el
index 65f7118385..21b4af095f 100644
--- i/lisp/abbrev.el
+++ w/lisp/abbrev.el
@@ -1074,7 +1074,11 @@ insert-abbrev-table-description
 a call to `define-abbrev-table' that when evaluated will define
 the abbrev table NAME exactly as it is currently defined.
 Abbrevs marked as \"system abbrevs\" are ignored."
-  (let ((symbols (abbrev--table-symbols name readable)))
+  (let* ((symbols (abbrev--table-symbols name readable))
+        (docstring (or (documentation-property name 'variable-documentation)
+                       "no documentation"))
+        (sym (obarray-get (symbol-value name) ""))
+        (props (symbol-plist sym)))
     (setq symbols (sort symbols 'string-lessp))
     (let ((standard-output (current-buffer)))
       (if readable
@@ -1090,7 +1094,13 @@ insert-abbrev-table-description
             (insert " '())\n\n")
           (insert "\n  '(\n")
           (mapc 'abbrev--write symbols)
-          (insert "   ))\n\n")))
+          (insert "   )\n")
+          (insert (format "%S\n" docstring))
+          (when (plist-member props :case-fixed)
+            (insert (format "%s %s\n" :case-fixed (plist-get props :case-fixed))))
+          (when (plist-member props :regexp)
+            (insert (format "%s %S\n" :regexp (plist-get props :regexp))))
+          (insert ")\n\n")))
       nil)))
 
 (defun abbrev--table-symbols (name &optional system)





^ permalink raw reply related	[flat|nested] 28+ messages in thread

* bug#45693: [two word expansion works, but write-abbrev-file destroys it]
  2021-01-11 17:38               ` Robert Pluim
@ 2021-01-11 20:17                 ` Uwe Brauer
  2021-01-11 20:38                   ` Robert Pluim
  0 siblings, 1 reply; 28+ messages in thread
From: Uwe Brauer @ 2021-01-11 20:17 UTC (permalink / raw)
  To: Uwe Brauer; +Cc: larsi, 45693

[-- Attachment #1: Type: text/plain, Size: 2400 bytes --]

>>> "RP" == Robert Pluim <rpluim@gmail.com> writes:

> Uwe Brauer <oub@mat.ucm.es> writes:
>>> So does it mean we had better avoid describing this "feature" in the
>>> docs, until and unless it gets fixed to be more user-friendly?
>> 
>> Well, I find it useful and found a real kludge by using two abbrev files
>> and associated minor modes. I think what is *really* missing is to 
>> improve/rewrite the write-abbrev-file function.

Thanks, 

    1. I pulled the last GNU Emacs master, 

    2. applied your patch, compiled, 

    3. started emacs -Q

    4. loaded the new abbrev file and

    5. then repeated the steps as described, 

but the write function behaved in the same way as before. Maybe I am too
tired and should retry it tomorrow.

Sorry.

> At the very least we need to support :regexp and
> :case-fixed. Something like this, maybe?

> diff --git i/lisp/abbrev.el w/lisp/abbrev.el
> index 65f7118385..21b4af095f 100644
> --- i/lisp/abbrev.el
> +++ w/lisp/abbrev.el
> @@ -1074,7 +1074,11 @@ insert-abbrev-table-description
>  a call to `define-abbrev-table' that when evaluated will define
>  the abbrev table NAME exactly as it is currently defined.
>  Abbrevs marked as \"system abbrevs\" are ignored."
> -  (let ((symbols (abbrev--table-symbols name readable)))
> +  (let* ((symbols (abbrev--table-symbols name readable))
> +        (docstring (or (documentation-property name 'variable-documentation)
> +                       "no documentation"))
> +        (sym (obarray-get (symbol-value name) ""))
> +        (props (symbol-plist sym)))
>      (setq symbols (sort symbols 'string-lessp))
>      (let ((standard-output (current-buffer)))
>        (if readable
> @@ -1090,7 +1094,13 @@ insert-abbrev-table-description
>              (insert " '())\n\n")
>            (insert "\n  '(\n")
>            (mapc 'abbrev--write symbols)
> -          (insert "   ))\n\n")))
> +          (insert "   )\n")
> +          (insert (format "%S\n" docstring))
> +          (when (plist-member props :case-fixed)
> +            (insert (format "%s %s\n" :case-fixed (plist-get props :case-fixed))))
> +          (when (plist-member props :regexp)
> +            (insert (format "%s %S\n" :regexp (plist-get props :regexp))))
> +          (insert ")\n\n")))
>        nil)))
 
>  (defun abbrev--table-symbols (name &optional system)

[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 5673 bytes --]

^ permalink raw reply	[flat|nested] 28+ messages in thread

* bug#45693: [two word expansion works, but write-abbrev-file destroys it]
  2021-01-11 20:17                 ` Uwe Brauer
@ 2021-01-11 20:38                   ` Robert Pluim
  2021-01-11 20:48                     ` Uwe Brauer
  0 siblings, 1 reply; 28+ messages in thread
From: Robert Pluim @ 2021-01-11 20:38 UTC (permalink / raw)
  To: Uwe Brauer; +Cc: larsi, 45693

Uwe Brauer <oub@mat.ucm.es> writes:

>>>> "RP" == Robert Pluim <rpluim@gmail.com> writes:
>
>> Uwe Brauer <oub@mat.ucm.es> writes:
>>>> So does it mean we had better avoid describing this "feature" in the
>>>> docs, until and unless it gets fixed to be more user-friendly?
>>> 
>>> Well, I find it useful and found a real kludge by using two abbrev files
>>> and associated minor modes. I think what is *really* missing is to 
>>> improve/rewrite the write-abbrev-file function.
>
> Thanks, 
>
>     1. I pulled the last GNU Emacs master, 
>
>     2. applied your patch, compiled, 
>
>     3. started emacs -Q
>
>     4. loaded the new abbrev file and
>

Which new abbrev file? You'll need to do at least some
'define-abbrev-table' followed by 'write-abbrev-file' (and the patch
doesnʼt solve the :parents issue).

Robert





^ permalink raw reply	[flat|nested] 28+ messages in thread

* bug#45693: [two word expansion works, but write-abbrev-file destroys it]
  2021-01-11 20:38                   ` Robert Pluim
@ 2021-01-11 20:48                     ` Uwe Brauer
  2021-01-11 21:03                       ` Robert Pluim
  0 siblings, 1 reply; 28+ messages in thread
From: Uwe Brauer @ 2021-01-11 20:48 UTC (permalink / raw)
  To: Uwe Brauer; +Cc: larsi, Robert Pluim, 45693

[-- Attachment #1: Type: text/plain, Size: 512 bytes --]


> Uwe Brauer <oub@mat.ucm.es> writes:

> Which new abbrev file? You'll need to do at least some
> 'define-abbrev-table' followed by 'write-abbrev-file' (and the patch
> doesnʼt solve the :parents issue).
Ah, ok I was hoping that the 

(define-abbrev-table 'my-abbrev-table
      '(
        ("a que" "a qué" nil :count 0))
      "Uwe's table"
      :regexp "\\(\\w+ \\w+\\)")

Would be left intact by the write-abbrev-file. 

Ok tomorrow I try it again.
Maybe it did something wrong.

Uwe 

[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 5673 bytes --]

^ permalink raw reply	[flat|nested] 28+ messages in thread

* bug#45693: [two word expansion works, but write-abbrev-file destroys it]
  2021-01-11 20:48                     ` Uwe Brauer
@ 2021-01-11 21:03                       ` Robert Pluim
  2021-01-12  8:01                         ` Uwe Brauer
  0 siblings, 1 reply; 28+ messages in thread
From: Robert Pluim @ 2021-01-11 21:03 UTC (permalink / raw)
  To: Uwe Brauer; +Cc: larsi, 45693

Uwe Brauer <oub@mat.ucm.es> writes:

>> Uwe Brauer <oub@mat.ucm.es> writes:
>
>> Which new abbrev file? You'll need to do at least some
>> 'define-abbrev-table' followed by 'write-abbrev-file' (and the patch
>> doesnʼt solve the :parents issue).
> Ah, ok I was hoping that the 
>
> (define-abbrev-table 'my-abbrev-table
>       '(
>         ("a que" "a qué" nil :count 0))
>       "Uwe's table"
>       :regexp "\\(\\w+ \\w+\\)")
>
> Would be left intact by the write-abbrev-file. 
>

It should have been, and was in my testing

> Ok tomorrow I try it again.
> Maybe it did something wrong.

Iʼve only tested my code, not proven it bug-free :-)

Robert





^ permalink raw reply	[flat|nested] 28+ messages in thread

* bug#45693: [two word expansion works, but write-abbrev-file destroys it]
  2021-01-11 21:03                       ` Robert Pluim
@ 2021-01-12  8:01                         ` Uwe Brauer
  2021-01-12 10:34                           ` Robert Pluim
  0 siblings, 1 reply; 28+ messages in thread
From: Uwe Brauer @ 2021-01-12  8:01 UTC (permalink / raw)
  To: Robert Pluim; +Cc: Uwe Brauer, larsi, 45693

[-- Attachment #1: Type: text/plain, Size: 1242 bytes --]


> Uwe Brauer <oub@mat.ucm.es> writes:

> It should have been, and was in my testing


> Iʼve only tested my code, not proven it bug-free :-)


I think I found a bug. I restart my emacs with your patched abbrev file
and all my stuff, then I obtain the following error:

Debugger entered--Lisp error: (file-missing "Cannot open load file" "No such file or directory" ".abbrev_defs")
  load(".abbrev_defs" nil t)
  read-abbrev-file(".abbrev_defs" t)
  quietly-read-abbrev-file(".abbrev_defs")
  command-line()
  normal-top-level()


This is part of the list of my files in the home directory

  lrwxrwxrwx   1 oub  oub    43 ene 11 21:14 .abbrev_defs -> /home/oub/ALLES/HGs/init_files/.abbrev_defs
  -rw-r--r--   1 oub  oub     0 mar 12  2018 .abbrev_defs_xemacs
  lrwxrwxrwx   1 oub  oub    49 feb  6  2018 .abbrev-emacs_defs -> /home/oub/ALLES/HGs/init_files/.abbrev-emacs_defs
  -rw-rw-r--   1 oub  oub  1,4K ene 11 20:57 abbrev-patch
  -rw-rw-r--   1 oub  oub  1,4K nov 27 08:41 abstract2.patch
  -rw-------   1 oub  oub  1,4K nov 27 08:40 abstract.patch

So what works is 
(read-abbrev-file "~/.abbrev_defs")

But not

(read-abbrev-file ".abbrev_defs")

 what currently emacs is trying to do.

Uwe 

[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 5673 bytes --]

^ permalink raw reply	[flat|nested] 28+ messages in thread

* bug#45693: [two word expansion works, but write-abbrev-file destroys it]
  2021-01-12  8:01                         ` Uwe Brauer
@ 2021-01-12 10:34                           ` Robert Pluim
  2021-01-12 13:26                             ` Uwe Brauer
  2021-01-12 16:45                             ` Uwe Brauer
  0 siblings, 2 replies; 28+ messages in thread
From: Robert Pluim @ 2021-01-12 10:34 UTC (permalink / raw)
  To: Uwe Brauer; +Cc: larsi, 45693

Uwe Brauer <oub@mat.ucm.es> writes:

>> Uwe Brauer <oub@mat.ucm.es> writes:
>
>> It should have been, and was in my testing
>
>
>> Iʼve only tested my code, not proven it bug-free :-)
>
>
> I think I found a bug. I restart my emacs with your patched abbrev file
> and all my stuff, then I obtain the following error:
>
> Debugger entered--Lisp error: (file-missing "Cannot open load file" "No such file or directory" ".abbrev_defs")
>   load(".abbrev_defs" nil t)
>   read-abbrev-file(".abbrev_defs" t)
>   quietly-read-abbrev-file(".abbrev_defs")
>   command-line()
>   normal-top-level()
>

What's your 'abbrev-file-name' set to? Emacs uses 'load' to read it,
so it should be a complete pathname, ie "~/.abbrev_defs", or it should
be in your 'load-path' somewhere.

Robert





^ permalink raw reply	[flat|nested] 28+ messages in thread

* bug#45693: [two word expansion works, but write-abbrev-file destroys it]
  2021-01-12 10:34                           ` Robert Pluim
@ 2021-01-12 13:26                             ` Uwe Brauer
  2021-01-12 16:45                             ` Uwe Brauer
  1 sibling, 0 replies; 28+ messages in thread
From: Uwe Brauer @ 2021-01-12 13:26 UTC (permalink / raw)
  To: Uwe Brauer; +Cc: larsi, 45693

[-- Attachment #1: Type: text/plain, Size: 1676 bytes --]

>>> "RP" == Robert Pluim <rpluim@gmail.com> writes:

> Uwe Brauer <oub@mat.ucm.es> writes:
>>> Uwe Brauer <oub@mat.ucm.es> writes:
>> 
>>> It should have been, and was in my testing
>> 
>> 
>>> Iʼve only tested my code, not proven it bug-free :-)
>> 
>> 
>> I think I found a bug. I restart my emacs with your patched abbrev file
>> and all my stuff, then I obtain the following error:
>> 
>> Debugger entered--Lisp error: (file-missing "Cannot open load file" "No such file or directory" ".abbrev_defs")
>> load(".abbrev_defs" nil t)
>> read-abbrev-file(".abbrev_defs" t)
>> quietly-read-abbrev-file(".abbrev_defs")
>> command-line()
>> normal-top-level()
>> 

> What's your 'abbrev-file-name' set to? Emacs uses 'load' to read it,

,----
| abbrev-file-name is a variable defined in ‘abbrev.el’.
| Its value is ".abbrev_defs"
| Original value was 
| "/home/oub/.abbrev_defs"
| 
|   You can customize this variable.
| 
| Documentation:
| Default name of file from which to read abbrevs.
`----

The default value .abbrev_defs seems odd to me shouldn't it per default
be
"~/.abbrev_defs" at least for Unix/BSD dialects and MacOS?

> so it should be a complete pathname, ie "~/.abbrev_defs", or it should
> be in your 'load-path' somewhere.

But the point is. If I use the vanilla abbrev file from master I don't
get an error, with your patched version I do, but I think I know what's
up, I had some old abbrev.el file somewhere in my load path. Because
with abbrev vanilla from emacs master, my abbrevs are not loaded.
I check that and re try your patched version later (I still struggle
with flyspells abbrev mechanism).


[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 5673 bytes --]

^ permalink raw reply	[flat|nested] 28+ messages in thread

* bug#45693: [two word expansion works, but write-abbrev-file destroys it]
  2021-01-12 10:34                           ` Robert Pluim
  2021-01-12 13:26                             ` Uwe Brauer
@ 2021-01-12 16:45                             ` Uwe Brauer
  2021-01-12 17:59                               ` Robert Pluim
  1 sibling, 1 reply; 28+ messages in thread
From: Uwe Brauer @ 2021-01-12 16:45 UTC (permalink / raw)
  To: Uwe Brauer; +Cc: larsi, 45693

[-- Attachment #1: Type: text/plain, Size: 869 bytes --]


> Uwe Brauer <oub@mat.ucm.es> writes:

> What's your 'abbrev-file-name' set to? Emacs uses 'load' to read it,
> so it should be a complete pathname, ie "~/.abbrev_defs", or it should
> be in your 'load-path' somewhere.

Good and bad news. I repeated the test carefully looking around for old
abbrev.el or .abbrev_defs file.

    1. Good, I can confirm that your patched abbrev.el works in the
       sense that write-abbrev-file does not destroy the properties of
       the table.

    2. However I tried to add a local abbrev (or an inverse local
       abbrev) in the fundamental mode, but I obtain 

obarray-get: Wrong type argument: vectorp, ([## 0 0 0 0 0 0 0 0 0 ...] [## 0 0 0 0 0 0 0 0 0 ...]) [2 times]

That is maybe the reason I run into difficulties if I want to use
flyspell's abbrev mode if a correction occurs. 

Regards

Uwe 

[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 5673 bytes --]

^ permalink raw reply	[flat|nested] 28+ messages in thread

* bug#45693: [two word expansion works, but write-abbrev-file destroys it]
  2021-01-12 16:45                             ` Uwe Brauer
@ 2021-01-12 17:59                               ` Robert Pluim
  2021-01-13  7:37                                 ` Uwe Brauer
  0 siblings, 1 reply; 28+ messages in thread
From: Robert Pluim @ 2021-01-12 17:59 UTC (permalink / raw)
  To: Uwe Brauer; +Cc: larsi, 45693

Uwe Brauer <oub@mat.ucm.es> writes:

>> Uwe Brauer <oub@mat.ucm.es> writes:
>
>> What's your 'abbrev-file-name' set to? Emacs uses 'load' to read it,
>> so it should be a complete pathname, ie "~/.abbrev_defs", or it should
>> be in your 'load-path' somewhere.
>
> Good and bad news. I repeated the test carefully looking around for old
> abbrev.el or .abbrev_defs file.
>
>     1. Good, I can confirm that your patched abbrev.el works in the
>        sense that write-abbrev-file does not destroy the properties of
>        the table.
>
>     2. However I tried to add a local abbrev (or an inverse local
>        abbrev) in the fundamental mode, but I obtain 
>
> obarray-get: Wrong type argument: vectorp, ([## 0 0 0 0 0 0 0 0 0 ...] [## 0 0 0 0 0 0 0 0 0 ...]) [2 times]

Could you tell me exactly what you did? I suspect there are more
places that are not aware of the :parents property that need fixing.

> That is maybe the reason I run into difficulties if I want to use
> flyspell's abbrev mode if a correction occurs. 

I donʼt use flyspell. Tell me more and we can look at fixing that as
well.

Robert





^ permalink raw reply	[flat|nested] 28+ messages in thread

* bug#45693: [two word expansion works, but write-abbrev-file destroys it]
  2021-01-12 17:59                               ` Robert Pluim
@ 2021-01-13  7:37                                 ` Uwe Brauer
  2021-01-13  9:16                                   ` Robert Pluim
  0 siblings, 1 reply; 28+ messages in thread
From: Uwe Brauer @ 2021-01-13  7:37 UTC (permalink / raw)
  To: Uwe Brauer; +Cc: larsi, Robert Pluim, 45693


[-- Attachment #1.1: Type: text/plain, Size: 2549 bytes --]

>>> "RP" == Robert Pluim <rpluim@gmail.com> writes:

> Uwe Brauer <oub@mat.ucm.es> writes:
>>> Uwe Brauer <oub@mat.ucm.es> writes:
>> 
>>> What's your 'abbrev-file-name' set to? Emacs uses 'load' to read it,
>>> so it should be a complete pathname, ie "~/.abbrev_defs", or it should
>>> be in your 'load-path' somewhere.
>> 
>> Good and bad news. I repeated the test carefully looking around for old
>> abbrev.el or .abbrev_defs file.
>> 
>> 1. Good, I can confirm that your patched abbrev.el works in the
>> sense that write-abbrev-file does not destroy the properties of
>> the table.
>> 
>> 2. However I tried to add a local abbrev (or an inverse local
>> abbrev) in the fundamental mode, but I obtain 
>> 
>> obarray-get: Wrong type argument: vectorp, ([## 0 0 0 0 0 0 0 0 0 ...] [## 0 0 0 0 0 0 0 0 0 ...]) [2 times]

> Could you tell me exactly what you did? I suspect there are more
> places that are not aware of the :parents property that need fixing.

I will first describe the problem adding a local abbrev, I suspect that
fixing that problem would also fix the flyspell problem, since flyspell
uses the local-abbrev command (at least in my setting: I have
set
(setq flyspell-use-global-abbrev-table-p nil))



Steps to reproduce (I attach the files for convenience)

    1. Start emacs -Q

    2. Load the patched abbrev.el provided by Robert

    3. Load or execute the following

       a. (setq abbrev-file-name "~/Abbrev-Doble/.abbrev-new_defs") ; or
          any other path

       b. (read-abbrev-file "~/Abbrev-Doble/.abbrev-double_defs") ; file attached

       c. (setq-default abbrev-mode t)

    4. Open a file in fundamental mode, called say new.

    5. Execute (setq local-abbrev-table (list my-abbrev-table fundamental-mode-abbrev-table))

    6. Check via edit-abbrevs (note: the properties are not displayed by
       this function! Should that be fixed also?

    7. Check whether the doble expansion works:

       a. Type a que

       b. Indeed it works

    8. Add a local (inverse) abbrev:

       a. Type nacion

       b. Put the cursor at the end of the word

       c. Type C-x a i l

       d. Type nación

       e. The error pops up
          obarray-get: Wrong type argument: vectorp, ([## 0 0 0 0 0 0 0 0 0 ...] [## 0 0 0 0 0 0 0 0 0 ...])

    9. Repeat step 7 but use C-x a i g

       a. No error! Understandable because the global abbrev table does
          not have properties.

Did I explain that enough?

Uwe 



[-- Attachment #1.2: .abbrev-double_defs --]
[-- Type: application/octet-stream, Size: 292 bytes --]

;;-*-coding: utf-8;-*-
(define-abbrev-table 'fundamental-mode-abbrev-table
  '(
    ("asi" "así" nil :count 0)
   ))


(define-abbrev-table 'my-abbrev-table
  '(
    ("a que" "a qué" nil :count 0)
    ("a final" "al final" nil :count 34)
    )
  "Uwe's table"
  :regexp "\\(\\w+ \\w+\\)")


[-- Attachment #1.3: new --]
[-- Type: application/octet-stream, Size: 366 bytes --]


(setq local-abbrev-table (list my-abbrev-table fundamental-mode-abbrev-table))

así 

a que 

nacion nación

(write-abbrev-file "~/Abbrev-Doble/.abbrev-new_defs")


# flyspell stuff
(ispell-change-dictionary "castellano8" nil)
(global-set-key [(shift home)]   'flyspell-auto-correct-word)

(setq flyspell-abbrev-p t)
(setq flyspell-use-global-abbrev-table-p nil)

[-- Attachment #1.4: test-doble-abbrev.el --]
[-- Type: application/emacs-lisp, Size: 236 bytes --]

[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 5673 bytes --]

^ permalink raw reply	[flat|nested] 28+ messages in thread

* bug#45693: [two word expansion works, but write-abbrev-file destroys it]
  2021-01-13  7:37                                 ` Uwe Brauer
@ 2021-01-13  9:16                                   ` Robert Pluim
  2021-01-13  9:28                                     ` Uwe Brauer
  0 siblings, 1 reply; 28+ messages in thread
From: Robert Pluim @ 2021-01-13  9:16 UTC (permalink / raw)
  To: Uwe Brauer; +Cc: larsi, 45693

Uwe Brauer <oub@mat.ucm.es> writes:

> Steps to reproduce (I attach the files for convenience)
>
>     1. Start emacs -Q
>
>     2. Load the patched abbrev.el provided by Robert
>
>     3. Load or execute the following
>
>        a. (setq abbrev-file-name "~/Abbrev-Doble/.abbrev-new_defs") ; or
>           any other path
>
>        b. (read-abbrev-file "~/Abbrev-Doble/.abbrev-double_defs") ; file attached
>
>        c. (setq-default abbrev-mode t)
>
>     4. Open a file in fundamental mode, called say new.
>
>     5. Execute (setq local-abbrev-table (list my-abbrev-table fundamental-mode-abbrev-table))
>
>     6. Check via edit-abbrevs (note: the properties are not displayed by
>        this function! Should that be fixed also?
>
>     7. Check whether the doble expansion works:
>
>        a. Type a que
>
>        b. Indeed it works
>
>     8. Add a local (inverse) abbrev:
>
>        a. Type nacion
>
>        b. Put the cursor at the end of the word
>
>        c. Type C-x a i l
>
>        d. Type nación
>
>        e. The error pops up
>           obarray-get: Wrong type argument: vectorp, ([## 0 0 0 0 0 0 0 0 0 ...] [## 0 0 0 0 0 0 0 0 0 ...])
>
>     9. Repeat step 7 but use C-x a i g
>
>        a. No error! Understandable because the global abbrev table does
>           not have properties.
>
> Did I explain that enough?
>

Yes, perfect, thanks. inverse-add-mode-abbrev tries to add the abbrev
to 'local-abbrev-table', which is a list here:

Debugger entered--Lisp error: (wrong-type-argument vectorp ([## 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 a\ que 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...] [## 0 0 0 0 0 0 asi 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...]))
  intern-soft("" ([## 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 a\ que 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...] [## 0 0 0 0 0 0 asi 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...]))
  obarray-get(([## 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 a\ que 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...] [## 0 0 0 0 0 0 asi 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...]) "")
  abbrev-table-get(([## 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 a\ que 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...] [## 0 0 0 0 0 0 asi 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...]) :abbrev-table-modiff)
  define-abbrev(([## 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 a\ que 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...] [## 0 0 0 0 0 0 asi 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...]) "nacion" "the nation")
  inverse-add-abbrev(([## 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 a\ que 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...] [## 0 0 0 0 0 0 asi 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...]) "Mode" 1)
  inverse-add-mode-abbrev(1)
  funcall-interactively(inverse-add-mode-abbrev 1)
  call-interactively(inverse-add-mode-abbrev nil nil)
  command-execute(inverse-add-mode-abbrev)

So itʼs explicitly documented that 'local-abbrev-table' can be a
*list* of abbrev tables, but lots of the abbrev code assumes that
it gets passed a single table.

Itʼs easy enough to check for 'consp' in such cases, but then which of
tables in that list should we add the abbrev to? The first one? All of
them?

Iʼm leaning towards "first, and document that you should put the most
specific table at the front of the list of local abbrev tables", but
Iʼd welcome opinions from others.

Robert





^ permalink raw reply	[flat|nested] 28+ messages in thread

* bug#45693: [two word expansion works, but write-abbrev-file destroys it]
  2021-01-13  9:16                                   ` Robert Pluim
@ 2021-01-13  9:28                                     ` Uwe Brauer
  2021-01-13  9:39                                       ` Robert Pluim
  0 siblings, 1 reply; 28+ messages in thread
From: Uwe Brauer @ 2021-01-13  9:28 UTC (permalink / raw)
  To: Uwe Brauer; +Cc: larsi, 45693

[-- Attachment #1: Type: text/plain, Size: 3094 bytes --]


> Uwe Brauer <oub@mat.ucm.es> writes:

> Yes, perfect, thanks. inverse-add-mode-abbrev tries to add the abbrev
> to 'local-abbrev-table', which is a list here:

> Debugger entered--Lisp error: (wrong-type-argument vectorp ([## 0 0 0
> 0 0 0 0 0 0 0 0 0 0 0 0 0 0 a\ que 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
> 0 0 0 0 0 0 0 0 0 0 0 0 0 ...] [## 0 0 0 0 0 0 asi 0 0 0 0 0 0 0 0 0 0
> 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...]))
>   intern-soft("" ([## 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 a\ que 0 0 0 0
> 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...] [## 0 0 0 0
> 0 0 asi 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
> 0 0 0 0 0 0 0 0 0 0 0 ...]))
>   obarray-get(([## 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 a\ que 0 0 0 0 0
> 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...] [## 0 0 0 0 0
> 0 asi 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
> 0 0 0 0 0 0 0 0 0 0 ...]) "")
>   abbrev-table-get(([## 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 a\ que 0 0 0
> 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...] [## 0 0 0
> 0 0 0 asi 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
> 0 0 0 0 0 0 0 0 0 0 0 0 ...]) :abbrev-table-modiff)
>   define-abbrev(([## 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 a\ que 0 0 0 0
> 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...] [## 0 0 0 0
> 0 0 asi 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
> 0 0 0 0 0 0 0 0 0 0 0 ...]) "nacion" "the nation")
>   inverse-add-abbrev(([## 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 a\ que 0 0
> 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...] [## 0 0
> 0 0 0 0 asi 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
> 0 0 0 0 0 0 0 0 0 0 0 0 0 ...]) "Mode" 1)
>   inverse-add-mode-abbrev(1)
>   funcall-interactively(inverse-add-mode-abbrev 1)
>   call-interactively(inverse-add-mode-abbrev nil nil)
>   command-execute(inverse-add-mode-abbrev)

> So itʼs explicitly documented that 'local-abbrev-table' can be a
> *list* of abbrev tables, but lots of the abbrev code assumes that
> it gets passed a single table.

> Itʼs easy enough to check for 'consp' in such cases, but then which of
> tables in that list should we add the abbrev to? The first one? All of
> them?

> Iʼm leaning towards "first, and document that you should put the most
> specific table at the front of the list of local abbrev tables", but
> Iʼd welcome opinions from others.

I am not entirely sure, I understand the logic behind this. To give you
a concrete example. (That enters now the flyspell problem).

I have defined for each language I use flypsell/ispell a minor mode and
a corresponding local-abbrev table.

    1. American

    2. British

    3. German

    4. Spanish

    5. French

    6. And even Hebrew (but we can leave that may out for the moment).

Now say I am in latex mode and turn spelling for American on (which in
turn turn the minor mode american-spelling on), is then the local abbrev
table the first in that list?


Uwe 

[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 5673 bytes --]

^ permalink raw reply	[flat|nested] 28+ messages in thread

* bug#45693: [two word expansion works, but write-abbrev-file destroys it]
  2021-01-13  9:28                                     ` Uwe Brauer
@ 2021-01-13  9:39                                       ` Robert Pluim
  2021-01-13  9:51                                         ` Uwe Brauer
  0 siblings, 1 reply; 28+ messages in thread
From: Robert Pluim @ 2021-01-13  9:39 UTC (permalink / raw)
  To: Uwe Brauer; +Cc: larsi, 45693

Uwe Brauer <oub@mat.ucm.es> writes:

>> So itʼs explicitly documented that 'local-abbrev-table' can be a
>> *list* of abbrev tables, but lots of the abbrev code assumes that
>> it gets passed a single table.
>
>> Itʼs easy enough to check for 'consp' in such cases, but then which of
>> tables in that list should we add the abbrev to? The first one? All of
>> them?
>
>> Iʼm leaning towards "first, and document that you should put the most
>> specific table at the front of the list of local abbrev tables", but
>> Iʼd welcome opinions from others.
>
> I am not entirely sure, I understand the logic behind this. To give you
> a concrete example. (That enters now the flyspell problem).
>
> I have defined for each language I use flypsell/ispell a minor mode and
> a corresponding local-abbrev table.
>
>     1. American
>
>     2. British
>
>     3. German
>
>     4. Spanish
>
>     5. French
>
>     6. And even Hebrew (but we can leave that may out for the moment).
>
> Now say I am in latex mode and turn spelling for American on (which in
> turn turn the minor mode american-spelling on), is then the local abbrev
> table the first in that list?

Thatʼs under the control of your code, no? Itʼs whatever does 'setq
local-abbrev-table (list ... ...)'

Robert





^ permalink raw reply	[flat|nested] 28+ messages in thread

* bug#45693: [two word expansion works, but write-abbrev-file destroys it]
  2021-01-13  9:39                                       ` Robert Pluim
@ 2021-01-13  9:51                                         ` Uwe Brauer
  2021-01-13 10:09                                           ` Robert Pluim
  0 siblings, 1 reply; 28+ messages in thread
From: Uwe Brauer @ 2021-01-13  9:51 UTC (permalink / raw)
  To: Uwe Brauer; +Cc: larsi, 45693

[-- Attachment #1: Type: text/plain, Size: 862 bytes --]


> Uwe Brauer <oub@mat.ucm.es> writes:

> Thatʼs under the control of your code, no? Itʼs whatever does 'setq
> local-abbrev-table (list ... ...)'


That is what I expect. I have 
(define-minor-mode american-minor-mode 
    nil nil nil nil
    (setq local-abbrev-table
          (if american-minor-mode
              american-minor-mode-abbrev-table)))

Now if in LaTeX (mayor) mode (which has its own local-abbrev-table)
I turn on the american mode, in my understanding the local-abbrev-table
of american minor mode should be first in the list. At least if I add an
abbrev (via flyspell) it is added to the amercian-minor-mode-abbrev-table
not to the latex-mode-abbrev-table.

If that is the case I would say yes to your question, but I am not sure
how to check that it is indeed the first in the list. (I only know it is «activated»)

[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 5673 bytes --]

^ permalink raw reply	[flat|nested] 28+ messages in thread

* bug#45693: [two word expansion works, but write-abbrev-file destroys it]
  2021-01-13  9:51                                         ` Uwe Brauer
@ 2021-01-13 10:09                                           ` Robert Pluim
  2021-01-13 13:18                                             ` Uwe Brauer
  0 siblings, 1 reply; 28+ messages in thread
From: Robert Pluim @ 2021-01-13 10:09 UTC (permalink / raw)
  To: Uwe Brauer; +Cc: larsi, 45693

Uwe Brauer <oub@mat.ucm.es> writes:

>> Uwe Brauer <oub@mat.ucm.es> writes:
>
>> Thatʼs under the control of your code, no? Itʼs whatever does 'setq
>> local-abbrev-table (list ... ...)'
>
>
> That is what I expect. I have 
> (define-minor-mode american-minor-mode 
>     nil nil nil nil
>     (setq local-abbrev-table
>           (if american-minor-mode
>               american-minor-mode-abbrev-table)))
>
> Now if in LaTeX (mayor) mode (which has its own local-abbrev-table)
> I turn on the american mode, in my understanding the local-abbrev-table
> of american minor mode should be first in the list. At least if I add an
> abbrev (via flyspell) it is added to the amercian-minor-mode-abbrev-table
> not to the latex-mode-abbrev-table.
>
> If that is the case I would say yes to your question, but I am not sure
> how to check that it is indeed the first in the list. (I only know it is «activated»)

Based on the code above, there is no list: youʼre unconditionally
setting local-abbrev-table to a single table. You'd want something
like:

(define-minor-mode american-minor-mode 
    nil nil nil nil
    (setq local-abbrev-table
          (if american-minor-mode
              (list american-minor-mode-abbrev-table local-abbrev-table))))

which would then fail when adding abbrevs, of course.

Robert





^ permalink raw reply	[flat|nested] 28+ messages in thread

* bug#45693: [two word expansion works, but write-abbrev-file destroys it]
  2021-01-13 10:09                                           ` Robert Pluim
@ 2021-01-13 13:18                                             ` Uwe Brauer
  2021-01-13 14:03                                               ` Robert Pluim
  0 siblings, 1 reply; 28+ messages in thread
From: Uwe Brauer @ 2021-01-13 13:18 UTC (permalink / raw)
  To: Uwe Brauer; +Cc: larsi, 45693

[-- Attachment #1: Type: text/plain, Size: 726 bytes --]


> Uwe Brauer <oub@mat.ucm.es> writes:

> Based on the code above, there is no list: youʼre unconditionally
> setting local-abbrev-table to a single table. You'd want something
> like:

> (define-minor-mode american-minor-mode 
>     nil nil nil nil
>     (setq local-abbrev-table
>           (if american-minor-mode
>               (list american-minor-mode-abbrev-table local-abbrev-table))))

Ok I did not think that through, you were referring to 
(setq local-abbrev-table (list my-abbrev-table fundamental-mode-abbrev-table))

And the question is what comes first in that list, right?

You asked whether to take the first or all elements of the list, would
it be very resource consuming to take all?

[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 5673 bytes --]

^ permalink raw reply	[flat|nested] 28+ messages in thread

* bug#45693: [two word expansion works, but write-abbrev-file destroys it]
  2021-01-13 13:18                                             ` Uwe Brauer
@ 2021-01-13 14:03                                               ` Robert Pluim
  2021-01-13 16:25                                                 ` Uwe Brauer
  0 siblings, 1 reply; 28+ messages in thread
From: Robert Pluim @ 2021-01-13 14:03 UTC (permalink / raw)
  To: Uwe Brauer; +Cc: larsi, 45693

>>>>> On Wed, 13 Jan 2021 14:18:37 +0100, Uwe Brauer <oub@mat.ucm.es> said:

    >> Uwe Brauer <oub@mat.ucm.es> writes:

    >> Based on the code above, there is no list: youʼre unconditionally
    >> setting local-abbrev-table to a single table. You'd want something
    >> like:

    >> (define-minor-mode american-minor-mode 
    >> nil nil nil nil
    >> (setq local-abbrev-table
    >> (if american-minor-mode
    >> (list american-minor-mode-abbrev-table local-abbrev-table))))

    Uwe> Ok I did not think that through, you were referring to 
    Uwe> (setq local-abbrev-table (list my-abbrev-table fundamental-mode-abbrev-table))

    Uwe> And the question is what comes first in that list, right?

    Uwe> You asked whether to take the first or all elements of the list, would
    Uwe> it be very resource consuming to take all?

Not really, but people might find it confusing when 'add a local
abbrev' results in modifying more than one abbrev table.

Robert





^ permalink raw reply	[flat|nested] 28+ messages in thread

* bug#45693: [two word expansion works, but write-abbrev-file destroys it]
  2021-01-13 14:03                                               ` Robert Pluim
@ 2021-01-13 16:25                                                 ` Uwe Brauer
  0 siblings, 0 replies; 28+ messages in thread
From: Uwe Brauer @ 2021-01-13 16:25 UTC (permalink / raw)
  To: Robert Pluim; +Cc: Uwe Brauer, larsi, 45693

[-- Attachment #1: Type: text/plain, Size: 2176 bytes --]

>>> "RP" == Robert Pluim <rpluim@gmail.com> writes:

>>>>>> On Wed, 13 Jan 2021 14:18:37 +0100, Uwe Brauer <oub@mat.ucm.es> said:
>>> Uwe Brauer <oub@mat.ucm.es> writes:

>>> Based on the code above, there is no list: youʼre unconditionally
>>> setting local-abbrev-table to a single table. You'd want something
>>> like:

>>> (define-minor-mode american-minor-mode 
>>> nil nil nil nil
>>> (setq local-abbrev-table
>>> (if american-minor-mode
>>> (list american-minor-mode-abbrev-table local-abbrev-table))))

Uwe> Ok I did not think that through, you were referring to 
Uwe> (setq local-abbrev-table (list my-abbrev-table fundamental-mode-abbrev-table))

Uwe> And the question is what comes first in that list, right?

Uwe> You asked whether to take the first or all elements of the list, would
Uwe> it be very resource consuming to take all?

> Not really, but people might find it confusing when 'add a local
> abbrev' results in modifying more than one abbrev table.

Ok, then the following question supposed I have executed 

(setq local-abbrev-table (list my-abbrev-table fundamental-mode-abbrev-table))

I want to add 

    1. A simple word abbrev as in nacion to nación

    2. I want to add a two word abbrev as in
       a que --> a qué


For the latter I would use registers and something like this 

(defun ediff-copy-to-register-A ()
  (interactive)
  (copy-to-register ?A (region-beginning) (region-end) nil)
  (message "diff is copied to register A"))

(defun ediff-copy-to-register-B ()
  (interactive)
  (copy-to-register ?B (region-beginning) (region-end) nil)
  (message "diff is copied to register B"))

(defun ediff-define-abbrev ()
  (interactive)
  (let ((name (get-register ?A)))
	(let ((expansion (get-register ?B)))
	  (set-text-properties 0 (length name) nil name)
	  (define-abbrev local-abbrev-table  name (downcase expansion))))
  (message "abbrev is added using register A and B."))

Now should the first abbrev land in the fundamental local abbrev list
and the two word abbrev in my-abbrev-table?

Or shall I create another minor mode that I associate with the my-abbrev-table?

[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 5673 bytes --]

^ permalink raw reply	[flat|nested] 28+ messages in thread

end of thread, other threads:[~2021-01-13 16:25 UTC | newest]

Thread overview: 28+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-06 15:54 bug#45693: 28.0.50; abbrev does not expand two words any more Uwe Brauer
2021-01-10 14:35 ` Lars Ingebrigtsen
2021-01-10 15:51   ` Uwe Brauer
2021-01-10 15:52     ` Lars Ingebrigtsen
2021-01-10 17:22       ` Uwe Brauer
2021-01-10 21:21       ` bug#45693: [two word expansion works, but write-abbrev-file destroys it] (was: bug#45693: 28.0.50; abbrev does not expand two words any more) Uwe Brauer
2021-01-11 10:49         ` bug#45693: [two word expansion works, but write-abbrev-file destroys it] Robert Pluim
2021-01-11 15:26           ` Eli Zaretskii
2021-01-11 15:50             ` Uwe Brauer
2021-01-11 17:38               ` Robert Pluim
2021-01-11 20:17                 ` Uwe Brauer
2021-01-11 20:38                   ` Robert Pluim
2021-01-11 20:48                     ` Uwe Brauer
2021-01-11 21:03                       ` Robert Pluim
2021-01-12  8:01                         ` Uwe Brauer
2021-01-12 10:34                           ` Robert Pluim
2021-01-12 13:26                             ` Uwe Brauer
2021-01-12 16:45                             ` Uwe Brauer
2021-01-12 17:59                               ` Robert Pluim
2021-01-13  7:37                                 ` Uwe Brauer
2021-01-13  9:16                                   ` Robert Pluim
2021-01-13  9:28                                     ` Uwe Brauer
2021-01-13  9:39                                       ` Robert Pluim
2021-01-13  9:51                                         ` Uwe Brauer
2021-01-13 10:09                                           ` Robert Pluim
2021-01-13 13:18                                             ` Uwe Brauer
2021-01-13 14:03                                               ` Robert Pluim
2021-01-13 16:25                                                 ` Uwe Brauer

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).