Discussion:
[Emacs] Wie das Command history beim Beenden speichern? (was: History merken?)
(zu alt für eine Antwort)
Helmut Waitzmann
2017-05-03 22:37:13 UTC
Permalink
Wenn ich etwas mit META-X mache, merkt sich Gnus (Debian Linux) das, so
dass ich per Cursor-Hoch auf Vorhergehendes zugreifen kann.
Das scheint mir mehr eine Eigenschaft von Emacs als von Gnus zu
sein. Daher schlage ich ein Crossposting mitsamt »Followup-To:
de.comp.editoren« vor.
Nach Beendigung der Session ist aber alles vergessen.
Du meinst, nach Beendigung von Emacs?
Kann ich Gnus sagen, er soll sich so 100 der letzten Eingaben
merken?
;; Begrenze die Command-History-Liste auf 100 Eintraege:
;;
(setq-default history-length 100)

Damit merkt sich Emacs zwar 100 Stück, aber trotzdem nicht über
das Beenden hinaus.

Schau mal in den Info-Seiten zu Emacs beim Thema »Minibuffer«
nach, ob Du dort etwas in Bezug auf das Speichern über Beenden und
Neustarten von Emacs findest.

Wenn nicht, funktioniert vielleicht folgende Idee?

Ich habe hier einen älteren Emacs vor mir. Bei dem enthält die
Variable »command-history« die Liste der Kommandos. Aber ich habe keine
Möglichkeit gefunden, das command-history beim Beenden von Emacs
abspeichern und beim Starten einlesen zu lassen.

Vielleicht könnte der Customizer dabei helfen?

Eine Idee: Vielleicht bringt man es fertig, den Wert der
Variablen »command-history« mit Hilfe des Customizers zu speichern
(vielleicht mit der Lisp-Funktion »customize-save-variable«) und
das automatisch beim Beenden vom Emacs zu veranlassen (vielleicht
durch Eintragen in die Variable »kill-emacs-query-functions«)?

Etwa so? In die Emacs-Startup-Datei (»~/.emacs.d/init.el« oder
»~/.emacs«) Folgendes hineinschreiben:

;; Warnung! Die Funktionsdefinition und das Einhaengen der
;; definierten Funktion in die Liste der kill-emacs-query-functions
;; ist nur ein erster Entwurf. Ob das wirklich so funktioniert, ist
;; noch voellig ungewiss. Vielleicht koennen Emacs-Experten einen
;; Blick drauf werfen?

;; Die folgende Funktionsdefinition erzeugt ein Kommando
;; my-save-command-history, das sich mit
;;
;; M-x my-save-command-history
;;
;; aufrufen laesst:
;;
(defun
my-save-command-history
nil
"Save the command-history using the Customizer."
(interactive)
(customize-save-variable
'command-history
command-history))

;; Das Einhaengen des Kommandos my-save-command-history in die Liste
;; der kill-emacs-query-functions bewirkt, dass das Kommando
;; automatisch beim Beenden von Emacs aufgerufen wird:
;;
(add-hook
kill-emacs-query-functions
(function my-save-command-history))
Reiner Steib
2017-05-04 15:35:31 UTC
Permalink
Post by Helmut Waitzmann
Wenn ich etwas mit META-X mache, merkt sich Gnus (Debian Linux) das, so
dass ich per Cursor-Hoch auf Vorhergehendes zugreifen kann.
[...]
Post by Helmut Waitzmann
Nach Beendigung der Session ist aber alles vergessen.
Du meinst, nach Beendigung von Emacs?
Kann ich Gnus sagen, er soll sich so 100 der letzten Eingaben
merken?
[...]
Post by Helmut Waitzmann
Schau mal in den Info-Seiten zu Emacs beim Thema »Minibuffer«
nach, ob Du dort etwas in Bezug auf das Speichern über Beenden und
Neustarten von Emacs findest.
"s save.*history RET" oder "s save minibuffer RET" im Info-Manual liefert ...

,----[ (info "(emacs)Saving Emacs Sessions") ]
| If you want to save minibuffer history from one session to another,
| use the `savehist' library.
`----

