Emacs
Emacs to rodzina edytorów tekstu, znana ze swojej elastyczności i możliwości rozszerzeń. Najpopularniejsza wersja, GNU Emacs, opisuje się jako „rozszerzalny, dostosowywalny, samodokumentujący się edytor”. Rozwój Emacsa rozpoczął się w latach 70. XX wieku, a prace nad GNU Emacsem trwają do dziś.
Historia
Pierwsza wersja Emacsa, napisana przez Richarda Stallmana w 1976 roku, była zestawem makr dla innego edytora. W 1984 roku Stallman rozpoczął pracę nad GNU Emacsem, który stał się pierwszym programem projektu GNU. W 2008 roku Stallman przekazał projekt innym programistom.
Architektura Emacsa
Emacs składa się z niewielkiego jądra napisanego w C oraz interpreterem dialektu Lispu, Emacs Lisp. Dzięki tej konstrukcji, użytkownicy mogą w pełni kontrolować zachowanie edytora. Typowe rozszerzenia obejmują:
- Podświetlanie i automatyczne formatowanie kodu źródłowego
- Integracja z systemami kontroli wersji
- Obsługa różnych typów urządzeń
- Przeglądanie stron WWW i obsługa poczty elektronicznej
Tryby uruchomieniowe
GNU Emacs może być uruchamiany w dwóch trybach: tekstowym i graficznym. Oferuje również możliwość działania jako serwer, co umożliwia współdzielenie buforów przez różne klienty.
Skróty klawiszowe
W Emacsa każde wciśnięcie klawisza wywołuje funkcję napisaną w Emacs Lisp. Skróty klawiszowe oraz sekwencje zaczynające się od C-x lub C-c umożliwiają dostęp do różnych funkcji.
Tryby Emacsa
Emacs obsługuje dwa typy trybów: główne (Major) i pomniejsze (Minor). Tryby główne są dedykowane większości języków programowania, oferując kolorowanie składni oraz nowe funkcje, podczas gdy pomniejsze dodają pojedyncze funkcjonalności, jak wyświetlanie zegara.
Bufory
Operacje w Emacsie wykonywane są na buforach, które mogą reprezentować pliki, katalogi czy inne treści.
Minibufor
Minibufor to obszar, w którym wyświetlane są wyniki komend oraz wprowadzane są argumenty dla funkcji.
Okna i ramki
Oknami nazywamy obszary wyświetlania buforów, natomiast ramkami określamy okna w trybie graficznym, w których mogą być wyświetlane różne okna.
Hooki
Hooki w Emacsie umożliwiają wywoływanie kodu użytkownika w odpowiednich momentach, co pozwala na dostosowanie funkcji do określonych trybów.
Etags i ctags
Te programy generują indeksy definicji w plikach źródłowych, umożliwiając nawigację pomiędzy definicjami a ich wywołaniami.