;;; -*-Emacs-Lisp-*- ;; dot.emacs ;; Skapad: 950916 David Kågedal ;; ================================================================== ;; Detta är en exempelfil som är tänk att användas som ~/.emacs. Den ;; går att använda som den är, men det är tänkt att den ska inbjuda ;; till egna förbättringar. /David ;; ================================================================== ;; Denna fil finns också på ;; http://www.lysator.liu.se/upplysning/emacs/dot.emacs ;; Den första raden i filen innehåller texten -*-Emacs-Lisp-*-. Detta ;; är för att emacs ska veta att detta är en Emacs Lisp-fil, och ;; ställa in sig för det. Läs mer i info: (emacs)Choosing Modes ;; Alla anpassningar som görs i den lokala emacs-installationen finns ;; i filen default.el. Den körs normalt sett efter att .emacs har ;; körts. För att få större kontroll över vad som händer ser vi till ;; att default.el körs först istället. ;; Denna rad sätter variabeln inhibit-default-init till t, dvs ;; sant. Det gör att Emacs inte kommer att ladda default.el alls. (setq inhibit-default-init t) ;; Nu laddar vi default.el själva istället. Notera att man inte anger ;; suffixet .el eller .elc i load. (load "default") ;; Nu adderar vi egna directories till sökvägen för Emacs ;; Lisp-filer. Vi lägger till ~/elisp, men du kan själv utöka listan ;; om du vill. Funktionen expand-file-name expanderar det magiska ;; tecknet "~" till sökvägen till din hemkatalog. Egentligen kunde man ;; ha skrivit bara "~/elisp", och inte använt expand-file-name, men då ;; måste Emacs expandera filnamnet varje gång den ska leta efter ;; filer. (setq load-path (append (list (expand-file-name "~/elisp") ;; Fler dir här ) load-path)) ;;; -------- Globala inställningar ;; Detta ska egentligen vara satt korrekt utan att du ber om det, men ;; om du vill använda den här filen någon annanstans än på Lysator är ;; det nog bäst att ta med den här raden. Men om du tar bort ;; kommentartecknet i början på raden, så glöm inte att ändra adressen ;; till din egen. ;(set user-mail-address "davidk@lysator.liu.se") ;; Oidentifierbara filer ska öppnas i text-mode (setq default-major-mode 'text-mode) ;; Avsluta alla filer med ett newline-tecken. ;; nil - Gör ingenting ;; t - Lägg till newline om det inte finns ;; något annat - Fråga först (setq require-final-newline 'ask) ;; Gör så att ange-ftp använder anonym FTP om inget annat anges. (setq ange-ftp-default-user "anonymous") (setq ange-ftp-default-password user-mail-address) ;; Visa 24-timmarstid med display-time (setq display-time-24hr-format t) ;; I Sverige börjar veckan med måndag. (setq calendar-week-start-day 1) ;; Ange hur backupfiler ska sparas. När du sparar en fil kommer den ;; gamla kopian att sparas under namnet filnamn~, eller enligt följande. ;; t - Spara numrerade backupfiler. De heter fil.~1~, fil.~2~ etc. ;; nil - Spara bara numrerade filer om det redan fanns numrerade filer. ;; never - Spara aldrig numrerade filer. (setq version-control nil) ;; Gör backupfiler, även om de ligger under versionskontroll (RCS etc) (setq vc-make-backup-files t) ;; När man programmerar kan det ibland vara väldigt trevligt om Emacs ;; blinkar matchande parenteser även om de står långt ifrån varandra. ;; Det kan göra Emacs lite långsammare någon gång ibland, men det är ;; det värt. (setq blink-matching-paren-distance nil) ;; Utan den här raden kan man råka stoppa in en massa extra tomrader ;; sist i filen om man trycker C-n för många gånger. (setq next-line-add-newlines nil) ;; Gör autoload på aao-mode ;; Dett är ett litet paket (minor-mode) skrivet av David Kågedal, som ;; gör att tangenter, som i normala fall skulle ha gett }, { eller |, ;; kommer att ge å, ä resp. ö istället. Detta kan vara användbart med ;; vissa tangentbordslayouter och terminaler. ;; aao-mode finns för anonymm ftp på ftp.lysator.li.se i ;; /pub/emacs. Den är förinstallerad på Lysators datorsystem. (autoload 'aao-mode "aao-mode" "aao-mode på/av" t) (autoload 'turn-on-aao-mode "aao-mode" "aao-mode p}" t) ;;; Tangentdefinitioner ;; Bind upp några lämpliga kommandon på C-c (global-set-key "\C-ca" 'aao-mode) ; Slå av/på aao-mode (global-set-key "\C-cf" 'auto-fill-mode) ; Slå av/på auto-fill (global-set-key "\C-cF" 'font-lock-mode) ; Slå av/på font-lock ;; Byt plats på RET och LF. Det gör att RET kommer att indentera ;; raderna i programkod. (setq foo (global-key-binding "\C-m")) ; Spara bindningen på RET (global-set-key "\C-m" (global-key-binding "\C-j")) ; Sätt RET till LF (global-set-key "\C-j" foo) ; Sätt LF till gamla RET ;; C-h a är normalt command-apropos, som gör att man kan söka efter ;; kommandon. Om man binder den till apropos istället kan man söka ;; efter mycket mer. (global-set-key "\C-ha" 'apropos) ; B{ttre {n command-apropos ;; -------- Mail ;; Här kommer lite inställningar som har med mail att göra ;; Sätt in filen ~/.signature sist i varje brev (setq mail-signature t) ;; Kommenterad text ska föregås av nedanstående sträng på varje rad. (setq mail-yank-prefix ">") ;; Detta är en rätt ful lösning. När man trycker C-c C-y i ;; *mail*-bufferten när man svarar på ett brev så sätter man in den ;; kommenterade texten, men för att den inte ska sätta in så mycket ;; onödigt junk så gör vi så här. (defconst mail-yank-ignored-headers "^.*:" "Delete these headers from old message when it's inserted in a reply.") ;; Gör så att }{| skriver åäö när man skriver mail. (add-hook 'mail-mode-hook 'turn-on-aao-mode) ;; Slå på auto-fill när man skriver mail (add-hook 'mail-mode-hook 'turn-on-auto-fill) ;; Skicka alla mail till mig själv så att jag kan arkivera dem. (setq mail-self-blind t) ;; -------- HTML/WWW ;; Gör så att vi editerar HTML-filer med html-helper-mode. (autoload 'html-helper-mode "html-helper-mode" "HTML editing mode" t) (or (assoc "\\.html$" auto-mode-alist) (setq auto-mode-alist (cons '("\\.html$" . html-helper-mode) auto-mode-alist))) ;; Fyll i nya HTML-dokument med ett skelett. (setq html-helper-build-new-buffer t) ;; Ladda lite extra HTML-prylar och slå på auto-fill och aao-mode när ;; man editerar HTML-filer (add-hook 'html-helper-load-hook '(lambda () (load "hhm-netscape") (load "html-font") (turn-on-auto-fill) (turn-on-aao-mode))) ;; Färglägg HTML-filer (and window-system (add-hook 'html-helper-mode-hook 'turn-on-font-lock)) ;; -------- font-lock ;; Lazy-lock gör så att font-lock kan färglägga i bakgrunden. (autoload 'turn-on-lazy-lock "lazy-lock" "Unconditionally turn on Lazy Lock mode.") (add-hook 'font-lock-mode-hook 'turn-on-lazy-lock) ;; -------- Dired ;; Denna flagga gör det väldigt enkelt att kopiera filer mellan två ;; dired-buffertar. (setq dired-dwim-target t) ;; -------- Autoadapt ;; autoadapt ger en bättre auto-fill (require 'autoadapt) ;; Specialized adaptive auto-fill tables (add-hook 'text-mode-hook 'autoadapt-itext-table) (add-hook 'c-mode-hook 'autoadapt-c-comment-table) ;; Generic programming mode comment adaptive auto-fill tables (add-hook 'c++-mode-hook 'autoadapt-set-comment-table) (add-hook 'makefile-mode-hook 'autoadapt-set-comment-table) (add-hook 'lisp-mode-hook 'autoadapt-set-comment-table) (add-hook 'sh-mode-hook 'autoadapt-set-comment-table) ;; -------- Övrigt ;; Gör så att minibufferten ändrar storlek om man skriver flera rader. (require 'rsz-mini) ;; En mycket trevligare sidbläddring. Ändrar funktionen på C-v/M-v. (require 'scroll-in-place) ;; Bokmärken är bra att ha (require 'bookmark) ;; Denna funktion skickar en buffert längst bak, och tar bort det ;; fönster den låg i. Om filen inte var sparad så frågar den om man ;; vill spara filen. Observera att bufferten inte tas bort, och man ;; kan alltid spara filen senare. (defun bury-this-buffer () "Buries the current buffer." ;; Detta är ett kommando (interactive) ;; Är det en osparad fil i bufferten? (if (and buffer-file-name (buffer-modified-p) ;; Fråga om användaren vill spara (y-or-n-p (format "Save buffer %s?" (buffer-name (current-buffer))))) ;; Om allt ovan blev ja, så spara filen (save-buffer)) ;; Skicka bufferten längst bak (bury-buffer) ;; Om detta inte är det enda fönstret, så ta bort det (if (not (eq (next-window) (selected-window))) (delete-window))) ;; Bind den till C-c b (global-set-key "\C-cb" 'bury-this-buffer) ;;; -------- Slut (message ".emacs loaded")