,----[ C-h f savehist-mode RET ]
| savehist-mode is an interactive autoloaded compiled Lisp function in
| `savehist.el'.
|
| (savehist-mode &optional ARG)
|
| Toggle saving of minibuffer history (Savehist mode).
| With a prefix argument ARG, enable Savehist mode if ARG is
| positive, and disable it otherwise. If called from Lisp, enable
| the mode if ARG is omitted or nil.
|
| When Savehist mode is enabled, minibuffer history is saved
| periodically and when exiting Emacs. When Savehist mode is
| enabled for the first time in an Emacs session, it loads the
| previous minibuffer history from `savehist-file'.
|
| This mode should normally be turned on from your Emacs init file.
| Calling it at any other time replaces your current minibuffer
| histories, which is probably undesirable.
`----

Also ...
(savehist-mode 1)
oder per Customize (die Variable) `savehist-mode' setzen und speichern.

Viele Grüße
Reiner
Andreas Kohlbach
2017-05-04 19:43:35 UTC
Permalink
Post by Reiner Steib
Post by Helmut Waitzmann
Wenn ich etwas mit META-X mache, merkt sich Gnus (Debian Linux) das, so
dass ich per Cursor-Hoch auf Vorhergehendes zugreifen kann.
[...]
Post by Helmut Waitzmann
Nach Beendigung der Session ist aber alles vergessen.
Du meinst, nach Beendigung von Emacs?
Kann ich Gnus sagen, er soll sich so 100 der letzten Eingaben
merken?
[...]
Post by Helmut Waitzmann
Schau mal in den Info-Seiten zu Emacs beim Thema »Minibuffer«
nach, ob Du dort etwas in Bezug auf das Speichern über Beenden und
Neustarten von Emacs findest.
[...]
Post by Reiner Steib
Also ...
(savehist-mode 1)
oder per Customize (die Variable) `savehist-mode' setzen und speichern.
Das funktioniert. Danke.

Btw. <Hinweis an Entwickler> wäre es nicht sinnvoll, dass das Default wäre?
--
Andreas
You know you are a redneck if
you use the term "over yonder" more than once a month.
Olaf Meltzer
2017-05-05 08:48:16 UTC
Permalink
[...]
Post by Andreas Kohlbach
Post by Reiner Steib
Also ...
(savehist-mode 1)
oder per Customize (die Variable) `savehist-mode' setzen und speichern.
Das funktioniert. Danke.
Btw. <Hinweis an Entwickler> wäre es nicht sinnvoll, dass das Default wäre?
Dem stimme ich zu und selbstverständlich schließe ich mich Deiner
Danksagung an. Denkt bloß nicht, hier läse niemand mehr mit.

