2e3c5df4d7
* Extended ** emacs.d/functions.el - Added a optional ~else~ part to ~foreach~ in HTML keywords, since smarty *can* also use ~foreachelse~, and this was only fontifying the ~foreach~ part. - Only load (and modify) naquadah-theme when we're running in X. I'd prefer to know if we have 256 colors available, but I haven't found that yet. - Only try to go to fullscreen if X is running. - Show a lambda symbol when the word lambda is found in a prog-mode buffer. - Enable auto-fill-mode when prog-mode is started. - Don't set pear options, pi-php-mode does it. - Added function to show ~lambda~ as a lambda symbol - Added function to create or update gtags file. ** emacs.el - Add pi-php-mode. - Removed muttrc-mode. - Use pi-php-mode instead of php-mode-improved. - Use ~(getenv)~ to get the browser. - Don't care about ~org-babel-confirm-evaluate~ and ~org-ditaa-jar-path~. - Set ~org-return-follows-link~ to ~t~, enter follows a link in ~org-mode~. - Set ~mouse-autoselect-window~ to ~t~, moving the mouse changes buffer focus. - Set ~pop-up-windows~ to ~nil~, so that popup functions use an existing window. - Set ~org-log-into-drawer~ to ~t~, so that activities are put in a drawer in ~org-mode~. - Set ~mail-header-separator~ to an empty string for ~message-mode~. - Use ~message-mode~ instead of ~mail-mode~.
228 lines
7 KiB
EmacsLisp
228 lines
7 KiB
EmacsLisp
(defun quote-region ()
|
|
(interactive)
|
|
(let ((beginning (region-beginning))
|
|
(end (region-end)))
|
|
(save-excursion
|
|
(goto-char end)
|
|
(insert ?')
|
|
(goto-char beginning)
|
|
(insert ?'))))
|
|
|
|
(defun what-face (pos)
|
|
"Find out which face the current position uses"
|
|
(interactive "d")
|
|
(let ((face (or (get-char-property (point) 'read-face-name)
|
|
(get-char-property (point) 'face))))
|
|
(if face
|
|
(message "Face: %s" face)
|
|
(message "No face at %d" pos))))
|
|
|
|
(defun my-comp-finish-function (buf str)
|
|
"Don't show compilation window if everything went ok"
|
|
(if (string-match "exited abnormally" str)
|
|
;; there were errors
|
|
(message "compilation errors, press C-x ` to visit")
|
|
;; no errors, make the compilation window go away in 0.5 seconds
|
|
(run-at-time 0.5 nil 'delete-windows-on buf)
|
|
(message "NO COMPILATION ERRORS!")))
|
|
|
|
(defun fullscreen ()
|
|
"Fill the entire screen with emacs"
|
|
(interactive)
|
|
(x-send-client-message nil 0 nil "_NET_WM_STATE" 32
|
|
'(2 "_NET_WM_STATE_MAXIMIZED_VERT" 0))
|
|
(x-send-client-message nil 0 nil "_NET_WM_STATE" 32
|
|
'(2 "_NET_WM_STATE_MAXIMIZED_HORZ" 0)))
|
|
|
|
(defun c-toggle-header-source ()
|
|
"Toggle between a C source and header file"
|
|
(interactive)
|
|
(let ((ext (file-name-extension (buffer-file-name)))
|
|
(noext (file-name-sans-extension (buffer-file-name))))
|
|
(if (string= (substring ext 0 1) "c")
|
|
(find-file (concat noext ".h"))
|
|
(find-file (concat noext ".c")))))
|
|
|
|
(defun browse-to-current-file ()
|
|
"Show current file in browser"
|
|
(interactive)
|
|
(browse-url buffer-file-name))
|
|
|
|
(defun comment-line ()
|
|
"Toggle comment on a line"
|
|
(interactive)
|
|
(save-excursion
|
|
(beginning-of-line)
|
|
(insert "//")))
|
|
|
|
(defun add-php-keywords ()
|
|
"Designed for c and c-style languages
|
|
|
|
Currently adds | & ! . + = - / % * , < > ? : ->"
|
|
;; Add ! at the beginning of font lock
|
|
(font-lock-add-keywords
|
|
'php-mode
|
|
'(("\\([!]\\|\\=>\\)" 1 font-lock-operator-face)))
|
|
;; Add the rest at the end of font lock
|
|
(font-lock-add-keywords
|
|
'php-mode
|
|
'(("\\(->\\|[|.+=&/%*,:?<>-]\\)" 1 font-lock-operator-face)
|
|
("\\(;\\)" 1 font-lock-end-statement)) 1))
|
|
|
|
(defun add-html-keywords ()
|
|
"Designed for html, show some smarty tags"
|
|
(font-lock-add-keywords
|
|
'html-mode
|
|
'(("{\\(\\*.*\\*\\)}" 1 font-comment-face)
|
|
("{\\/?\\(extends\\|block\\|foreach\\(else\\)?\\|if\\)"
|
|
1 font-lock-builtin-face)
|
|
("\\$\\(\\(?:\\sw\\|\\s_\\)+\\)\\(?:|\\(\\(?:\\sw\\|\\s_\\)+\\):\\)"
|
|
(1 font-lock-variable-name-face)
|
|
(2 font-lock-function-name-face))
|
|
("\\$\\(\\(?:\\sw\\|\\s_\\)+\\)"
|
|
1 font-lock-variable-name-face)
|
|
("{\\(\\(?:\\sw\\|\\s_\\)+\\).*}"
|
|
1 font-lock-function-name-face))))
|
|
|
|
(defun buffer-major-mode (buffer-or-string)
|
|
"Find out which major-mode is currently used"
|
|
(with-current-buffer buffer-or-string major-mode))
|
|
|
|
(defun set-column-marker ()
|
|
"Default column markers"
|
|
(column-marker-1 73)
|
|
(column-marker-2 81))
|
|
|
|
(defun setup-system-frame-colours (&rest frame)
|
|
(let ((f (if (car frame)
|
|
(car frame)
|
|
(selected-frame))))
|
|
(progn
|
|
(set-frame-font "-*-tamsyn-medium-*-*-*-15-*-*-*-*-80-*-*"))))
|
|
|
|
(defun show-init-sections ()
|
|
(interactive)
|
|
(occur ";;\s +.*\s +;;")
|
|
(other-window 1))
|
|
|
|
(defun list-functions ()
|
|
(interactive)
|
|
(occur
|
|
"\\(?:\\(?:private\\|protected\\|public\\) \\)?function \\(?:\\sw\\)+(\\sw*)"))
|
|
|
|
(defun insert-init-title (title width)
|
|
(interactive "stitle: \nnwidth: ")
|
|
(insert-char ?\; width)
|
|
(insert "\n;;")
|
|
(insert-char ?\s (floor (/ (- (- width 4.0) (length title)) 2)))
|
|
(insert title)
|
|
(insert-char ?\s (ceiling (/ (- (- width 4.0) (length title)) 2)))
|
|
(insert ";;\n")
|
|
(insert-char ?\; width))
|
|
|
|
(defun x-init ()
|
|
"Initialization only for X"
|
|
(require 'naquadah-theme)
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
;; THEME SETTINGS ;;
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
(naquadah-theme-set-faces
|
|
'naquadah
|
|
|
|
;; markdown-mode
|
|
'(markdown-link-face (:inherit 'link))
|
|
'(markdown-header-face-1 (:inherit 'org-level-1))
|
|
'(markdown-header-face-2 (:inherit 'org-level-2))
|
|
'(markdown-header-face-3 (:inherit 'org-level-3))
|
|
'(markdown-header-face-4 (:inherit 'org-level-4))
|
|
'(markdown-header-face-5 (:inherit 'org-level-5))
|
|
'(markdown-header-face-6 (:inherit 'org-level-6)))
|
|
|
|
(add-hook 'emacs-startup-hook 'fullscreen))
|
|
|
|
(defun cli-init ()
|
|
"Add a space to the linum column"
|
|
(setq linum-format "%d "))
|
|
|
|
(defun replace-occurrences (from to)
|
|
(save-excursion
|
|
(goto-char (point-min))
|
|
(while (search-forward from nil t)
|
|
(replace-match to))))
|
|
|
|
(defun replace-html-special-chars ()
|
|
(replace-occurrences "é" "é"))
|
|
|
|
(defun on-before-save ()
|
|
(if (eq (buffer-major-mode (current-buffer)) 'html-mode)
|
|
(replace-html-special-chars))
|
|
(if (not (eq (buffer-major-mode (current-buffer)) 'markdown-mode))
|
|
(delete-trailing-whitespace)))
|
|
|
|
(defun on-after-save ()
|
|
(let ((fname (buffer-file-name)))
|
|
(let ((suffix (file-name-extension fname)))
|
|
(if (string-equal suffix "el")
|
|
(byte-compile-file fname)))))
|
|
|
|
(defun on-prog-mode ()
|
|
(font-lock-add-keywords
|
|
nil
|
|
'(("\\b\\(0[xX][0-9a-fA-F]+[lL]?\\|[0-9]+\\.?[0-9]*\\([eE][-+]?[0-9]+\\)?\\([lL]\\|[fF]\\|[dD]\\)?\\)\\b"
|
|
0 font-lock-constant-face)
|
|
("\\b\\(\\.[0-9]+\\([eE][-+]?[0-9]+\\)?\\([lL]\\|[fF]\\|[dD]\\)?\\)\\b"
|
|
0 font-lock-constant-face)))
|
|
(set-column-marker)
|
|
(rainbow-delimiters-mode)
|
|
(pretty-lambdas)
|
|
(auto-fill-mode 1))
|
|
|
|
(defun on-c-mode ()
|
|
(local-set-key [f8] 'c-toggle-header-source)
|
|
(local-set-key [f9] 'compile)
|
|
(local-set-key [C-m] 'newline-and-indent)
|
|
(local-set-key [C-return] 'newline))
|
|
|
|
(defun on-html-mode ()
|
|
(local-set-key [f9] 'browse-to-current-file)
|
|
(auto-fill-mode)
|
|
(set-column-marker))
|
|
|
|
(defun on-markdown-mode ()
|
|
(whitespace-mode)
|
|
(auto-fill-mode))
|
|
|
|
(defun on-org-mode ()
|
|
(flyspell-mode 1)
|
|
(auto-fill-mode 1))
|
|
|
|
(defun on-php-mode ()
|
|
(column-marker-1 76)
|
|
(column-marker-2 81)
|
|
(local-set-key [f6] 'comment-line))
|
|
|
|
(defun on-mail-mode ()
|
|
(turn-on-auto-fill)
|
|
(search-forward "\n\n"))
|
|
|
|
(defun pretty-lambdas ()
|
|
(font-lock-add-keywords
|
|
nil `(("(\\(lambda\\>\\)"
|
|
(0 (progn
|
|
(compose-region (match-beginning 1)
|
|
(match-end 1)
|
|
?λ)))))))
|
|
|
|
;; http://emacs-fu.blogspot.com/2009/01/navigating-through-source-code-using.html
|
|
(defun djcb-gtags-create-or-update ()
|
|
"create or update the gnu global tag file"
|
|
(interactive)
|
|
(if (not (= 0 (call-process "global" nil nil nil " -p"))) ; tagfile
|
|
(let ((olddir default-directory) ; doesn't exist?
|
|
(topdir (read-directory-name
|
|
"gtags: top of source tree:" default-directory)))
|
|
(cd topdir)
|
|
(shell-command "gtags && echo 'created tagfile'")
|
|
(cd olddir)) ; restore
|
|
;; tagfile already exists; update it
|
|
(shell-command "global -u && echo 'updated tagfile'")))
|