Emacs/wiki
Použití emacsu pro editaci wiki
Emacs jako externí editor do browseru
editovatChci editovat nějakou wiki stránku či cokoliv jiného pomocí emacsu.
- mw: Manual:External editors – od verze 1.22 už není podporováno
- w:en: Help:Text editor support – velmi podrobný návod
- WikEmacs.org: Emacs as a web browser's external editor
- It's All Text! – rozšíření pro Mozilla Firefox
- (Alex 2012-12-17): Edit with Emacs – rozšíření Edit with Emacs pro Google Chrome
Řešení:
GhostText
editovatCokoli napíšeme do externího editoru, okamžitě se přenese do okénka browseru, a naopak.
- autor: bfred.it
Extenze to browseru:
- do Google Chrome: chrome.google.com/webstore/detail/ghosttext
- do Firefoxu: https://addons.mozilla.org/en-US/firefox/addon/ghosttext/
V tuto chvíli ale nabízí řešení pouze pro čtyři kompatibilní editory:
- Sublime Text
- Atom
- VS Code
- Vim
atomic-chrome
editovatAlternativa ke GhostText
Instalace:
- Do Chrome nainstaluji https://chrome.google.com/webstore/detail/atomic-chrome/lhaoghhllmiaaagaffababmkdllgfcmc
- (Zahlásí, že instalace proběhla v pořádku a vlevo od [⋮] se objeví ikonka atomu
- Ujistím se, že mám nakonfigurovaný repositář Emacs/packages#MELPA:
C-h v package-archives
- Pokud ne, přidám si ho do seznamu:
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))
- V emacsu pustím
M-x package-install [RET]
on se mě zeptá:
Install package:
odpovím:
atomic-chrome
- Do svého konfiguráku ~/.emacs přidám dva řádky:
(require 'atomic-chrome) (atomic-chrome-start-server)
Použití:
- spustím emacs
- v Chrome umístím kursor do textového pole, které chci editovat
- v tool baru Chrome kliknu na tlačítko Atomic Chrome
- v emacsu se vytvoří nový buffer a v něm obsah pole z browseru
- editovat mohu jak v původním poli browseru, tak v emacsu
- editaci v emacsu ukončím C-c C-c (pokud ale editační okno v browseru předtím zavřu, zavře se mi automaticky i tento buffer)
It's All Text!
editovat- https://addons.mozilla.org/en-US/firefox/addon/its-all-text/ – odkaz už nefunguje, zřejmě to Mozilla přestala podporovat
- https://github.com/docwhat/itsalltext
- licence: GPL-3.0
- hlavní autor: Christian Höltje (docwhat)
Textern
editovat- https://addons.mozilla.org/en-US/firefox/addon/textern/
- https://addons.mozilla.org/cs/firefox/addon/textern/
- https://github.com/jlebon/textern
- licence: GPL-3.0
- autor: Jonathan Lebon (jlebon)
Pracuje pouze pod Linuxem a potřebuje Python 3.5 anebo vyšší.
Instalace
editovat- Nainstalujeme doplněk (addon)
- Nainstalujeme nativní aplikaci dle návodu na github
- Defaltní editor je gedit, ale je možno to změnit v preferencích doplňku
Postup instalace nativní aplikace
editovat- Naklonování z úložiště na lokální disk (potřebujeme mít nainstalovaný git):
git clone --recurse-submodules https://github.com/jlebon/textern cd textern
- Instalace:
sudo make native-install
Vypíše postup instalace:
sed -e 's|@@NATIVE_PATH@@|/usr/local/libexec/textern/textern.py|' native/textern.json.in > native/textern.json
mkdir -p /usr/lib64/mozilla/native-messaging-hosts
cp -f native/textern.json /usr/lib64/mozilla/native-messaging-hosts
mkdir -p /usr/local/libexec/textern
cp -rf native/textern.py native/inotify_simple /usr/local/libexec/textern
Předvolby
editovat- External editor: ["emacs", "+%l:%c"]
- Shortcut: Ctrl+Shift+D
- Document extension: txt
Použití
editovat- V browseru najedeme kursorem na textové okénko a zmáčkneme Ctrl+Shift+D, což otevře externí editor
- Po napsání textu dáme normálně "Save" a tím se textové okénko browseru naplní naším textem
Problém
editovat- zmáčknu Ctrl+Shift+D a nic se neděje
- zmáčknu ho podruhé a zase se nic neděje
- zmáčknu ho potřetí a vpravo nahoře mi vyskočí černé okénko s chybovou hláškou:
Textern Error: this text is already being edited [Activate]
Dohledám podobný problém: https://github.com/jlebon/textern/issues/31
Pomohlo, když byla instalována aplikace pouze pro jednoho uživatele a nikoli globálně:
Tak tedy:
sudo make native-uninstall make native-install USER=1
A dostanu výpis:
sed -e 's|@@NATIVE_PATH@@|/home/petr/.local/libexec/textern/textern.py|' native/textern.json.in > native/textern.json /bin/sh: 1: cannot create native/textern.json: Permission denied Makefile:24: recipe for target 'native/textern.json' failed make: *** [native/textern.json] Error 2
A tak zjišťuji, že v podadresáři native mám:
drwxrwxr-x 4 petr petr 4096 lis 30 10:54 inotify_simple -rw-r--r-- 1 root root 209 lis 30 10:56 textern.json -rw-rw-r-- 1 petr petr 187 lis 30 10:54 textern.json.in -rwxrwxr-x 1 petr petr 6577 lis 30 10:54 textern.py
A tak se divím, že textern.json patří rootovi. Přivlastním si ho tedy a znovu pustím instalaci s USER=1:
make native-install USER=1
Ohlásí:
sed -e 's|@@NATIVE_PATH@@|/home/petr/.local/libexec/textern/textern.py|' native/textern.json.in > native/textern.json mkdir -p /home/petr/.mozilla/native-messaging-hosts cp -f native/textern.json /home/petr/.mozilla/native-messaging-hosts mkdir -p /home/petr/.local/libexec/textern cp -rf native/textern.py native/inotify_simple /home/petr/.local/libexec/textern
To nepomohlo, takže jsem zavřel Firefox a znovu spustil a už to funguje. Odinstaluji tedy pro jednoho uživatele:
make native-uninstall rm -f /usr/lib64/mozilla/native-messaging-hosts/textern.json rm -rf /usr/local/libexec/textern
A instaluji znova:
sudo make native-install sed -e 's|@@NATIVE_PATH@@|/usr/local/libexec/textern/textern.py|' native/textern.json.in > native/textern.json mkdir -p /usr/lib64/mozilla/native-messaging-hosts cp -f native/textern.json /usr/lib64/mozilla/native-messaging-hosts mkdir -p /usr/local/libexec/textern cp -rf native/textern.py native/inotify_simple /usr/local/libexec/textern
A funguje opět!
Teď zkusím namísto geditu spustit emacs:
Namísto původní konfigurace:
["gedit", "+%l:%c"]
Dám:
["emacs", "+%l:%c"]
Funguje opět!
Perfektní je, že nastaví kursor na stejné místo, na jakém jsem ho měl v tom prohlížeči.
Délka řádků
editovatČasto se stane, že chceme přesunout na wiki nějaký text, který je formátovaný do řádků určité délky a odstavce jsou od sebe odděleny prázdným řádkem. Wiki naproti tomu potřebuje takové formátování zdrojových textů, kde celý odstavec je napsaný na jednom řádku. Problematiku zalamování řádků do odstavců emacs nazývá slovem filling.
Emacs v textovém módu může pracovat v zásadě ve dvou minor módech. V jednom módu se vstupní text píše neustále do jedné řádky, dokuď nestiskneme Enter. Abychom takový dlouhý řádek na obrazovce viděli, je pokračování řádku opticky naznačeno znakem \ na koci, aniž by se ovšem tyto znaky \ staly součástí textu. Naproti tomu v tzv. auto-fill-mode dochází k zalomení řádky (tj. vložení znaku nový řádek do textu) automaticky po překročení nastavené šířky sloupce. auto-fill-mode se přepíná (tj. zapíná a opět vypíná) příkazem:
M-x auto-fill-mode
Obvyklá šířka sloupce, tj. délka maximální délka řádky v tomto módu, je nastavena na 70 znaků. Změnit ji můžeme příkazem C-x f, tj. Set the fill column (set-fill-column). Tomuto příkazu ovšem musí předcházet argument, kterým určíme požadovaný počat znaků (argument vkládáme příkazem C-u).
Odstavec, který máme naformátovaný na nějakou šířku, můžeme přeformátovat příkazem M-q Fill current paragraph (fill-paragraph), pokud si předtím nastavíme vhodnou šířku sloupce. Více odstavců můžeme přeformátovat příkazem M-x fill-region, tj. Fill each paragraph in the region (fill-region).
Pomocí výše uvedených příkazů jíž můžeme přeformátovat všechny odstavce v bufferu. Idea bude následující:
- nastavíme si šířku sloupce na dostatečně velkou hodnotu, dejme tomu 10000 znaků: C-u 10000 C-x f
- nastavíme pointer na začátek bufferu: M-<
- označíme si začátek regionu: C-space
- odjedeme na konec bufferu - tam tím pádem budeme mít konec regionu: M->
- přeformátujeme všechny odstavce: M-x fill-region
Celá sekvence příkazů v klávesových zkratkách pak bude následující:
C-u 10000 C-x f M-< C-space M-> M-x fill-region