Gruß -- Olaf Meltzer
--
openSUSE Leap 42.2 - Kernel: 4.4.62-18.6-default || Win 10 Pro
Qt: 5.6.1 - KDE Frameworks: 5.26.0 - Plasma: 5.8.6
Tower mit Intel(R) Core(TM) i5-4430 CPU @ 3.00GHz
Michael Albinus
2017-05-05 08:55:43 UTC
Permalink
Post by Andreas Kohlbach
Post by Reiner Steib
Also ...
(savehist-mode 1)
oder per Customize (die Variable) `savehist-mode' setzen und speichern.
Das funktioniert. Danke.
Btw. <Hinweis an Entwickler> wäre es nicht sinnvoll, dass das Default wäre?
Noe. Leute wie ich wollen nicht unnoetig Files geschrieben haben. Ist
auch Security-relevant.

Ciao, Michael (Emacs Entwickler, Tramp Maintainer)
Marcel Logen
2017-05-05 23:58:32 UTC
Permalink
Post by Michael Albinus
Ciao, Michael (Emacs Entwickler, Tramp Maintainer)
^^^^^^^^^^^^^^^^

Weißt Du zufällig, ob Gnus noch weiterentwickelt wird?

Da steht die Versionsbezeichnung schon seit einer gefühlten Ewigkeit
auf "5.13".

Marcel

Fup2 Gnus-Gruppe
--
+---------------------------+ +-+ +-----+ +--+
+-----------------------+ +-----+ +----+ +---+ +-----+ +--
+----+ +--+ +--+ +-+ +-------+ +-----+ +-+ +-+ +-----+
-+ +-+ +--+ +---+ +----------+ +---------+ +---+ +--------+
Heino Tiedemann
2017-05-06 07:28:56 UTC
Permalink
Post by Marcel Logen
Post by Michael Albinus
Ciao, Michael (Emacs Entwickler, Tramp Maintainer)
^^^^^^^^^^^^^^^^
Weißt Du zufällig, ob Gnus noch weiterentwickelt wird?
Da steht die Versionsbezeichnung schon seit einer gefühlten Ewigkeit
auf "5.13".
Du erlebst hier etwas seltenes: Eine fertige Software. :)
Post by Marcel Logen
Fup2 Gnus-Gruppe
sorry.

Heino
Christian Schneider
2017-05-06 16:55:14 UTC
Permalink
Post by Heino Tiedemann
Post by Marcel Logen
Post by Michael Albinus
Ciao, Michael (Emacs Entwickler, Tramp Maintainer)
^^^^^^^^^^^^^^^^
Weißt Du zufällig, ob Gnus noch weiterentwickelt wird?
Da steht die Versionsbezeichnung schon seit einer gefühlten Ewigkeit
auf "5.13".
Du erlebst hier etwas seltenes: Eine fertige Software. :)
Also wenn bei uns in Bayern jemand zu einem anderem (oder dessen
Produkt) sagt: "Mein Gott ist das Ding fertig", dann hat das irgendwie
eine komplett andere Bedeutung.
Post by Heino Tiedemann
Post by Marcel Logen
Fup2 Gnus-Gruppe
sorry.
Ebenso.
--
{ \|/ ______ \|/ Access denieded | Christian 'strcat' Schneider }
{ "@' / , . \ `@" Nah Nah Nah :p | http://www.strcat.de/ }
{ /__| \____/ |__\ | http://www.strcat.de/blog/ }
{ \___U__/ | http://strcat.de/chris.gpg }
Heino Tiedemann
2017-05-06 17:25:57 UTC
Permalink
Post by Christian Schneider
Post by Heino Tiedemann
Post by Marcel Logen
Post by Michael Albinus
Ciao, Michael (Emacs Entwickler, Tramp Maintainer)
^^^^^^^^^^^^^^^^
Weißt Du zufällig, ob Gnus noch weiterentwickelt wird?
Da steht die Versionsbezeichnung schon seit einer gefühlten Ewigkeit
auf "5.13".
Du erlebst hier etwas seltenes: Eine fertige Software. :)
Also wenn bei uns in Bayern jemand zu einem anderem (oder dessen
Produkt) sagt: "Mein Gott ist das Ding fertig", dann hat das irgendwie
eine komplett andere Bedeutung.
Ich wusste jetzt auch nicht, was am Gnus noch verbessert werden müsste.

Das usenet ändert sich ja auch nicht mehr (also die Protokolle, die
Basics). Was soll da ein Newsserver bitte für Neuerungen bekommen?

Ich keine am Gnus 5.09 und 5.12 gabs noch mal Probleme mit UTF 8 und
Co (lang ist es her), aber das ist ja auch Geschichte. Oft kamen die
Problem auch nicht aus Gnus, sondern aus XEmacs.

Ich meine mich zu erinnern,. Das mal ein Posting von mir in ein
Multipart Posting umgewandelt wurde: ein Split an jedem Umlaut.

:D


Was Gnus gelegentlich hat: es verschluckt sich beim Scoring.

Ich hatte mal einen typen herunter gescored. Dann hatte ich Threads
herunter gescored. Da war der Kerl auch drin.

Dann auf einmal hatte der einen RIESIGEN positiv Score.

Klingt ein wenig nach Integer-Überlauf ;)
frank paulsen
2017-05-09 13:35:46 UTC
Permalink
Post by Heino Tiedemann
Ich wusste jetzt auch nicht, was am Gnus noch verbessert werden müsste.
Das usenet ändert sich ja auch nicht mehr (also die Protokolle, die
Basics). Was soll da ein Newsserver bitte für Neuerungen bekommen?
Gnus ist nicht nur ein Usenet-reader, sondern auch ein mailclient.

