Discussion:
Gnus/Emacs macht neuerdings "Sound", wenn man auf URL klickt
(zu alt für eine Antwort)
Heino Tiedemann
2017-02-04 18:04:19 UTC
Permalink
Hallo,

Emacs 25.1.1
Gnus 5.13
FreeBSD 10.3
Firefox 51.0.1

Ich habe kürzlich vom Emacs24 auf den Emacs25 upgedatet.

Seit dem macht mein Gnus immer einen nervenden Systemton, wenn auf
einen Link klicke.

Wo kann ich das abstellen?

Ich sehe das als Emacs Thema.
daher Xpost und fup2 gesetzt.

Ich will, das mein Emacs am besten gar keine Töne von sich gibt.

.. oder piepst mein Firefox?
Auch der wurde von mir geupdated..

Heino
Peter Faust
2017-02-05 23:49:36 UTC
Permalink
Post by Heino Tiedemann
Emacs 25.1.1
Gnus 5.13
FreeBSD 10.3
Firefox 51.0.1
Ich habe kürzlich vom Emacs24 auf den Emacs25 upgedatet.
Seit dem macht mein Gnus immer einen nervenden Systemton, wenn auf
einen Link klicke.
Wo kann ich das abstellen?
Ich sehe das als Emacs Thema.
daher Xpost und fup2 gesetzt.
Ich will, das mein Emacs am besten gar keine Töne von sich gibt.
In der .gnus.el folgendes

