* Am 19.10.2010 begab es sich, dass Memnon Anon schrieb:
> Sabine 'Sani' Schulz <ga
...@f650gs.eu> writes:
>> * Am 17.10.2010 begab es sich, dass Andreas R hler schrieb:
>>> ndere den Text hinter message und schau was nach jweils neuem eval
>>> passiert. Und schon hast Du progammiert...
>> Probiere ich :-)
> Du musst ja gar nicht so weit gehen, "was f r Emacs/Gnus" zu
> programmieren, sprich eine grooooo e Erweiterung zusammenzubasteln.
Das hatte ich auch nicht vor :-), k nnte ich auch gar nicht. Reiner hat
mir immer geholfen, alleine meine Einleitungszeile [1} w rde ich nie
hinbekommen.
Als ich Admin eines ffentlichen Newsservers war, mu te ich mit Gnus
Fremdcancel machen k nnen, Reiner hat mir geholfen.
Seit Jahre habe ich das B chlein "GNU Emacs" von O*Reilly im Regal
stehen, ich wei nicht, warum ich nie reingesehen habe.
> Mit Emacs begegnet dir Programmierung praktisch auf Schritt und Tritt;
> man kann gar nicht anders :). Andreas sagt das ganz richtig: "Und schon
> hast du programmiert...".
> Hier ein kleines Beispiel aus meiner .elisp:
> [such ... kram ... neee ... ach ja, nehmen wir das:]
> ,----
> | (global-set-key (kbd "<f9> g") (lambda () (interactive)
> | (my-switch-or-start 'gnus "*Group*")))
> `----
> Ich belege hier die Tasten `f9 g' mit einer kleinen Funktion, die keinen
> eigenen Namen braucht [lambda=Anonyme Funktion] und keine andere
> Aufgabe kennt als die Funktion my-switch-or-start mit festen Parametern
> auszuf hren.
> ,----
> ;; Found here: http://github.com/technomancy/
> emacs-starter-kit/blob/476c8a88eb68b9f3923da23b76df1986347dfe5b/
> starter-kit-defuns.el
> | (defun my-switch-or-start (function buffer)
> | "If the buffer is current, bury it, otherwise invoke the function."
> | (if (equal (buffer-name (current-buffer)) buffer)
> | (bury-buffer)
> | (if (get-buffer buffer)
> | (switch-to-buffer buffer)
> | (funcall function))))
> `----
> `my-switch-or-start' bekommt zwei Argumente: 1. Den Befehl (z.B. M-x
> Gnus), mit dem das Programm gestartet wird und 2. den Buffer Namen, in
> dem das Programm normalerweise l uft.
> 1. if: Ist der aktuelle Buffer schon das Programm? Falls ja, dann aus
> dem Weg damit. Ende. Sonst:
> 2. if: Existiert schon ein Buffer mit dem Programm? Falls ja, dann
> anzeigen bitte sch n.
> Falls nein, dann aber schnell starten.
Verstehe.
> Nun kann ich gnus aus jeder Lebenslage mit `f9 g' auf den Bildschirm
> zaubern.
Interessant.
Ich repariere eigentlich nur, wenn Emacs oder Gnus mal nicht l uft,
irgendwie habe ich es immer hingekriegt, letztendlich wei ich aber gar
nicht, was ich tue bzw. woran das Problem lag.
>> Auf Linux habe ich mich mal in Shell-Programmierung versucht, es stehen
>> ein paar B cher dazu im Schrank, mein gr ter Erfolg war, da ich das
>> CVS-Gnus per meinem Script installieren konnte (auf debian).
>> Ich glaube nicht, da ich jemals was f r Emacs/Gnus programmieren kann,
>> ich mu halt ungef hr verstehen, was programmiert ist, wenn ich auf
>> Problemsuche bin.
> Ich hab auch mal Bash "angelernt", es aber einfach zu selten gebraucht,
> so dass selbst Modifikationen meiner eigenen Skripte m hselig wurden.
> Vor kurzem ist mir dann aufgegangen, dass ich vieles einfacher mit elisp
> hinbekommen, und ich habe so manches Skript einfach in elisp neu
> geschrieben, was schneller ging, als die entsprechende bash syntax noch
> mal nachzuschlagen und dann zu modifizieren.
> Elisp ist phantastisch, wenn man noch viel experimentieren muss:
> `C-x C-e' oder `M-x eval-buffer'- und schon kann man loslegen.
Ich bin reiner Anwender, ich experimentiere nur, wenn ich ein Problem
l sen mu .
> Zun chst schaut man sich nur anderer Leute Schnipsel an und versucht
> herauszubekommen, was da eigentlich passiert. Dann passt man bald das,
> was man da vorfindet, ein wenig an.
> Doch man muss da nicht aufh ren. Mit ein bisschen Mut schreibt man bald
> seinen eigenen 3 Zeilen Schnipsel, liest mal das elisp intro und macht
> sich mit apropos, `C-h f', `emacs --batch' etc. vertraut.
F r lange Winterabende habe ich mir vorgenommen, mehr ber Emacs/Gnus zu
lernen; nicht, weil ich es brauche, sondern weil es interessant ist.
> Und eh man sichs versieht, stehen einem eine ganze Menge Hilfsmittel
> offen, die sich auch ausserhalb des "Ich editiere Text" Bereiches
> anwenden lassen.
Ich habe da eher andere Probleme, ber umso mehr ich ich Programmierung
lerne, umso leichter lassen sich Probleme l sen.
Gr e
Sabine
[1]
;; einleitungszeile
(setq mail-extr-ignore-single-names nil)
(setq message-citation-line-function 'my-insert-citation-line)
(defun my-insert-citation-line ()
"Insert a citation line that includes the original article's date."
(when message-reply-headers
(let* ((time (date-to-time (mail-header-date message-reply-headers)))
(date (format-time-string "%d.%m.%Y" time))
(groups (message-fetch-reply-field "newsgroups"))
(from (gnus-extract-address-components
(mail-header-from message-reply-headers)))
(realname (car from))
;; (first-name (if (string-match "RE" realname)
;; (match-string 1 realname) realname)))
(first-name (if (and realname (string-match "\\(.+\\) .+" realname))
(match-string 1 realname) realname))
(mail (concat "<" (cadr from) ">")))
(if (not (message-news-p))
(insert "Hallo"
(if first-name (concat " " first-name) "")
",\n\nam " date " schriebst Du"
(if groups
(if (string-match "\\(,\\)" groups)
(concat " in "
(substring groups 0 (match-beginning 0))
" et al.")
(concat " in " groups))
"")
":\n\n")
(insert "* Am " date " begab es sich, dass "
(or realname mail) " schrieb:\n\n")))))
--