gerade da tut sich einiges, und Larsi hat IMAP vor einiger zeit quasi
komplett neu aufgesetzt. da gibts immer was zu schrauben, was zum
glueck auch passiert.

also, Gnus wird weiterentwickelt, aber nicht mehr eigenstaendig, sondern
im normalen Emacs-repository.
--
frobnicate foo
Heino Tiedemann
2017-05-06 07:25:50 UTC
Permalink
Post by Michael Albinus
Post by Andreas Kohlbach
Post by Reiner Steib
Also ...
(savehist-mode 1)
oder per Customize (die Variable) `savehist-mode' setzen und speichern.
Das funktioniert. Danke.
Btw. <Hinweis an Entwickler> wäre es nicht sinnvoll, dass das Default wäre?
Noe. Leute wie ich wollen nicht unnoetig Files geschrieben haben. Ist
auch Security-relevant.
Kann ich verstehen.

Auch das Schreiben von Backup files fällt darunter.

Was per default ja AN ist.

Heino
Michael Albinus
2017-05-06 08:23:41 UTC
Permalink
Post by Heino Tiedemann
Post by Michael Albinus
Noe. Leute wie ich wollen nicht unnoetig Files geschrieben haben. Ist
auch Security-relevant.
Kann ich verstehen.
Auch das Schreiben von Backup files fällt darunter.
Was per default ja AN ist.
Sicher. Backups haben aber eine andere Qualitaet als die Command
History; meine Backups im Emacs haben mir schon oft den Kopf gerettet.

Und natuerlich sollte man sich `backup-directory-alist' und
`tramp-backup-directory-alist' ordentlich konfigurieren.
Post by Heino Tiedemann
Heino
Ciao, Michael.
Stefan Reuther
2017-05-06 09:19:10 UTC
Permalink
Post by Michael Albinus
Post by Heino Tiedemann
Post by Michael Albinus
Noe. Leute wie ich wollen nicht unnoetig Files geschrieben haben. Ist
auch Security-relevant.
Kann ich verstehen.
Auch das Schreiben von Backup files fällt darunter.
Was per default ja AN ist.
Sicher. Backups haben aber eine andere Qualitaet als die Command
History; meine Backups im Emacs haben mir schon oft den Kopf gerettet.
Natürlich ist es das Vorrecht eines Entwicklers, die Defaults zu setzen.
Aber "Meine Backups haben mir gerettet" oder "Leute wie ich wollen
nicht" ist zumindest kein objektives Security-Argument.

Wie anderer Projekte das sehen weiß ich nicht. Firefox, bash, less, joe
schreiben bei mir standardmäßig eine History, und die ist aus
Sicherheits- und Privacy-Gründen sicher riskanter als die
Kommandohistory vom Emacs. Eventuell wäre das also ein Wunsch, der an
den Distributor zu adressieren wäre ("distributionsweit vergleichbare
defaults").


Stefan
Michael Albinus
2017-05-06 09:54:17 UTC
Permalink
Post by Stefan Reuther
Natürlich ist es das Vorrecht eines Entwicklers, die Defaults zu setzen.
Aber "Meine Backups haben mir gerettet" oder "Leute wie ich wollen
nicht" ist zumindest kein objektives Security-Argument.
Wie anderer Projekte das sehen weiß ich nicht. Firefox, bash, less, joe
schreiben bei mir standardmäßig eine History, und die ist aus
Sicherheits- und Privacy-Gründen sicher riskanter als die
Kommandohistory vom Emacs. Eventuell wäre das also ein Wunsch, der an
den Distributor zu adressieren wäre ("distributionsweit vergleichbare
defaults").
Ich gebe hier meine private Meinung wieder, keine offizielle Emacs
Meinung. Dazu gibt es Maintainer (Eli Zaretskii unf John Wiegley derzeit).

Aendern der Defaults sind immer moeglich, am besten ueber einen Bug
Report. Ob das dann eine Mehrheit unter den Entwicklern befuerwortet,
ist eine andere Sache. Gute Argumente, warum ein anderer Defaultwert
besser ist, helfen sicherlich; ich habe in der Diskussion hier aber noch
keines gesehen, welches mich ueberzeugen wuerde.

Was Du in diesen Zusammenhang mit "Distributor" meinst, habe ich nicht
verstanden. Sowas wie den Linux Distributor, der ein Emacs Paket
vertreibt? Du wuerdest also vorschlagen, dass z.B. Debian einen anderen
Defaultwert setzt als Ubuntu?
Post by Stefan Reuther
Stefan
Ciao, Michael.
Stefan Reuther
2017-05-07 09:36:40 UTC
Permalink
Post by Michael Albinus
Post by Stefan Reuther
Natürlich ist es das Vorrecht eines Entwicklers, die Defaults zu setzen.
Aber "Meine Backups haben mir gerettet" oder "Leute wie ich wollen
nicht" ist zumindest kein objektives Security-Argument.
Wie anderer Projekte das sehen weiß ich nicht. Firefox, bash, less, joe
schreiben bei mir standardmäßig eine History, und die ist aus
Sicherheits- und Privacy-Gründen sicher riskanter als die
Kommandohistory vom Emacs. Eventuell wäre das also ein Wunsch, der an
den Distributor zu adressieren wäre ("distributionsweit vergleichbare
defaults").
[...]
Post by Michael Albinus
Was Du in diesen Zusammenhang mit "Distributor" meinst, habe ich nicht
verstanden. Sowas wie den Linux Distributor, der ein Emacs Paket
vertreibt?
Genau den.
Post by Michael Albinus
Du wuerdest also vorschlagen, dass z.B. Debian einen anderen
Defaultwert setzt als Ubuntu?
Die Möglichkeit besteht und wird genutzt. less kommt z.B. seit
Ewigkeiten bei SuSE mit völlig anderen Defaults als bei Debian (SuSE
dekodiert transparent gzip). Bei Emacs hab ich noch keinen Vergleich der
Defaults angestellt.


Stefan
Heino Tiedemann
2017-05-06 10:09:54 UTC
Permalink
Post by Michael Albinus
Post by Heino Tiedemann
Post by Michael Albinus
Noe. Leute wie ich wollen nicht unnoetig Files geschrieben haben. Ist
auch Security-relevant.
Kann ich verstehen.
Auch das Schreiben von Backup files fällt darunter.
Was per default ja AN ist.
Sicher. Backups haben aber eine andere Qualitaet als die Command
History;
Stimmt schon.

Heino
Andreas Kohlbach
2017-05-04 19:40:01 UTC
Permalink
Post by Helmut Waitzmann
Wenn ich etwas mit META-X mache, merkt sich Gnus (Debian Linux) das, so
dass ich per Cursor-Hoch auf Vorhergehendes zugreifen kann.
Das scheint mir mehr eine Eigenschaft von Emacs als von Gnus zu
de.comp.editoren« vor.
Daran hatte ich jetzt gar nicht gedacht. Ich nutze Emacs selbst selten.
Post by Helmut Waitzmann
Nach Beendigung der Session ist aber alles vergessen.
Du meinst, nach Beendigung von Emacs?
Gnus. Aber damit wird ja auch Emacs beendet.

[...]

Danke für die Vorschläge. Das ist aber doch viel Gebastel. Dass ich erst
mal Reiners Idee teste.
--
Andreas
You know you are a redneck if
you use the term "over yonder" more than once a month.
Helmut Waitzmann
2017-05-04 21:51:43 UTC
Permalink
Post by Andreas Kohlbach
Danke für die Vorschläge. Das ist aber doch viel Gebastel. Dass ich erst
mal Reiners Idee teste.
Auf jeden Fall. Warum das Rad neu erfinden – womöglich quietscht
und eiert es dann – wenn es schon alles fix und fertig gibt?
Loading...