[[Vorlage(Getestet, focal, bionic)]] {{{#!vorlage Wissen [:Emacs: Hauptartikel zu Emacs] [:Terminal: Ein Terminal öffnen] [:Editor: Einen Editor bedienen] }}} [[Inhaltsverzeichnis(2)]] [[Bild(Emacs/emacs_icon.png, 48, align=left)]] Der Editor [:Emacs:] ist vielfältig konfigurierbar. Hier findet sich eine kleine Auswahl an elisp-Schnipseln, die den Alltag erleichtern. \\ Die Hauptseite [1] des Artikels findet man unter [:Emacs:]. == Start-Screen, Batterielevel, Uhrzeit, Zeilennummern == Die hier angegebenen Optionen werden in der Konfigurationsdatei '''~/.emacs''' eingetragen. `t` bedeutet dabei ''true'' (wahr, an), `nil` ist ''false'' (falsch, aus). {{{#!code lisp (custom-set-variables ;; … '(inhibit-startup-screen t) ;; Unterdrückt den Startbildschirm '(display-time-mode t) ;; Zeigt die Uhrzeit in der Statusleiste an '(display-battery-mode t) ;; Batteriestatus einblenden, wenn vorhanden '(display-line-numbers-type nil) ;; Zeilennummern ausblenden. Andere erlaubte Werte: t, relative, visual ;; … ) }}} == Zeilen verschieben == Mit folgender Ergänzung in der Konfigurationsdatei '''~/emacs''', ist es möglich, entweder die aktuelle Zeile, oder den markierten Text mit Hilfe von [[Vorlage(Tasten, ALT+up)]]/[[Vorlage(Tasten, ALT+down)]] hoch/runter zu verschieben. {{{#!code lisp (defun move-text-internal (arg) (cond ((and mark-active transient-mark-mode) (if (> (point) (mark)) (exchange-point-and-mark)) (let ((column (current-column)) (text (delete-and-extract-region (point) (mark)))) (forward-line arg) (move-to-column column t) (set-mark (point)) (insert text) (exchange-point-and-mark) (setq deactivate-mark nil))) (t (let ((column (current-column))) (beginning-of-line) (when (or (> arg 0) (not (bobp))) (forward-line) (when (or (< arg 0) (not (eobp))) (transpose-lines arg)) (forward-line -1)) (move-to-column column t))))) (defun move-text-down (arg) "Move region (transient-mark-mode active) or current line arg lines down." (interactive "*p") (move-text-internal arg)) (defun move-text-up (arg) "Move region (transient-mark-mode active) or current line arg lines up." (interactive "*p") (move-text-internal (- arg))) (provide 'move-text) (global-set-key [M-up] 'move-text-up) (global-set-key [M-down] 'move-text-down) }}} Die Vorlage wurde entnommen von [http://www.emacswiki.org/emacs/MoveText] {en}. == DBUS in Emacs == Emacs bietet keine native Unterstützung des [:D-Bus:DBUS] an, jedoch ausreichend Methoden, um diese Funktionalität selbst einstellen zu können. Hier wird ein Minimal-Beispiel dargestellt, welches man als Gerüst für eigene Methoden nutzen kann. {{{#!code lisp ;;; uu-dbus.el --- description -*- lexical-binding: t; -*- ;; ;; Copyright (C) 2020 Autor ;; ;; Author: Autor ;; Maintainer: Autor ;; Created: March 28, 2020 ;; Modified: March 28, 2020 ;; Version: 0.0.1 ;; Keywords: examples dbus ;; Homepage: https://website.domain ;; Package-Requires: ((emacs 26.3) (cl-lib "0.5")) ;; ;; This file is not part of GNU Emacs. ;; ;; This program is free software: you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation, either version 3 of the License, or ;; (at your option) any later version. ;; ;; This program is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; ;; You should have received a copy of the GNU General Public License ;; along with this program. If not, see . ;; ;; ;;; Commentary: ;; "DBus-Beispiel für ubuntuusers.de. Es kann eine Zeichenkette gesetzt und übergeben werden." ;; ;;; Code: (require 'dbus) (defvar emacs-uu-aktueller-link "Diese Variable enthält den aktuell zu repräsentierenden Link. Kann mittels emacs-uu-setLink geändert werden." ) ;; Standard setzen (setq emacs-uu-aktueller-link "https://ubuntuusers.de") (defun emacs-uu-link () "Gibt den aktuell gespeicherten Link zurück." (list :string emacs-uu-aktueller-link ) ) (defun emacs-uu-setLink (nm) "Setzt 'emacs-uu-aktueller-link auf NM, falls abweichend." (if(string-equal nm emacs-uu-aktueller-link ) (message "Das ist bereits der Link!") (setq emacs-uu-aktueller-link nm) (message "Link gesetzt auf:%s" emacs-uu-aktueller-link))) (dbus-register-method :session "org.emacs.ubuntuusers" "/uu" "org.emacs.ubuntuusers" "getUrl" 'emacs-uu-link) (dbus-register-method :session "org.emacs.ubuntuusers" "/uu" "org.emacs.ubuntuusers" "setUrl" 'emacs-uu-setLink) (defun dbus-emacs-slash-introspect () "DBus: Pfad / durchsuchbar machen." '(" ")) (dbus-register-method :session "org.emacs.ubuntuusers" "/" dbus-interface-introspectable "Introspect" 'dbus-emacs-slash-introspect) (defun dbus-emacs-slash-uu-introspect () "DBus: Pfad /uu mit Interface org.emacs.ubuntuusers.+Methoden durchsuchbar machen." '(" ")) (dbus-register-method :session "org.emacs.ubuntuusers" "/uu" dbus-interface-introspectable "Introspect" 'dbus-emacs-slash-uu-introspect) (provide 'uu-dbus) ;;; uu-dbus.el ends here }}} Beispiel testen: {{{#!vorlage befehl qdbus org.emacs.uu /UbuntuUsers org.emacs.uu.setUrl https://ubuntuusers.de qdbus org.emacs.uu /UbuntuUsers org.emacs.uu.showUrl }}} = Links = == intern == * [:Emacs:] - Hauptartikel * [:Emacs/Erweiterungen:] * [:Skripte:] {Übersicht} - Übersichtsartikel == extern == * [https://www.gnu.org/software/emacs/manual/html_mono/dbus.html Emacs - DBUS auf gnu.org] {en} * [https://www.gnu.org/software/emacs/manual/eintr.html Emacs Lisp auf gnu.org] {en} * [https://www.gnu.org/software/emacs/manual/html_node/elisp/Library-Headers.html Library Headers auf gnu.org] {en} # tag: Editor, Emacs