Tipps mit Elisp und anderes …

Text Properties

Ersetzen eines Strings gegen etwas anderes

Cons: copy/yank only the replaced string is seen

; run it in scratch buffer
(let ((a "foobarbaz"))
  (put-text-property 0 (length a) 'display (make-string (length a) ?*) a)
  (insert a))

String Bestandteile unsichtbar machen

Pros: copy/yank gives you the complete string (usefull for hiding stuff)

; run it in scratch buffer
(let ((a "foobarbaz"))
  (put-text-property 1 (length a)  'invisible t a)
  (insert a))

Setzten von Vorder- und Hintergrundfarbe

(let ((a "foobarbaz"))
  (put-text-property 0 (length a)  'font-lock-face '(:background "cyan" :foreground "cyan")  a)
  (insert a))

Create ASCII Graphs picture-mode / artist-mode

In org-mode in the ditaa Source Block

<name>

hit C-c C-c and you will be routed in a separat frame with picture-mode and artist-mode as minor mode.

Zuerst sollte man mit der Maus an das untere Ende des Buffers klicken und sich dann das entsprechende Malwerkzeug aus der Leiste oder via ido http://www.emacswiki.org/emacs/ArtistMode aussuchen. Sinnvoll ist hier sicher erst einmal rectangle, denn damit kann man einiges anstellen. Ist das entsprechende Malelement ausgewählt, so kann man es mit RET aktivieren oder deaktivieren. Ist es akktiv, so erschein ein * neben dem Element. Ist es inaktiv, so erscheint nichts.

Rectangle kopieren

Bereich markieren und kopieren C-x r r Man muss dann auch noch eine Registernummer eingeben. Bereich einfügen C-x r g So kann man auch den Abstand zwischen zwei Objekten vergrößern/verkleinern.

Whitespace Rectangles

Will man beispielsweise eine vertikale Linie weiter nach rechts verschieben, alse Leerzeichen / Whitespaces einfügen, so die Anzahl an Whitespace markieren und dann > Blank out the region-rectangle, shifting text right. =C-x r o

Leerzeilen hinter der markierten Zeile einfügen

C-o

Leerzeilen löschen

Bereich markieren und Entf drücken oder in die Zeile gehen, bis zu der man löschen will und dann Entf drücken. Geht es einmal nich weiter, die Zeilen markieren und dann Entf

Hooks im picture-mode zum besseren Arbeiten

(setq picture-mode-hook (quote (linum-mode hl-line-mode ruler-mode)))

Der ruler-mode wird von einer anderen Zeile überschrieben. Er müsste noch einmal separat aktiviert werden.

ido stuff in artist-mode – get the malwerkzeuge more easy

;;; integrate ido with artist-mode
(defun artist-ido-select-operation (type)
  "Use ido to select a drawing operation in artist-mode"
  (interactive (list (ido-completing-read "Drawing operation: " 
                                        (list "Pen" "Pen Line" "line" "straight line" "rectangle" 
                                              "square" "poly-line" "straight poly-line" "ellipse" 
                                              "circle" "text see-thru" "text-overwrite" "spray-can" 
                                              "erase char" "erase rectangle" "vaporize line" "vaporize lines" 
                                              "cut rectangle" "cut square" "copy rectangle" "copy square" 
                                              "paste" "flood-fill"))))
  (artist-select-operation type))
(defun artist-ido-select-settings (type)
  "Use ido to select a setting to change in artist-mode"
  (interactive (list (ido-completing-read "Setting: " 
                                        (list "Set Fill" "Set Line" "Set Erase" "Spray-size" "Spray-chars" 
                                              "Rubber-banding" "Trimming" "Borders"))))
  (if (equal type "Spray-size") 
      (artist-select-operation "spray set size")
    (call-interactively (artist-fc-get-fn-from-symbol 
                       (cdr (assoc type '(("Set Fill" . set-fill)
                                          ("Set Line" . set-line)
                                          ("Set Erase" . set-erase)
                                          ("Rubber-banding" . rubber-band)
                                          ("Trimming" . trimming)
                                          ("Borders" . borders)
                                          ("Spray-chars" . spray-chars))))))))
(add-hook 'artist-mode-init-hook 
        (lambda ()
          (define-key artist-mode-map (kbd "C-c C-a C-o") 'artist-ido-select-operation)
          (define-key artist-mode-map (kbd "C-c C-a C-c") 'artist-ido-select-settings)))

Texte / Chars löschen ohne Verschiebungen

C-u 4 C-d löscht die 4 folgenden Zeichen ohne dass nachfolgende verschoben werden. So kann man Texte ganz gut löschen.

Dateinamen / kompletten Pfad im dired erhalten

Im dired Baum:

  • w (dired-copy-filename-as-kill &optional ARG)
  • C-u 0 w With a zero prefix arg, use the absolute file name of each marked file
  • C-y yank to other buffers

tramp und sudo auf dem remote host

/ssh:<remote_node>|sudo:<remote_node>:<remote_file>

Author: Torsten Senf

Created: 2018-06-05 Di 20:32

Validate