X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=emacs_el%2Fconfiguration%2Fdon-configuration.org;h=ec41966890064fa3a69f48cf481afd956c6d28de;hb=b9d6b583d6fa7c9875169c09274e3ce1904bab19;hp=de65daf6546d9596a2c450df6cac356b55472082;hpb=83a1896bfe36d3f9c27c5499a32b8400bd16cc9d;p=lib.git diff --git a/emacs_el/configuration/don-configuration.org b/emacs_el/configuration/don-configuration.org index de65daf..ec41966 100644 --- a/emacs_el/configuration/don-configuration.org +++ b/emacs_el/configuration/don-configuration.org @@ -30,6 +30,9 @@ load [[https://github.com/jwiegley/use-package/][use-package]] even faster #+BEGIN_SRC emacs-lisp (setq package-enable-at-startup nil) (setq package--init-file-ensured t) + (setq package-archives '(("gnu" . "https://elpa.gnu.org/packages/") + ("melpa" . "https://melpa.org/packages/") + ("org" . "http://orgmode.org/elpa/") )) (eval-and-compile (setq use-package-verbose (not (bound-and-true-p byte-compile-current-file)))) (mapc #'(lambda (add) (add-to-list 'load-path add)) @@ -49,9 +52,6 @@ load [[https://github.com/jwiegley/use-package/][use-package]] even faster nil)) load-path)))))) - (setq package-archives '(("gnu" . "https://elpa.gnu.org/packages/") - ("melpa" . "https://melpa.org/packages/") - ("org" . "http://orgmode.org/elpa/") )) (require 'use-package) (require 'diminish) (require 'bind-key) @@ -115,7 +115,7 @@ load [[https://github.com/jwiegley/use-package/][use-package]] even faster * Modules ** Hippie Expand #+BEGIN_SRC emacs-lisp - (use-package hippie-expand + (use-package hippie-exp :bind* (("M-" . hippie-expand)) ) #+END_SRC @@ -338,6 +338,7 @@ value, scrolling continues until there is no more output. "~/lib/emacs_el/yasnippet-snippets/snippets/")) (add-to-list 'hippie-expand-try-functions-list 'yas-hippie-try-expand) + (yas-reload-all) ) ) #+END_SRC @@ -407,6 +408,51 @@ value, scrolling continues until there is no more output. )) #+END_SRC +** Markdown mode +#+BEGIN_SRC emacs-lisp + (use-package markdown-mode + :ensure t + :mode (("\\.md\\'" . markdown-mode) + ("\\.mdwn\\'" . markdown-mode) + ("README\\.md\\'" . gfm-mode) + ) + :config + (setq markdown-enable-math t) + (setq markdown-follow-wiki-link-on-enter nil) + (bind-key "M-." #'markdown-jump markdown-mode-map) + (add-hook 'markdown-mode-hook #'flyspell-mode) + (add-hook 'markdown-mode-hook #'outline-minor-mode) + (bind-key "C-" #'outline-cycle markdown-mode-map) + ) + +#+END_SRC +** SQL mode +#+BEGIN_SRC emacs-lisp + ; load sql-indent when sql is loaded +(use-package sql + :mode (("\\.sql\\'" . sql-mode)) + :config + (require sql-indent)) +#+END_SRC +** Ediff +#+BEGIN_SRC emacs-lisp + (use-package ediff + :commands ediff ediff3 + :ensure f + :config + ;; ediff configuration + ;; don't use the multi-window configuration + (setq ediff-window-setup-function 'ediff-setup-windows-plain) + ) +#+END_SRC +** VCL --editing varnish configuration files +#+BEGIN_SRC emacs-lisp + (use-package vcl-mode + :ensure t + :mode "\\.vcl\\'" + ) + +#+END_SRC ** Helm #+BEGIN_SRC emacs-lisp (defun malb/helm-omni (&rest arg) @@ -729,14 +775,16 @@ This can be used to link things pretty quickly if necessary ** Tramp #+BEGIN_SRC emacs-lisp - (add-to-list 'tramp-methods '("vcsh" - (tramp-login-program "vcsh") - (tramp-login-args - (("enter") - ("%h"))) - (tramp-remote-shell "/bin/sh") - (tramp-remote-shell-args - ("-c")))) + (use-package tramp + :config + (add-to-list 'tramp-methods '("vcsh" + (tramp-login-program "vcsh") + (tramp-login-args + (("enter") + ("%h"))) + (tramp-remote-shell "/bin/sh") + (tramp-remote-shell-args + ("-c"))))) #+END_SRC ** Reftex #+BEGIN_SRC emacs-lisp @@ -869,13 +917,18 @@ This can be used to link things pretty quickly if necessary (use-package ess :ensure t :commands R - :mode "\\.R\\'" + :mode ("\\.R\\'" . ess-r-mode) :bind (:map ess-mode-map ("C-c C-R" . dla/ess-region-remote-eval)) + :init + (autoload 'ess-r-mode "ess-site" nil t) + (autoload 'R "ess-site" nil t) :config + ; actually load the rest of ess + (require 'ess-site) (defun ess-change-directory (path) "Set the current working directory to PATH for both *R* and Emacs." - (interactive "DDirectory to change to: ") + (interactive "Directory to change to: ") (when (file-exists-p path) (ess-command (concat "setwd(\"" path "\")\n")) @@ -932,6 +985,15 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori *** Outline magic #+BEGIN_SRC emacs-lisp (use-package outline-magic) +#+END_SRC +*** Outline mode +#+BEGIN_SRC emacs-lisp +;; change the outline mode prefix from C-c @ to C-c C-2 +(setq outline-minor-mode-prefix "C-c C-2") +;;(add-hook 'outline-minor-mode-hook +;; (lambda () (local-set-key (kbd "C-c C-2") +;; outline-mode-prefix-map))) + #+END_SRC ** Writeroom Mode #+BEGIN_SRC emacs-lisp @@ -969,10 +1031,10 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori [[https://github.com/magnars/multiple-cursors.el][Multiple Cursors]] #+BEGIN_SRC emacs-lisp (use-package multiple-cursors - :bind (("C-;" . mc/mark-all-dwim) - ("C-<" . mc/mark-previous-like-this) - ("C->" . mc/mark-next-like-this) - ("C-S-c C-S-c" . mc/edit-lines)) + :bind* (("C-;" . mc/mark-all-dwim) + ("C-<" . mc/mark-previous-like-this) + ("C->" . mc/mark-next-like-this) + ("C-S-c C-S-c" . mc/edit-lines)) ) #+END_SRC ** Web Mode @@ -988,7 +1050,7 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori ** Spamassassin Mode #+BEGIN_SRC emacs-lisp (use-package spamassassin-mode - :defer + :commands spamassassin-mode :ensure f ) #+END_SRC @@ -996,53 +1058,82 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori #+BEGIN_SRC emacs-lisp (use-package password-store :ensure f - :commands password-store-edit password-store-create + :commands password-store-edit password-store-generate ) #+END_SRC +** CSS mode +#+BEGIN_SRC emacs-lisp + (use-package css + :mode "\\.css'" + :config + ;; fix up css mode to not be silly + ;; from http://www.stokebloke.com/wordpress/2008/03/21/css-mode-indent-buffer-fix/ + (setq cssm-indent-level 4) + (setq cssm-newline-before-closing-bracket t) + (setq cssm-indent-function #'cssm-c-style-indenter) + (setq cssm-mirror-mode nil)) +#+END_SRC +** Abbrev Mode +#+BEGIN_SRC emacs-lisp + (use-package abbrev + :diminish abbrev-mode + :config + ;; load abbreviations from + (setq abbrev-file-name + "~/.emacs_abbrev_def") + + ;; read the abbrev file if it exists + (if (file-exists-p abbrev-file-name) + (quietly-read-abbrev-file)) + + ;; for now, use abbrev mode everywhere + (setq default-abbrev-mode t)) +#+END_SRC + * Email ** Mutt *** Message-mode #+BEGIN_SRC emacs-lisp (use-package message :ensure f - :diminish "✉" - :mode "muttng-[a-z0-9]+-[0-9]+-" - :mode "mutt-[a-z0-9]+-[0-9]+-" + :diminish (message "✉") + :mode ("muttng-[a-z0-9]+-[0-9]+-" . message-mode) + :mode ("mutt-[a-z0-9]+-[0-9]+-" . message-mode) :hook 'my/message-mode-settings :hook 'turn-on-flyspell :bind (:map message-mode-map - ("C-c C-a" . my/post-attach-file)) - :config + ("C-c C-a" . my/post-attach-file)) + :delight (message-mode "✉") + :config (defun my/message-mode-settings () (font-lock-add-keywords nil - '(("^[ \t]*>[ \t]*>[ \t]*>.*$" - (0 'message-multiply-quoted-text-face)) - ("^[ \t]*>[ \t]*>.*$" - (0 'message-double-quoted-text-face)))) + '(("^[ \t]*>[ \t]*>[ \t]*>.*$" + (0 'message-multiply-quoted-text-face)) + ("^[ \t]*>[ \t]*>.*$" + (0 'message-double-quoted-text-face)))) ) (defun my/post-attach-file () "Prompt for an attachment." (interactive) - (let ((file (read-file-name "Attach file: " nil nil t nil)) - (description (string-read "Description: "))) - (my/header-attach-file file description))) + (let ((file (read-file-name "Attach file: " nil nil t nil))) + (my/header-attach-file file ""))) (defun my/header-attach-file (file description) "Attach a FILE to the current message (works with Mutt). Argument DESCRIPTION MIME description." (interactive "fAttach file: \nsDescription: ") (when (> (length file) 0) - (save-excursion - (save-match-data - (save-restriction - (widen) - (goto-char (point-min)) - (search-forward-regexp "^$") - (insert (concat "Attach: " (replace-regexp-in-string "\\([[:space:]\\]\\)" "\\\\\\1" (file-truename file)) " " - description "\n")) - (message (concat "Attached '" file "'.")) - (setq post-has-attachment t)))))) + (save-excursion + (save-match-data + (save-restriction + (widen) + (goto-char (point-min)) + (search-forward-regexp "^$") + (insert (concat "Attach: " (replace-regexp-in-string "\\([[:space:]\\]\\)" "\\\\\\1" (file-truename file)) " " + description "\n")) + (message (concat "Attached '" file "'.")) + (setq post-has-attachment t)))))) (setq mail-yank-prefix "> ") ) @@ -1058,25 +1149,27 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori * Base emacs ** Reverting buffers #+BEGIN_SRC emacs-lisp - (setq global-auto-revert-non-file-buffers t - global-auto-revert-ignore-modes '(pdf-view-mode) - auto-revert-verbose nil) - (global-auto-revert-mode 1) + (use-package autorevert + :diminish auto-revert-mode + :config + (setq global-auto-revert-non-file-buffers t + global-auto-revert-ignore-modes '(pdf-view-mode) + auto-revert-verbose nil) + (global-auto-revert-mode 1)) #+END_SRC * Org Mode ** Use-package and load things #+BEGIN_SRC emacs-lisp (use-package org - :config - + :delight (org-mode "ø") + :mode ("\\.\\(org\\|org_archive\\|txt\\)\\'" . org-mode) + :bind (("C-c l" . org-store-link) + ("C-c a" . org-agenda) + ("C-c b" . org-iswitchb)) #+END_SRC ** Agenda Configuration #+BEGIN_SRC emacs-lisp - :mode ("\\.\\(org\\|org_archive\\|txt\\)\\'" . org-mode) - :bind (("C-c l" . org-store-link) - ("C-c a" . org-agenda) - ("C-c b" . org-iswitchb)) :config (setq-default org-log-done 'time) (setq-default org-agenda-ndays 5) @@ -1209,35 +1302,37 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori #+END_SRC ** Capture Templates #+BEGIN_SRC emacs-lisp - (setq org-capture-templates ;; mail-specific note template, identified by "m" - '(("m" "Mail" entry (file "~/projects/org-notes/refile.org") - "* %?\n\n Source: %u, [[%:link][%:description]]\n %:initial") - ("t" "todo" entry (file "~/projects/org-notes/refile.org") - "* TODO %?\n :PROPERTIES:\n :END:\n :LOGBOOK:\n :END:\n%U\n%a\n" :clock-in t :clock-resume t) - ("r" "respond" entry (file "~/projects/org-notes/refile.org") - "* NEXT Respond to %:from on %:subject\nSCHEDULED: %t\n%U\n%a\n" :clock-in t :clock-resume t :immediate-finish t) - ("n" "note" entry (file "~/projects/org-notes/refile.org") - "* %? :NOTE:\n%U\n%a\n" :clock-in t :clock-resume t) - ("s" "schedule" entry (file "~/projects/org-notes/refile.org") - "* %? :cal:\n%^{scheduled:}t\n%U\n%a\n" :clock-in t :clock-resume t) - ("j" "Journal" entry (file+datetree "~/projects/org-notes/diary.org") - "* %?\n%U\n" :clock-in t :clock-resume t) - ("w" "org-protocol" entry (file "~/projects/org-notes/refile.org") - "* TODO Review %c\n%U\n" :immediate-finish t) - ("M" "Meeting" entry (file "~/projects/org-notes/refile.org") - "* MEETING with %? :MEETING:\n%U" :clock-in t :clock-resume t) - ("S" "Seminar" entry (file "~/projects/org-notes/refile.org") - "* SEMINAR notes %? :SEMINAR:\n%U" :clock-in t :clock-resume t) - ("P" "Paper to read" entry (file+headline "~/projects/research/papers_to_read.org" "Refile") - "* TODO Get/Read %? \n%U" :clock-in t :clock-resume t) - ("p" "Phone call" entry (file "~/projects/org-notes/refile.org") - "* PHONE %? :PHONE:\n%U" :clock-in t :clock-resume t) - ("J" "job" entry (file "~/projects/org-notes/refile.org") - "* TODO Apply for %a%? :job:\nSCHEDULED: %(format-time-string \"<%Y-%m-%d 17:00-17:30>\")\n%U\n%a\n" :clock-in t :clock-resume t) - ("h" "Habit" entry (file "~/projects/org-notes/refile.org") - "* NEXT %?\n%U\n%a\nSCHEDULED: %(format-time-string \"<%Y-%m-%d .+1d/3d>\")\n:PROPERTIES:\n:STYLE: habit\n:REPEAT_TO_STATE: NEXT\n:END:\n%a\n") + (setq org-capture-templates ;; mail-specific note template, identified by "m" + `(("m" "Mail" entry (file "~/projects/org-notes/refile.org") + "* %?\n\n Source: %u, [[%:link][%:description]]\n %:initial") + ("t" "todo" entry (file "~/projects/org-notes/refile.org") + "* TODO %?\n :PROPERTIES:\n :END:\n :LOGBOOK:\n :END:\n%U\n%a\n" :clock-in t :clock-resume t) + ("r" "respond" entry (file "~/projects/org-notes/refile.org") + "* NEXT Respond to %:from on %:subject\nSCHEDULED: %t\n%U\n%a\n" :clock-in t :clock-resume t :immediate-finish t) + ("n" "note" entry (file "~/projects/org-notes/refile.org") + "* %? :NOTE:\n%U\n%a\n" :clock-in t :clock-resume t) + ("s" "schedule" entry (file "~/projects/org-notes/refile.org") + "* %? :cal:\n%^{scheduled:}t\n%U\n%a\n" :clock-in t :clock-resume t) + ("j" "Journal" entry (file+datetree "~/projects/org-notes/diary.org") + "* %?\n%U\n" :clock-in t :clock-resume t) + ("w" "org-protocol" entry (file "~/projects/org-notes/refile.org") + "* TODO Review %c\n%U\n" :immediate-finish t) + ("M" "Meeting" entry (file "~/projects/org-notes/refile.org") + "* MEETING with %? :MEETING:\n%U" :clock-in t :clock-resume t) + ("S" "Seminar" entry (file "~/projects/org-notes/refile.org") + "* SEMINAR notes %? :SEMINAR:\n%U" :clock-in t :clock-resume t) + ("P" "Paper to read" entry (file+headline "~/projects/research/papers_to_read.org" "Refile") + "* TODO Get/Read %? \n%U" :clock-in t :clock-resume t) + ("p" "Phone call" entry (file "~/projects/org-notes/refile.org") + "* PHONE %? :PHONE:\n%U" :clock-in t :clock-resume t) + ("J" "job" entry (file+olp "~/projects/org-notes/notes.org" + "Jobs" + ,(format-time-string "Positions %Y")) + "* TODO Apply for %? :job:\nSCHEDULED: <%<%Y-%m-%d>>\n%U\n%x\n" :clock-in t :clock-resume t) + ("h" "Habit" entry (file "~/projects/org-notes/refile.org") + "* NEXT %?\n%U\n%a\nSCHEDULED: %(format-time-string \"<%Y-%m-%d .+1d/3d>\")\n:PROPERTIES:\n:STYLE: habit\n:REPEAT_TO_STATE: NEXT\n:END:\n%a\n") + ) ) - ) ;; Remove empty LOGBOOK drawers on clock out (defun bh/remove-empty-drawer-on-clock-out () @@ -1260,50 +1355,45 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori #+END_SRC ** Org mode key bindings #+BEGIN_SRC emacs-lisp - ; org mode configuration from http://doc.norang.ca/org-mode.html + ;; org mode configuration from http://doc.norang.ca/org-mode.html ;; Custom Key Bindings - (global-set-key (kbd "") 'org-agenda) - ; (global-set-key (kbd "") 'bh/org-todo) - (global-set-key (kbd "") 'bh/widen) - (global-set-key (kbd "") 'bh/set-truncate-lines) - (global-set-key (kbd "") 'org-cycle-agenda-files) - (global-set-key (kbd " ") 'bh/show-org-agenda) - (global-set-key (kbd " b") 'bbdb) - (global-set-key (kbd " c") 'calendar) - (global-set-key (kbd " f") 'boxquote-insert-file) - (global-set-key (kbd " h") 'bh/hide-other) - (global-set-key (kbd " n") 'bh/toggle-next-task-display) - (global-set-key (kbd " w") 'widen) - - ; change the outline mode prefix from C-c @ to C-c C-2 - (setq outline-minor-mode-prefix "C-c C-2") - ;(add-hook 'outline-minor-mode-hook - ; (lambda () (local-set-key (kbd "C-c C-2") - ; outline-mode-prefix-map))) - - (global-set-key (kbd " I") 'bh/punch-in) - (global-set-key (kbd " O") 'bh/punch-out) - - (global-set-key (kbd " o") 'bh/make-org-scratch) - - (global-set-key (kbd " r") 'boxquote-region) - (global-set-key (kbd " s") 'bh/switch-to-scratch) - - (global-set-key (kbd " t") 'bh/insert-inactive-timestamp) - (global-set-key (kbd " T") 'bh/toggle-insert-inactive-timestamp) - - (global-set-key (kbd " v") 'visible-mode) - (global-set-key (kbd " l") 'org-toggle-link-display) - (global-set-key (kbd " SPC") 'bh/clock-in-last-task) - (global-set-key (kbd "C-") 'previous-buffer) - (global-set-key (kbd "M-") 'org-toggle-inline-images) - (global-set-key (kbd "C-x n r") 'narrow-to-region) - (global-set-key (kbd "C-") 'next-buffer) - (global-set-key (kbd "") 'org-clock-goto) - (global-set-key (kbd "C-") 'org-clock-in) - (global-set-key (kbd "C-s-") 'bh/save-then-publish) - (global-set-key (kbd "C-c c") 'org-capture) - + :bind* ((" a" . org-agenda) + (" I" . bh/punch-in) + (" O" . bh/punch-out) + (" SPC" . bh/clock-in-last-task) + ("" . org-agenda) + ;; ("" . bh/org-todo) + ("" . bh/widen) + ("" . bh/set-truncate-lines) + ("" . org-cycle-agenda-files) + (" " . bh/show-org-agenda) + (" b" . bbdb) + (" c" . calendar) + (" f" . boxquote-insert-file) + (" h" . bh/hide-other) + (" n" . bh/toggle-next-task-display) + (" w" . widen) + + (" o" . bh/make-org-scratch) + + (" r" . boxquote-region) + (" s" . bh/switch-to-scratch) + + (" t" . bh/insert-inactive-timestamp) + (" T" . bh/toggle-insert-inactive-timestamp) + + (" v" . visible-mode) + (" l" . org-toggle-link-display) + (" SPC" . bh/clock-in-last-task) + ("C-" . previous-buffer) + ("M-" . org-toggle-inline-images) + ("C-x n r" . narrow-to-region) + ("C-" . next-buffer) + ("" . org-clock-goto) + ("C-" . org-clock-in) + ("C-s-" . bh/save-then-publish) + ("C-c c" . org-capture)) + :config #+END_SRC ** Utility Functions #+BEGIN_SRC emacs-lisp @@ -1344,6 +1434,11 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori do not already have one." (interactive) (org-map-entries 'org-id-get-create)) + (defun dla/org-update-ids-to-headlines-in-file () + "Add or replace ID properties to all headlines in the current file + (or narrowed region)." + (interactive) + (org-map-entries '(lambda () (org-id-get-create t)))) ; if we wanted to do this to every buffer, do the following: ; (add-hook 'org-mode-hook ; (lambda () @@ -2095,20 +2190,6 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori (fset 'perl-mode 'cperl-mode) ;;(load-file "cperl-mode.el") - (require 'vcl-mode) - - (global-set-key "\C-xp" 'server-edit) - - (setq-default auto-mode-alist (cons '("\.wml$" . - (lambda () (html-mode) (auto-fill-mode))) - auto-mode-alist)) - - - ; use markdown mode for mdwn files - (add-to-list 'auto-mode-alist '("\\.mdwn$" . markdown-mode)) - (add-to-list 'auto-mode-alist '("\\.md$" . markdown-mode)) - - ;; tramp configuration (setq tramp-use-ssh-controlmaster-options nil) @@ -2145,20 +2226,34 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori (column-number-mode t) - ; abbrev mode settings - ; load abbreviations from - (setq abbrev-file-name - "~/.emacs_abbrev_def") - - ; read the abbrev file if it exists - (if (file-exists-p abbrev-file-name) - (quietly-read-abbrev-file)) - - ; for now, use abbrev mode everywhere - (setq default-abbrev-mode t) - - (desktop-load-default) - (desktop-read) +#+END_SRC +** Desktop-save-mode +If the envvar EMACS_SERVER_NAME is set, consider this a separate +emacs, and use a different desktop file to restore history +#+BEGIN_SRC emacs-lisp + (use-package emacs + :demand + :config + (setq desktop-base-file-name + (convert-standard-filename + (concat ".emacs" + (or (getenv "EMACS_SERVER_NAME") + "") + ".desktop") + )) + (setq desktop-base-lock-name + (convert-standard-filename + (concat desktop-base-file-name + ".lock"))) + (setq desktop-auto-save-timeout 60) + (setq desktop-restore-eager 5) + (setq desktop-lazy-verbose nil) + (desktop-save-mode 1) + ; (desktop-read) + ) +#+END_SRC +** Misc (Uncharacterized) +#+BEGIN_SRC emacs-lisp '(icomplete-mode on) (custom-set-faces ;; custom-set-faces was added by Custom. @@ -2200,30 +2295,6 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori (define-key cm-map "f" 'outline-forward-same-level) ; Forward - same level (define-key cm-map "b" 'outline-backward-same-level) ; Backward - same level (global-set-key "\M-o" cm-map) - - ; ediff configuration - ; don't use the multi-window configuration - (setq ediff-window-setup-function 'ediff-setup-windows-plain) - - ; fix up css mode to not be silly - ; from http://www.stokebloke.com/wordpress/2008/03/21/css-mode-indent-buffer-fix/ - (setq cssm-indent-level 4) - (setq cssm-newline-before-closing-bracket t) - (setq cssm-indent-function #'cssm-c-style-indenter) - (setq cssm-mirror-mode nil) - - (require 'multi-web-mode) - (setq mweb-default-major-mode 'html-mode) - (setq mweb-tags '((php-mode "<\\?php\\|<\\? \\|<\\?=" "\\?>") - (js-mode "") - (css-mode ""))) - (setq mweb-filename-extensions '("php" "htm" "html" "ctp" "phtml" "php4" "php5")) - (multi-web-global-mode 1) - - ; load sql-indent when sql is loaded - (eval-after-load "sql" - '(load-library "sql-indent")) - ; fix up tmux xterm keys ; stolen from http://unix.stackexchange.com/questions/24414/shift-arrow-not-working-in-emacs-within-tmux (defun fix-up-tmux-keys () @@ -2331,10 +2402,16 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori (ad-activate 'ask-user-about-supersession-threat) #+END_SRC -* Server +* Start Server #+BEGIN_SRC emacs-lisp - (unless (server-running-p) - (server-start)) + (use-package server + :config + (setq server-name + (or (getenv "EMACS_SERVER_NAME") + "server")) + (unless (server-running-p) + (global-set-key "\C-xp" 'server-edit) + (server-start))) #+END_SRC