(setq ring-bell-function 'ignore)

sollte alle Töne (und Geblinke) eliminieren.

Siehe auch: https://www.emacswiki.org/emacs/AlarmBell
Post by Heino Tiedemann
.. oder piepst mein Firefox?
Auch der wurde von mir geupdated..
Firefox wird das wohl nicht sein: Das ist einfach nur ein Quittungston
von Emacs zur Bestätigung einer Aktion.

HTH
--
˙ɟoop sʎuoԀ puıs ɯǝpɹǝssnɐ pun ˙˙˙
˙˙˙ ɟoɥʎuoԀ uıǝʞ ʇsı uǝqǝ˥ s,
Helmut Waitzmann
2017-02-07 00:46:42 UTC
Permalink
Post by Peter Faust
Post by Heino Tiedemann
Emacs 25.1.1
Gnus 5.13
FreeBSD 10.3
Firefox 51.0.1
Ich habe kürzlich vom Emacs24 auf den Emacs25 upgedatet.
Seit dem macht mein Gnus immer einen nervenden Systemton, wenn auf
einen Link klicke.
Wo kann ich das abstellen?
Ich sehe das als Emacs Thema.
daher Xpost und fup2 gesetzt.
Ich will, das mein Emacs am besten gar keine Töne von sich gibt.
In der .gnus.el folgendes
(setq ring-bell-function 'ignore)
sollte alle Töne (und Geblinke) eliminieren.
Hat sich da zum Emacs25 etwas geändert, d. h. hat der Wert 'nil'
eine neue Bedeutung erhalten oder hat die Variable einen neuen
Default‐Wert erhalten? Bei meinem Emacs hat diese Variable den
Wert 'nil' (den Default‐Wert), und er piepst nicht:

ring-bell-function is a variable defined in `C source code'.
Its value is nil

This variable is potentially risky when used as a file local
variable.

Documentation:
Non-nil means call this function to ring the bell.
The function should accept no arguments.
Helmut Waitzmann
2017-02-07 01:13:49 UTC
Permalink
Post by Peter Faust
Post by Heino Tiedemann
Emacs 25.1.1
Gnus 5.13
FreeBSD 10.3
Firefox 51.0.1
Ich habe kürzlich vom Emacs24 auf den Emacs25 upgedatet.
Seit dem macht mein Gnus immer einen nervenden Systemton, wenn auf
einen Link klicke.
Wo kann ich das abstellen?
Ich sehe das als Emacs Thema.
daher Xpost und fup2 gesetzt.
Ich will, das mein Emacs am besten gar keine Töne von sich gibt.
In der .gnus.el folgendes
(setq ring-bell-function 'ignore)
sollte alle Töne (und Geblinke) eliminieren.
Bei meinem Emacs23 hat das Setzen dieser Variablen auf 'ignore'
den Effekt, dass er in keinem Fall mehr piepst, beispielsweise
auch nicht, wenn man C-g oder eine nicht‐definierte
Tastenkombination tippt.

In diesen Fällen jeglichen Protest von Emacs abzustellen, würde
ich gerne vermeiden.

Eine andere Möglichkeit für den OP wäre vielleicht auch, die
Variable 'visible-bell' auf einen Nicht‐nil‐Wert zu setzen: Dann
»zwinkert« Emacs einmal, statt zu piepsen.
Peter Faust
2017-02-07 12:08:06 UTC
Permalink
Post by Helmut Waitzmann
Post by Peter Faust
Post by Heino Tiedemann
Emacs 25.1.1
Gnus 5.13
FreeBSD 10.3
Firefox 51.0.1
Ich habe kürzlich vom Emacs24 auf den Emacs25 upgedatet.
Seit dem macht mein Gnus immer einen nervenden Systemton, wenn auf
einen Link klicke.
Wo kann ich das abstellen?
Ich sehe das als Emacs Thema.
daher Xpost und fup2 gesetzt.
Ich will, das mein Emacs am besten gar keine Töne von sich gibt.
In der .gnus.el folgendes
(setq ring-bell-function 'ignore)
sollte alle Töne (und Geblinke) eliminieren.
Bei meinem Emacs23 hat das Setzen dieser Variablen auf 'ignore'
den Effekt, dass er in keinem Fall mehr piepst, beispielsweise
auch nicht, wenn man C-g oder eine nicht‐definierte
Tastenkombination tippt.
In diesen Fällen jeglichen Protest von Emacs abzustellen, würde
ich gerne vermeiden.
Eine andere Möglichkeit für den OP wäre vielleicht auch, die
Variable 'visible-bell' auf einen Nicht‐nil‐Wert zu setzen: Dann
»zwinkert« Emacs einmal, statt zu piepsen.
Hmm. Ja, das macht durchaus Sinn.

Ich bin da mit meinem Tipp wohl etwas zu radikal gewesen - Sorry!

Ich habe allerdings mit emacs 25.0.92 unter Windows nie Töne gehört,
weil an dem Rechner keine Lautsprecher sind und der Piezo abgeklemmt
ist. ;->

Unter Ubuntu mit (default/Softwarecenter) Emacs 24.5 piept und blinkt
es manchmal heftig - habe ich dann nach meinem Tipp abgeklemmt:
Ist wegen Wurstfingern besser für meine Ohren ...

In diesem Sinne: Hoffentlich kann Heino damit was passendes abklemmen.

Gruß, Peter
--
˙ʇɥɔıu ɹıɯ ɹnu 'uǝʃʃɐɟǝƃ uǝʃʃɐ ʇɐɥ uǝqǝ˥ uıǝW
:uǝɥǝʇs uıǝʇsqɐɹ⅁ ɯǝuıǝɯ ɟnɐ uuɐʍpuǝƃɹı ǝpɹǝnʍ uuɐp
ʇǝʇɹɐʍɹǝ ɹıɯ uoʌ uɐɯ sɐʍ 'ǝpɹǝnʍ unʇ ɹǝɯɯı ɥɔı uuǝM
Helmut Waitzmann
2017-02-07 17:51:04 UTC
Permalink
Post by Peter Faust
Post by Helmut Waitzmann
Post by Peter Faust
Post by Heino Tiedemann
Emacs 25.1.1
Gnus 5.13
FreeBSD 10.3
Firefox 51.0.1
Ich will, das mein Emacs am besten gar keine Töne von sich gibt.
In der .gnus.el folgendes
(setq ring-bell-function 'ignore)
sollte alle Töne (und Geblinke) eliminieren.
Bei meinem Emacs23 hat das Setzen dieser Variablen auf 'ignore'
den Effekt, dass er in keinem Fall mehr piepst, beispielsweise
auch nicht, wenn man C-g oder eine nicht‐definierte
Tastenkombination tippt.
In diesen Fällen jeglichen Protest von Emacs abzustellen, würde
ich gerne vermeiden.
Eine andere Möglichkeit für den OP wäre vielleicht auch, die
Variable 'visible-bell' auf einen Nicht‐nil‐Wert zu setzen: Dann
»zwinkert« Emacs einmal, statt zu piepsen.
Hmm. Ja, das macht durchaus Sinn.
Ich bin da mit meinem Tipp wohl etwas zu radikal gewesen - Sorry!
Nicht unbedingt. Im Originalposting steht ja, dass Emacs
überhaupt keine Töne von sich geben soll.

Meinen Beitrag hatte ich mehr so gedacht, dass ich wissen wollte,
ob es auch die Möglichkeit gibt, Emacs so einzustellen, dass
Post by Peter Faust
Unter Ubuntu mit (default/Softwarecenter) Emacs 24.5 piept und blinkt
es manchmal heftig
unterbleibt, aber trotzdem der Protest bei wirklich wichtigen
Ereignissen, etwa nicht‐definierten Tastendrücken oder bei C-g,
erfolgen kann.
Post by Peter Faust
Ist wegen Wurstfingern besser für meine Ohren ...
Du meinst, die Finger passen nicht in die Ohren rein? Und selbst
wenn, dann müsste man ja mit den Füßen tippen – oder umgekehrt…
Heino Tiedemann
2017-02-07 18:21:04 UTC
Permalink
Post by Helmut Waitzmann
Post by Peter Faust
Post by Helmut Waitzmann
Post by Peter Faust
Post by Heino Tiedemann
Emacs 25.1.1
Gnus 5.13
FreeBSD 10.3
Firefox 51.0.1
Ich will, das mein Emacs am besten gar keine Töne von sich gibt.
In der .gnus.el folgendes
(setq ring-bell-function 'ignore)
sollte alle Töne (und Geblinke) eliminieren.
Bei meinem Emacs23 hat das Setzen dieser Variablen auf 'ignore'
den Effekt, dass er in keinem Fall mehr piepst, beispielsweise
auch nicht, wenn man C-g oder eine nicht‐definierte
Tastenkombination tippt.
In diesen Fällen jeglichen Protest von Emacs abzustellen, würde
ich gerne vermeiden.
Eine andere Möglichkeit für den OP wäre vielleicht auch, die
Variable 'visible-bell' auf einen Nicht‐nil‐Wert zu setzen: Dann
»zwinkert« Emacs einmal, statt zu piepsen.
Hmm. Ja, das macht durchaus Sinn.
Ich bin da mit meinem Tipp wohl etwas zu radikal gewesen - Sorry!
Nicht unbedingt. Im Originalposting steht ja, dass Emacs
überhaupt keine Töne von sich geben soll.
zugegeben, ich weiß gar nicht mehr, wie es vorher war.

Schade.
Post by Helmut Waitzmann
Meinen Beitrag hatte ich mehr so gedacht, dass ich wissen wollte,
ob es auch die Möglichkeit gibt, Emacs so einzustellen, dass
Post by Peter Faust
Unter Ubuntu mit (default/Softwarecenter) Emacs 24.5 piept und blinkt
es manchmal heftig
unterbleibt, aber trotzdem der Protest bei wirklich wichtigen
Ereignissen, etwa nicht‐definierten Tastendrücken oder bei C-g,
erfolgen kann.
Das wäre klasse.

Dieses "ich öffne den Browser" Piepen brache ich nicht.


aber gefahr oder C-g darf gerne weiter piepen.


Heino
Helmut Waitzmann
2017-02-08 07:55:23 UTC
Permalink
Post by Heino Tiedemann
Post by Helmut Waitzmann
Post by Peter Faust
Post by Helmut Waitzmann
Post by Peter Faust
Post by Heino Tiedemann
Emacs 25.1.1
Gnus 5.13
FreeBSD 10.3
Firefox 51.0.1
Ich will, das mein Emacs am besten gar keine Töne von sich gibt.
In der .gnus.el folgendes
(setq ring-bell-function 'ignore)
sollte alle Töne (und Geblinke) eliminieren.
Bei meinem Emacs23 hat das Setzen dieser Variablen auf 'ignore'
den Effekt, dass er in keinem Fall mehr piepst, beispielsweise
auch nicht, wenn man C-g oder eine nicht‐definierte
Tastenkombination tippt.
In diesen Fällen jeglichen Protest von Emacs abzustellen, würde
ich gerne vermeiden.
Eine andere Möglichkeit für den OP wäre vielleicht auch, die
Variable 'visible-bell' auf einen Nicht‐nil‐Wert zu setzen: Dann
»zwinkert« Emacs einmal, statt zu piepsen.
Hmm. Ja, das macht durchaus Sinn.
Ich bin da mit meinem Tipp wohl etwas zu radikal gewesen - Sorry!
Nicht unbedingt. Im Originalposting steht ja, dass Emacs
überhaupt keine Töne von sich geben soll.
zugegeben, ich weiß gar nicht mehr, wie es vorher war.
Schade.
Post by Helmut Waitzmann
Meinen Beitrag hatte ich mehr so gedacht, dass ich wissen wollte,
ob es auch die Möglichkeit gibt, Emacs so einzustellen, dass
Post by Peter Faust
Unter Ubuntu mit (default/Softwarecenter) Emacs 24.5 piept und blinkt
es manchmal heftig
unterbleibt, aber trotzdem der Protest bei wirklich wichtigen
Ereignissen, etwa nicht‐definierten Tastendrücken oder bei C-g,
erfolgen kann.
Das wäre klasse.
Dieses "ich öffne den Browser" Piepen brache ich nicht.
aber gefahr oder C-g darf gerne weiter piepen.
Bei meinem Emacs23 gibt die Variable »visible-bell« an, ob Emacs
piepsen oder statt dessen die Farben seines Fensters einen
Augenblick lang wechseln (»zwinkern«) soll: Steht die Variable
auf »nil«, piepst er. Steht sie auf irgendeinem anderen Wert
(beispielsweise auf »t«), zwinkert er statt dessen.

Verhält sich das bei Emacs25 ebenso?
Heino Tiedemann
2017-02-08 17:04:30 UTC
Permalink
Post by Helmut Waitzmann
Bei meinem Emacs23 gibt die Variable »visible-bell« an, ob Emacs
piepsen oder statt dessen die Farben seines Fensters einen
Augenblick lang wechseln (»zwinkern«) soll: Steht die Variable
auf »nil«, piepst er. Steht sie auf irgendeinem anderen Wert
(beispielsweise auf »t«), zwinkert er statt dessen.
Verhält sich das bei Emacs25 ebenso?
Ja, bis auf das piepesen/zwinkern beim Browser start
Helmut Waitzmann
2017-02-07 17:56:45 UTC
Permalink
Post by Heino Tiedemann
Emacs 25.1.1
Gnus 5.13
FreeBSD 10.3
Firefox 51.0.1
Ich habe kürzlich vom Emacs24 auf den Emacs25 upgedatet.
Seit dem macht mein Gnus immer einen nervenden Systemton, wenn auf
einen Link klicke.
Wo kann ich das abstellen?
Ich will, das mein Emacs am besten gar keine Töne von sich gibt.
.. oder piepst mein Firefox?
Hast Du inzwischen herausgefunden, ob Emacs oder Firefox piepst?
Wenn es Emacs ist, würde Peters Tipp helfen; wenn es Firefox ist,
nicht.

Was steht bei Deinem Emacs in der Emacs‐Variablen
»ring-bell-function«?
Heino Tiedemann
2017-02-07 18:24:13 UTC
Permalink
Post by Helmut Waitzmann
Was steht bei Deinem Emacs in der Emacs‐Variablen
»ring-bell-function«?
Komisches:

,----
| ring-bell-function is a variable defined in ‘C source code’.
| Its value is nil
|
| This variable may be risky if used as a file-local variable.
|
| Documentation:
| Non-nil means call this function to ring the bell.
| The function should accept no arguments.
|
| You can customize this variable.
`----



Heino
Peter Faust
2017-02-07 21:15:02 UTC
Permalink
Post by Heino Tiedemann
Post by Helmut Waitzmann
Was steht bei Deinem Emacs in der Emacs‐Variablen
»ring-bell-function«?
,----
| ring-bell-function is a variable defined in ‘C source code’.
| Its value is nil
|
| This variable may be risky if used as a file-local variable.
|
| Non-nil means call this function to ring the bell.
| The function should accept no arguments.
|
| You can customize this variable.
`----
Logisch: Ne Bimmel kann nur bimmeln oder eben nicht bimmeln. ;-)

Du suchst vermutlich folgendes:

(setq visible-bell 1)

oder

(setq visible-bell t)


oder auch das hier: (Vorsicht! Hardcore - der komplette Screen blinkt!)

(setq lexical-binding t
visible-bell nil
ring-bell-function 'asc:flash-background)
(defun asc:flash-background ()
(let ((fg (face-foreground 'default))
(bg (face-background 'default)))
(set-face-background 'default "DodgerBlue")
(set-face-foreground 'default "black")
(run-with-idle-timer
1 nil (lambda ()
(set-face-background 'default bg)
(set-face-foreground 'default fg)))))

HTH
--
˙ɟoop ʇsı ɹǝp 'ʇuuǝʞɹǝ ʇɥɔıu uǝƃǝɐɹʇıǝ𐐒 uǝuıǝɯ uı uǝzʇıdS uǝɥɔıʃƃǝnzuɐ
ʃʃǝnxǝs ɥɔıʃʇuǝƃǝʃǝƃ ʇıɯ ǝɹɐʇuǝɯɯo⋊ ǝpuǝɟǝıɹʇ uɥoH ɹoʌ ɹǝpo ǝɥɔsıʇʇǝods
'ǝɥɔsıuʎz 'ǝpuǝzʇǝʃɹǝʌ 'ǝɥɔıʃʇɥɔǝɐɹǝʌ 'ǝzʇıds 'ǝɟɹɐɥɔs 'ǝɥɔsıʇsɐʞɹɐs
'ǝʇuɐʞoɯ 'ǝɥɔsıuɥǝoɥ 'ǝɥɔsıɯǝɐɥ 'ǝʇɟɐɥsoq 'ǝƃıssıq 'ǝpuǝssıǝq ɹǝM
Helmut Waitzmann
2017-02-08 07:55:07 UTC
Permalink
Post by Heino Tiedemann
Post by Helmut Waitzmann
Was steht bei Deinem Emacs in der Emacs‐Variablen
»ring-bell-function«?
,----
| ring-bell-function is a variable defined in ‘C source code’.
| Its value is nil
Das bedeutet, ihr Wert steht auf »nil«.

So ist das bei meinem Emacs23 auch, und der nervt mich nicht mit
dauerndem Lärmen oder Blinken. Er benutzt den PC‐Lautsprecher für
einen kurzen Pieps, wenn ich eine nicht‐definierte Tastenfolge
oder »C-g« drücke; ansonsten ist er ziemlich ruhig.

Emacs25 nervt Dich trotz des Wertes »nil« mit Lärm?
Post by Heino Tiedemann
| This variable may be risky if used as a file-local variable.
Das bedeutet, dass Emacs es als gefährlich ansieht, diese Variable
von Dateien, die Du mit dem Emacs aufschlägst, verändern zu
lassen. Wenn Du das nicht extra anders einstellst, erlaubt Emacs
das nicht (jedenfalls nicht ungefragt), dass eine Datei, die Du im
Emacs ansiehst, diese Variable umstellt. (Ansonsten wären dann
Angriffe ähnlich denen der Locky‐Computer‐Macro‐Viren möglich.)
Heino Tiedemann
2017-02-08 17:02:55 UTC
Permalink
Post by Helmut Waitzmann
Post by Heino Tiedemann
,----
| ring-bell-function is a variable defined in ‘C source code’.
| Its value is nil
Das bedeutet, ihr Wert steht auf »nil«.
Was ist der Unterschied von nil zu 'ignore?

ist 'ignore das gleiche wie jeder non-nil wert?

könnte da auch folgendes drin stehen:
t
wuwu
y
yes
true
nonnil
Post by Helmut Waitzmann
So ist das bei meinem Emacs23 auch, und der nervt mich nicht mit
dauerndem Lärmen oder Blinken. Er benutzt den PC‐Lautsprecher für
einen kurzen Pieps, wenn ich eine nicht‐definierte Tastenfolge
oder »C-g« drücke; ansonsten ist er ziemlich ruhig.
Verstan den
Post by Helmut Waitzmann
Emacs25 nervt Dich trotz des Wertes »nil« mit Lärm?
Ja, wie beschrieben.

Heino
Helmut Waitzmann
2017-02-09 01:16:03 UTC
Permalink
Post by Heino Tiedemann
Post by Helmut Waitzmann
Post by Heino Tiedemann
,----
| ring-bell-function is a variable defined in ‘C source code’.
| Its value is nil
Das bedeutet, ihr Wert steht auf »nil«.
Was ist der Unterschied von nil zu 'ignore?
Ich weiß nicht, wie weit Du mit der Programmiersprache Lisp
vertraut bist.

Jedenfalls ist »ring-bell-function« ein Lisp‐Symbol, das hier als
Variable verwendet wird. Es kann ihm also ein Wert zugewiesen
werden. Den Variablenwert (sofern vorhanden) eines Lisp‐Symbols,
kannst Du mit der Tastenfolge »C-h v« (s. o.) abfragen.

»nil« ist ebenfalls ein Lisp‐Symbol, das eine Sonderbedeutung hat:
Es wird verwendet, wenn man den Wert »nichts« angeben will.

»ignore« ist ebenfalls ein Lisp‐Symbol, das hier als Name einer
Lisp‐Funktion verwendet wird. Informationen über die
Lisp‐Funktion kannst Du mit der Tastenfolge »C-h f« abfragen,
etwa:

C-h f ignore

ignore is an interactive compiled Lisp function in `subr.el'.

It is bound to <mouse-movement>.

(ignore &rest IGNORE)

Do nothing and return nil.
This function accepts any number of arguments, but ignores them.

»ignore« ist demnach eine Lisp‐Funktion, die mit einer beliebigen
Anzahl (auch null) von Parametern aufgerufen werden darf und als
Funktionswert das Lisp‐Symbol »nil« liefert. Darüber hinaus tut
sie nichts.
Post by Heino Tiedemann
ist 'ignore das gleiche wie jeder non-nil wert?
Nein. In der Dokumentation zur Variablen »ring-bell-function«
heißt es:

ring-bell-function is a variable defined in `C source code'.



Documentation:
Non-nil means call this function to ring the bell.
The function should accept no arguments.

Das bedeutet: Der Variablen »ring-bell-function« dürfen als Wert
entweder das spezielle Lisp‐Symbol »nil« oder der Name einer
Lisp‐Funktion zugewiesen werden.

Wann immer Emacs jetzt piepsen will, schaut er in dieser Variablen
nach und verfährt dann so:

* Steht als Wert »nil« drin, piepst oder zwinkert er auf die
übliche Art und Weise.

* Steht als Wert etwas anderes als »nil« drin, verwendet er diesen
Wert als (den Namen einer) Lisp‐Funktion und ruft sie auf.
Steht also »ignore« drin, piepst er nicht auf die übliche Art
und Weise, sondern ruft statt dessen die Lisp‐Funktion »ignore«
auf. Und die tut, was oben zu lesen war: Außer den
Funktionswert »nil« zu liefern, tut sie nichts. Insbesondere
piepst sie nicht.

Das bedeutet: Wenn »ring-bell-function« auf »ignore« gestellt
ist, tut Emacs, wenn er piepsen soll, effektiv nichts.

Eine andere Funktion, deren Namen Du in die Variable
»ring-bell-function« stecken könntest, ist »ding«. »C-h f ding«
liefert:

ding is a built-in function in `C source code'.

(ding &optional ARG)

Beep, or flash the screen.
Also, unless an argument is given,
terminate any keyboard macro currently executing.

Das scheint so ähnlich zu sein, wie das, was Emacs tut, wenn »nil«
in der Variablen steckt. (Ich kann zwischen beiden keinen
Unterschied hören.)
Post by Heino Tiedemann
t
wuwu
y
yes
true
nonnil
Ich habe es jetzt nicht ausprobiert, vermute aber, dass sich Emacs
beim nächsten Piepswunsch beschweren wird, dass das Angegebene
keine Lisp‐Funktion bezeichnet.

[Es geht um die Variable »ring-bell-function«.]
Post by Heino Tiedemann
Post by Helmut Waitzmann
Emacs25 nervt Dich trotz des Wertes »nil« mit Lärm?
Ja, wie beschrieben.
Dann müsste man wohl in die Richtung der folgenden Frage
weitersuchen: Wo legt Emacs fest, wann er Lust zum Piepsen hat?
Offensichtlich hat mein Emacs23 nur sehr selten Lust, zu piepsen,
während Dein Emacs25 sehr oft (beispielsweise auch beim
Anklicken eines URLs) piepsen möchte.

Die Antwort auf diese Frage weiß ich leider nicht – vielleicht
weiß jemand anderes etwas?

Ein bisschen etwas in diese Richtung habe ich doch noch gefunden:

Ein Zitat aus
<http://emacsblog.org/2007/02/06/quick-tip-visible-bell/>:

(setq ring-bell-function
(lambda ()
(unless (memq this-command
'(isearch-abort
abort-recursive-edit
exit-minibuffer
keyboard-quit))
(ding))))

Erklärung:

Hier wird eine (anonyme) Lisp‐Funktion definiert und in die
Variable »ring-bell-function« gesteckt. Das bedeutet: Jedes Mal,
wenn Emacs piepsen will, ruft er diese Funktion auf. Und die
macht folgendes:

Sie schaut in die Variable »this-command«. In der ist das
augenblicklich gestartete Kommando (mit seinem Namen als
Lisp‐Symbol) vermerkt. Wenn dieses Kommando eines der Kommandos
»isearch-abort«, »abort-recursive-edit«, »exit-minibuffer« oder
»keyboard-quit« war, tut die Funktion nichts weiter. In allen
anderen Fällen ruft sie die Funktion »ding« auf: Emacs piepst
oder zwinkert.

Das könntest Du in abgewandelter Form verwenden, indem Du die
Liste der zum Schweigen zu bringenden Kommandos abänderst und nur
diejenigen einträgst, die zum Schweigen gebracht werden sollen.

Um zu erfahren, wie denn das Kommando heißt, das Du zum Schweigen
bringen willst, gehe so vor:

Wenn emacs das nächste Mal piepst, obwohl Du es nicht willst,
tippe

»C-h v last-command«.

»last-command« ist eine Lisp‐Variable. Sie enthält den Namen des
Kommandos, das Emacs zuletzt ausführte. Füge den Namen in der
Funktion in die Liste der Kommandos, die zum Schweigen gebracht
werden sollen, ein. Das Folgende zeigt ein Beispiel, bei dem das
Kommando »browse-url« zum Schweigen gebracht wird:

(setq ring-bell-function
(lambda ()
(unless
(memq
this-command
;; Zwischen dem folgenden Klammernpaar koennen Kommandonamen
;; aufgezaehlt (mit Leerraum getrennt) werden. Die so
;; aufgezaehlten Kommandos werden zum Schweigen gebracht:
'(browse-url
))
(ding))))

