Emaksaj Konsiletoj 1-a: Regionoj kaj Markoj

Esperanto┃English
Laste ĝisdatigita: la 17-an de marto 2022

La voĉon ne pligrandigu; la argumenton plibonigu.
—Desmond TUTU

robert-keane-rlbG0pnQOU-unsplash

Enhavotabelo

Introduction

Mi ankoraŭ bezonas trovi pli bonan redaktilon ol emakso. Tio, kio igas emakson elstara, estas ĝia agorda lingvo—emakslispo. Emakso uzas ĝin al punkto, en kiu, plejparto de la funkciado de ĝi mem, realiĝas per emakslispo. En ĉi tiuj serioj, mi priparolos la aferojn, kiujn mi malkovris fari la uzadon de emakso pli agrabla persone.

Regionoj

La jena komando forviŝas regionon se unu aktivas aŭ forviŝas la signon sub la kursoro.

(defun delete-char-or-region (&optional arg)
  (interactive "p")
  (if (region-active-p)
      (delete-region (region-beginning)
                     (region-end))
      (if (fboundp 'delete-char)
          (delete-char arg)
          (delete-forward-char arg))))

Kompilo

Ofte mi uzas la jenan komandon kaj mi uzas ĝin kiam komposti LaTex-dokumentojn, kompili Scribble-dokumentojn, kompili kodon, kaj por preskaŭ io ajn, al kiu mi povas uzi ĝin.

(defun compile-file ()
  (interactive)
  (compile "make -k"))

Skimo

Mi volas havi komandon kiu eksplicite konservas la enigan historion de Geiser:

(defun geiser-save ()
  (interactive)
  (geiser-repl--write-input-ring))

Kaj mi ankaŭ havas la jenan tial, ke mi volas ĝisrandigi plaĉe la λ-simbolon.

(defun my-scheme-mode-hook ()
  (put 'λ 'scheme-indent-function 1))

(add-hook 'scheme-mode-hook 'my-scheme-mode-hook)

Servilo

La jena certigas kodaĵo, ke la emaksa servilo—tiu, kiu emacsclient konektas al—ruliĝos:

(require 'server)

(unless (server-running-p)
  (server-start))

Alterne, oni povas ruli emakson en demonreĝimo ĉe la komandlinio:

$ emacs --daemon

Bufroj

Mi volas havi manieron por mortigi la aktualan bufron sen demandita kiun bufron por mortigi. Mi nur invitiĝos se la aktuala bufro ŝanĝiĝis:

(defun kill-current-buffer ()
  (interactive)
  (kill-buffer (current-buffer)))

Markoj

Estis multe da fojoj en la estinteco kiam mi bezonis funkcion kiu markas nur linion. Kiun mi havas estas la jena. Ruli ĝin multfoje markas plurajn liniojn.

(defun mark-line (&optional arg)
  (interactive "p")
  (if (not mark-active)
      (progn
        (beginning-of-line)
        (push-mark)
        (setq mark-active t)))
  (forward-line arg))

Klavkombinoj

La klavkombinoj por la supraj komandoj, estas la jenaj:

(bind-keys
 :map global-map
 ("<delete>" . delete-char-or-region)
 ("C-x C-k" . kill-current-buffer)
 ("C-x c" . compile-file)
 ("M-z" . mark-line))

(bind-keys
 :map scheme-mode-map
 ("C-c <tab>" . completion-at-point))

Finrimarkoj

Mi esperas, ke oni povos esti kapabla trovi uzojn el kelke da aferoj ĉi-supre. La ceteraj agordoj troveblas ĉi tie.