Hallo, liebe Listen-Mitglieder!
Kann mir bitte Jemand von den Emacs-Benutzern sagen, ob es ein Befehl gibt, mit dem allein es möglich ist, eine Datei nochmal aufzurufen, die in der Emacs-Konsole schon einmal aufgerufen wurde und dort noch steht, in der zwischendurch per Programm aber Veränderungen vorgenommen wurden? Und zwar, ohne nochmal den ganzen Namen erneut eingeben und dann auch noch den ganzen Sermon mit "yes" beantworten zu müssen, dass die Datei inzwischen geändert wurde und ob man den neuen Zustand denn haben wolle.
Inzwischen kommt das bei meinen Arbeiten so häufig vor, dass eine Abkürzung schon eine nicht unbeträchtliche Erleichterung wäre.
Euch noch ein gut gelingendes Jahr 2021, insbesondere, ohne dass Euch Corona erwischt. Ich habe den ersten Impfdurchgang zum Glück hinter mir. Viele Grüße,
Rudolf
On Thu, Jan 07, 2021 at 01:01:38PM +0100, Rudolf Bahr wrote:
Hallo, liebe Listen-Mitglieder!
Kann mir bitte Jemand von den Emacs-Benutzern sagen, ob es ein Befehl gibt, mit dem allein es möglich ist, eine Datei nochmal aufzurufen, die in der Emacs-Konsole schon einmal aufgerufen wurde und dort noch steht, in der zwischendurch per Programm aber Veränderungen vorgenommen wurden?
Ich verstehe Deine Beschreibung nicht ganz: was meinst Du mit "per Programm... Veränderungen"? Mit Emacs verändert aber (noch) nicht gespeichert? D.h. Du willst den Zustand der Datei? Oder: irgend ein anderes Programm hat "hinten herum" an der Datei herumgemacht?
Und zwar, ohne nochmal den ganzen Namen erneut
eingeben und dann auch noch den ganzen Sermon mit "yes" beantworten zu müssen, dass die Datei inzwischen geändert wurde und ob man den neuen Zustand denn haben wolle.
Jetzt bin ich ganz verwirrt. Also: Du lädst den Inhalt einer Datei in Emacs. Dann... verändert ein anderes Programm (sagen wir: git) die Datei hinter Deinem Rücken. Du hast womöglich auch an dem geladenen Dateitext unter Emacs herumgefummelt.
Und jetzt? Wen willst Du etwas unter dem Namen Deiner Originaldatei speichern:
(a) den Originalzustand der Datei bevor das alles passiert ist (b) den Zustand auf dem Dateisystem (c) den Zustand in Deinem Emacs-buffer (d) ?
Das mit der Sicherheitsrückfrage klären wir danach :-)
Inzwischen kommt das bei meinen Arbeiten so häufig vor, dass eine Abkürzung schon eine nicht unbeträchtliche Erleichterung wäre.
Emacs soll ja eine Erleichterung sein :-)
Euch noch ein gut gelingendes Jahr 2021, insbesondere, ohne dass Euch Corona erwischt. Ich habe den ersten Impfdurchgang zum Glück hinter mir. Viele Grüße,
Ganz meinerseits. Mögen wir das Ding bald los sein...
lg -- t
Emacs soll ja eine Erleichterung sein :-)
Trockener Auflacher aus den hinteren Reihen :-)
On Thu, Jan 07, 2021 at 01:27:57PM +0100, Andreas Delleske wrote:
Emacs soll ja eine Erleichterung sein :-)
Trockener Auflacher aus den hinteren Reihen :-)
Hier gilt eine Abwandlung des Spruchs [1] "Emacs is user-friendly. It just chooses its friends" :-)
Die Einstiegsschwelle ist nicht gerade niedrig. Die Landschaft, die sich dann auf der Hochebene öffnet ist aber atemberaubend!
lg
[1] https://quotes.yourdictionary.com/author/quotes/194924
-- t
Hi Rudolf,
Am 07.01.21 um 13:01 schrieb Rudolf Bahr:
Kann mir bitte Jemand von den Emacs-Benutzern sagen, ob es ein Befehl gibt, mit dem allein es möglich ist, eine Datei nochmal aufzurufen, die in der Emacs-Konsole schon einmal aufgerufen wurde und dort noch steht, in der zwischendurch per Programm aber Veränderungen vorgenommen wurden?
mein emacs fragt mich sobald ich eine Datei, die im Dateisystem geändert wurde, bearbeiten will folgendes:
<Datei> changed on disk; really edit the buffer? (y, n, r or C-h)
Wähle ich "r", so wird die Datei neu eingelesen. Ist das bei dir nicht so?
Grüße Marek
Hallo Tomas, hallo Marek!
Ich verstehe Deine Beschreibung nicht ganz: was meinst Du mit "per Programm... Veränderungen"? Mit Emacs verändert aber (noch) nicht gespeichert? D.h. Du willst den Zustand der Datei? Oder: irgend ein anderes Programm hat "hinten herum" an der Datei herumgemacht?
Jetzt muss ich doch ein wenig ausholen: Die Datei, die ich in einer Emacs-Konsole sehen kann und um die es sich dreht, ist eine ConTeXt-Programm-Datei, enthält also Befehle zum Erstellen einer Photo-Album-Seite. Diese Befehle werden durch Lua-Programme zum Anordnen der Photos nach einigen, relativ wenigen Angaben durch mich erzeugt. Dann lasse ich ConTeXt drüber laufen und gucke mir das Ergebnis an. Meistens muss ich kleinere Korrekturen durch die lua-Programme erzeugen lassen oder per Hand direkt in der ConTeXt Befehlsdatei anbringen und das mehrmals. Dazu muss ich eben die durch lua erzeugte Befehlsdatei zwei-, drei- viermal aufrufen und wieder schließen.
Und um dieses wiederholte Aufrufen geht es.
<Datei> changed on disk; really edit the buffer? (y, n, r or C-h)
Diese Frage kommt schon auch mal vor, aber in dem beschriebenen Fall nicht. Ich bekomme die Anfrage:
File <file> changed on disk. Reread from disk? (yes or no) Dazu gebe ich dann "yes" ein.
Ich meine, es müsste doch möglich sein, mit nur einem Emacs-Kommando die Datei, deren Namen ich ja beim ersten Aufruf schon eingegeben habe, erneut in der neusten Fassung ohne weiter gefragt zu werden wieder im neusten Zustand aufzurufen. Es ist mir ja nichts passiert, was ich wegwerfen möchte, ich will nur die Änderungen, die ich selbst durch andere Lua-Programme herbeigerufen habe, betrachten.
Oder ein einfacheres Beispiel. Angenommen, ich habe mit Emacs eine Datei in der Emacs-Konsole aufgerufen und rufe dieselbe Datei mit vim auf und mache eine Änderung. Wenn ich dieses vim-Änderungen jetzt mit Emacs ansehen möchte, stehe ich auch vor den beschriebenen Mühseligkeiten.
Vielleicht agiere ich zu umständlich: Die ConTeXt-Datei rufe ich mit Strg-X-F <datei> auf und beim nächsten Mal wieder, d.h. ich muss den Datei-Namen, der manchmal lang sein kann, nochmal eintippen. Dazu kommt dann noch die "changed on disk-Abfrage", die ich beantworten muss.
Emacs soll ja eine Erleichterung sein :-)
Na ja, das ist es ja schon, aber hier wäre eine Stelle, da könnte es halt noch leichter sein :-)
Gruß, Rudolf
Hi Rudolf,
Am 07.01.21 um 16:25 schrieb Rudolf Bahr:
File <file> changed on disk. Reread from disk? (yes or no) Dazu gebe ich dann "yes" ein.
wenn deine Datei offen ist und im akteuellen Buffer angezeigt wird, dann kannst du irgendeine Taste drücken und emacs sollte dich eben danach Fragen:
really edit the buffer? (y, n, r or C-h)
Drückst du dann "r" wird der Buffer neu gelesen. (Ich kenne keinen schnelleren Weg...)
File <file> changed on disk. Reread from disk? (yes or no)
bekomme ich, wenn ich eine bereits offene Datei nochmals per Strg-x-f einlesen will und diese sich geändert hat.
Emacs soll ja eine Erleichterung sein :-)
Tipp: Damit du die (langen) Dateinamen nicht immer vollständig tippen musst kannst du mit pfeil-rauf/runter auch in der History navigieren.
Grüße Marek
On Thu, Jan 07, 2021 at 04:25:14PM +0100, Rudolf Bahr wrote:
Hallo Tomas, hallo Marek!
Ich verstehe Deine Beschreibung nicht ganz [...]
OK. Ich fasse mal zusammen: Die Datei ändert sich "hinter Emacses Rücken". Mit Emacs selbst veränderst Du den Inhalt nicht. Ist das richtig?
Wenn das so ist, dann ist "auto-revert-mode" für Dich gemacht: stellst Du diesen (minor) Mode an, dann lädt Emacs die Datei nach, wenn immer sie sich "auf Platte" verändert hat (es dauert ein Kleines Bisschen).
Details:
Du stellst auto-revert-mode in einem Buffer (das ist Emacses Jargon für eine Texteinheit, z.B. der (möglicherweise veränderte) Text einer Datei) ein, indem Du M-x auto-revert-mode <ENTER> eintippst (das M- steht für die "Meta"-Taste, meist ALT). Diese Einstellung ist *nur* für das jeweilige Buffer gültig (stell Dir vor, das ist für eine Datei eingestellt, an der Du fleissig arbeitest (aber siehe unten).
Angezeigt wird das ganze dadurch, dass in der modeline (das ist idR eine Fusszeile, die den Gesamtzustand Deiner Editiersession anzeigt) durch einen Kürzel "ARev".
Das Zeitintervall, in dem Emacs nachguckt wird von der Variablen "auto-revert-interval" (Voreinstellung 5 Sekunden) festgelegt.
Ob das Autorevert weitermacht, wenn Du etwas im Buffer verändert hast (willst Du normalerweise nicht), wird von der Variablen "auto-revert-stop-on-user-input" (Vorgabe "t", also "TRUE") geregelt. Der Normalfall ist also, dass der Autorevert-Zauber gebrochen wird, sobald Du etwas in den Buffer eintippst.
Frage einfach nach, wenn Du wissen willst, wie Du an all diese Einstellungen kommst.
Oh, das ist auch im Emacs Handbuch beschrieben, das sollte bei Dir herumliegen, oder hier [1] in welt weiten wiesen.
Emacs soll ja eine Erleichterung sein :-)
Na ja, das ist es ja schon, aber hier wäre eine Stelle, da könnte es halt noch leichter sein :-)
Wenn ich Dich richtig verstanden habe, dann ja: kann es :)
lg [1] https://www.gnu.org/software/emacs/manual/html_node/emacs/Auto-Revert.html -- t
Hallo,
On 1/7/21 4:25 PM, Rudolf Bahr wrote:
Oder ein einfacheres Beispiel. Angenommen, ich habe mit Emacs eine Datei in der Emacs-Konsole aufgerufen und rufe dieselbe Datei mit vim auf und mache eine Änderung. Wenn ich dieses vim-Änderungen jetzt mit Emacs ansehen möchte, stehe ich auch vor den beschriebenen Mühseligkeiten.
FTR (und um auch das vim-Lager mal etwas zu vertreten :-): In vim muss man das Kommando
:e!
absetzen um einen geladenen Puffer aus der Datei zu aktualisieren.
Liebe Grüße Uwe
On Sat, Jan 09, 2021 at 10:18:04PM +0100, Uwe Kleine-König wrote:
Hallo,
On 1/7/21 4:25 PM, Rudolf Bahr wrote:
Oder ein einfacheres Beispiel. Angenommen, ich habe mit Emacs eine Datei in der Emacs-Konsole aufgerufen und rufe dieselbe Datei mit vim auf und mache eine Änderung. Wenn ich dieses vim-Änderungen jetzt mit Emacs ansehen möchte, stehe ich auch vor den beschriebenen Mühseligkeiten.
FTR (und um auch das vim-Lager mal etwas zu vertreten :-): In vim muss man das Kommando
:e!
absetzen um einen geladenen Puffer aus der Datei zu aktualisieren.
...und wenn mensch (ungefähr) dasselbe haben will wie beim Emacs auto-revert-mode, dann :set autoread (oder :set ar).
Jaja, ich bin Emacs und vim-Fan: muss 'ne Krankheit sein ;-D
lg -- t