Schreibe diese Variablenbelegung in die Emacs‐Startup‐Datei. Um
sie direkt auszuprobieren: Stelle die Schreibmarke hinter die
letzte schließende Klammer und tippe »C-x C-e«.

Tut das das Gewünschte?
Heino Tiedemann
2017-02-09 16:53:28 UTC
Permalink
Post by Helmut Waitzmann
Post by Heino Tiedemann
Post by Helmut Waitzmann
Post by Heino Tiedemann
,----
| ring-bell-function is a variable defined in ‘C source code’.
| Its value is nil
Das bedeutet, ihr Wert steht auf »nil«.
Was ist der Unterschied von nil zu 'ignore?
..
Post by Helmut Waitzmann
»ignore« ist ebenfalls ein Lisp‐Symbol, das hier als Name einer
Lisp‐Funktion verwendet wird.
Verstnden.
Post by Helmut Waitzmann
Informationen über die
Lisp‐Funktion kannst Du mit der Tastenfolge »C-h f« abfragen,
C-h f ignore
ignore is an interactive compiled Lisp function in `subr.el'.
It is bound to <mouse-movement>.
(ignore &rest IGNORE)
Do nothing and return nil.
This function accepts any number of arguments, but ignores them.
»ignore« ist demnach eine Lisp‐Funktion, die mit einer beliebigen
Anzahl (auch null) von Parametern aufgerufen werden darf und als
Funktionswert das Lisp‐Symbol »nil« liefert. Darüber hinaus tut
sie nichts.
NA DANN müsste sich ja der wirt nil aber genauso wie "ignore"
verhalten!

"Do nothing and return nil"

Warum macht also ein funktionsaufrif von "ignore" aber dann etwas
anderes, als nil, wenn es doch nil zurück gibt?
Post by Helmut Waitzmann
* Steht als Wert »nil« drin, piepst oder zwinkert er auf die
übliche Art und Weise.
* Steht als Wert etwas anderes als »nil« drin, verwendet er diesen
Wert als (den Namen einer) Lisp‐Funktion und ruft sie auf.
Steht also »ignore« drin, piepst er nicht auf die übliche Art
und Weise, sondern ruft statt dessen die Lisp‐Funktion »ignore«
auf. Und die tut, was oben zu lesen war: Außer den
Funktionswert »nil« zu liefern, tut sie nichts. Insbesondere
piepst sie nicht.
Das bedeutet: Wenn »ring-bell-function« auf »ignore« gestellt
ist, tut Emacs, wenn er piepsen soll, effektiv nichts.
und bei nil pibst er. DAS verstehe ich nicht.



Heino
Helmut Waitzmann
2017-02-09 23:49:28 UTC
Permalink
Post by Heino Tiedemann
Post by Helmut Waitzmann
»ignore« ist demnach eine Lisp‐Funktion, die mit einer beliebigen
Anzahl (auch null) von Parametern aufgerufen werden darf und als
Funktionswert das Lisp‐Symbol »nil« liefert. Darüber hinaus tut
sie nichts.
NA DANN müsste sich ja der wirt nil aber genauso wie "ignore"
verhalten!
"Do nothing and return nil"
Warum macht also ein funktionsaufrif von "ignore" aber dann etwas
anderes, als nil, wenn es doch nil zurück gibt?
Emacs interessiert sich hier anscheinend für den Funktionswert
nicht. Dazu passt auch, dass bei der Beschreibung der Variablen
»ring-bell-function« nichts davon steht.

Ein Versuch bestätigt das:

Hier ist eine (namenlose) Funktion, die wie »ignore« weiter nichts
tut, aber als Funktionswert »t« zurückgibt:

(lambda (&rest ignore)
"Tue nichts und liefere t.
Diese Funktion akzeptiert eine beliebige Anzahl von Parametern,
aber ignoriert sie."
t)

Wenn man sie dann für »ring-bell-function« verwendet:

(setq
ring-bell-function
(lambda (&rest ignore)
"Tue nichts und liefere t.
Diese Funktion akzeptiert eine beliebige Anzahl von Parametern,
aber ignoriert sie."
t))

geschieht auch nichts anderes als bei »ignore«: Emacs schweigt.
Post by Heino Tiedemann
Post by Helmut Waitzmann
* Steht als Wert »nil« drin, piepst oder zwinkert er auf die
übliche Art und Weise.
* Steht als Wert etwas anderes als »nil« drin, verwendet er diesen
Wert als (den Namen einer) Lisp‐Funktion und ruft sie auf.
Steht also »ignore« drin, piepst er nicht auf die übliche Art
und Weise, sondern ruft statt dessen die Lisp‐Funktion »ignore«
auf. Und die tut, was oben zu lesen war: Außer den
Funktionswert »nil« zu liefern, tut sie nichts. Insbesondere
piepst sie nicht.
Das bedeutet: Wenn »ring-bell-function« auf »ignore« gestellt
ist, tut Emacs, wenn er piepsen soll, effektiv nichts.
und bei nil pibst er. DAS verstehe ich nicht.
Emacs interessiert sich für den Wert »nil« in der Variablen
»ring-bell-function« nur insofern, als er ihn nicht einfach als
Funktion aufruft – wie er es mit allen anderen Werten in dieser
Variablen machen würde –, sondern eine Sonderbehandlung vornimmt:
Er nimmt den Wert »nil« als Zeichen dafür, auf die übliche Art und
Weise zu piepsen oder zu zwinkern. (Vermutlich ruft er dabei
irgendwann auch die Funktion »ding« auf.)

Steht in der Variablen »ring-bell-function« jedoch nicht der Wert
»nil«, macht er keine Sonderbehandlung mehr, sondern nimmt an,
dass der in der Variablen enthaltene Wert der Name einer
Lisp‐Funktion oder ein Lambda‐Ausdruck (d. h. eine namenlose
Lisp‐Funktion) ist. Er liest den Variablenwert aus, ruft ihn als
Funktion auf, nimmt den Funktionswert entgegen und wirft ihn
unbesehen weg.

Der Witz des Funktionsaufrufs besteht nur darin, dass geschieht,
was die Funktion befiehlt. Die Funktion wird gewissermaßen als
Prozedur missbraucht (aber in Emacs‐Lisp gibt es keine Prozeduren,
nur Funktionen).

Loading...