From 63509e6fde44732c1e9e89f750ddc161c6e87dd7 Mon Sep 17 00:00:00 2001 From: Pierre Neidhardt Date: Thu, 20 Feb 2014 14:06:47 +0100 Subject: [PATCH] Emacs: change global custom bindings prefix from C-c to C-x --- .emacs.d/abbrev_defs | 2 +- .emacs.d/functions.el | 6 +- .emacs.d/main.el | 8 +- .emacs.d/mode-cc.el | 54 +++++++++++- .emacs.d/mode-tex.el | 190 +++++++++++++++++++++++++++++++++++++++++- 5 files changed, 247 insertions(+), 13 deletions(-) diff --git a/.emacs.d/abbrev_defs b/.emacs.d/abbrev_defs index 5520e8b0..87b31537 100644 --- a/.emacs.d/abbrev_defs +++ b/.emacs.d/abbrev_defs @@ -11,7 +11,7 @@ (define-abbrev-table 'c-mode-abbrev-table '( - ("printf" "" snip-cc-printf 0) + ("printf" "" cc-printf 0) )) (define-abbrev-table 'comint-mode-abbrev-table '()) diff --git a/.emacs.d/functions.el b/.emacs.d/functions.el index abcc07fe..fb8bf86a 100644 --- a/.emacs.d/functions.el +++ b/.emacs.d/functions.el @@ -82,7 +82,7 @@ there's a region, all lines that region covers will be duplicated." (if auto-fill-p (auto-fill-mode)) (goto-char (+ origin (* (length region) arg) arg))))) -(define-key my-keys-minor-mode-map (kbd "C-c C-d") 'duplicate) +(define-key my-keys-minor-mode-map (kbd "C-x M-d") 'duplicate) (defun comment-or-uncomment-current-line-or-region () "Comments or uncomments current current line or whole lines in region." @@ -167,7 +167,7 @@ Enlarge/Shrink by ARG columns, or 5 if arg is nil." (set-window-start w2 s1)))) (other-window 1)) -(define-key my-keys-minor-mode-map (kbd "C-c s") 'swap-windows) +(define-key my-keys-minor-mode-map (kbd "C-x M-s") 'swap-windows) (defun rename-buffer-and-file () "Renames current buffer and file it is visiting." @@ -347,7 +347,7 @@ region. Output result at the end after an ' = ' separtor." (message "Indent using tabs") (setq indent-tabs-mode t))) -(define-key my-keys-minor-mode-map (kbd "C-c i") 'toggle-indent-tabs) +(define-key my-keys-minor-mode-map (kbd "C-x M-i") 'toggle-indent-tabs) (defun toggle-word-delim () "Make underscore part of the word syntax or not." diff --git a/.emacs.d/main.el b/.emacs.d/main.el index ebb04f4c..225c6315 100644 --- a/.emacs.d/main.el +++ b/.emacs.d/main.el @@ -159,7 +159,7 @@ (if (not (fboundp 'tool-bar-mode)) (define-key my-keys-minor-mode-map (kbd "C-M-y") 'query-replace-regexp)) ;; Semantic options. -(semantic-mode 1) +(semantic-mode 0) (setq semanticdb-default-save-directory (concat emacs-cache-folder "semanticdb")) (define-key my-keys-minor-mode-map (kbd "C-c , d") 'semantic-ia-show-summary) (define-key my-keys-minor-mode-map (kbd "C-, d") 'semantic-ia-show-summary) @@ -286,9 +286,9 @@ (setq mc/list-file (concat emacs-cache-folder "mc-lists.el")) (global-unset-key (kbd "C-")) (define-key my-keys-minor-mode-map (kbd "C-") 'mc/add-cursor-on-click) - (define-key my-keys-minor-mode-map (kbd "C-c M-r") 'mc/edit-lines) - (define-key my-keys-minor-mode-map (kbd "C-c C-m") 'mc/mark-more-like-this-extended) - (define-key my-keys-minor-mode-map (kbd "C-c M-l") 'mc/mark-all-like-this-dwim)) + (define-key my-keys-minor-mode-map (kbd "C-x M-r") 'mc/edit-lines) + (define-key my-keys-minor-mode-map (kbd "C-x M-m") 'mc/mark-more-like-this-extended) + (define-key my-keys-minor-mode-map (kbd "C-x M-l") 'mc/mark-all-like-this-dwim)) ;; Let Emacs auto-load/save sessions. (when (boundp 'server-running-p) diff --git a/.emacs.d/mode-cc.el b/.emacs.d/mode-cc.el index 69c41859..44432108 100644 --- a/.emacs.d/mode-cc.el +++ b/.emacs.d/mode-cc.el @@ -64,7 +64,11 @@ restored." (cc-set-compiler) (local-set-key (kbd "") 'cc-clean) (local-set-key (kbd "M-TAB") 'semantic-complete-analyze-inline) - (local-set-key (kbd "C-c C-f") 'snip-cc-fori) + (local-set-key (kbd "C-c C-f") 'cc-fori) + (local-set-key (kbd "C-c m") 'cc-main) + (local-set-key (kbd "C-c C-i") 'cc-if) + (local-set-key (kbd "C-c i") 'cc-include) + (local-set-key (kbd "C-c I") 'cc-include-local) ;; (local-set-key "." 'semantic-complete-self-insert) ; This is a bit slow. ;; (local-set-key ">" 'semantic-complete-self-insert) (local-set-key (kbd "C-M-e") (lambda () (interactive) (c-beginning-of-defun -1)))))) @@ -107,8 +111,11 @@ restored." ;;============================================================================== ;; Skel ;;============================================================================== -;; TODO: elements: (setq skeleton-further-elements '((q "\""))) -(define-skeleton snip-cc-printf + +;; Note that it is possible to extend the skel syntax like this: (setq +;; skeleton-further-elements '((q "\""))) + +(define-skeleton cc-printf "fprintf/printf snippet If no file descriptor is provided, switch do printf. The format @@ -126,7 +133,7 @@ Requires the `count-percents' function." (skeleton-insert '(nil (concat ", " (skeleton-read "Value: "))))) @ ");") -(define-skeleton snip-cc-fori +(define-skeleton cc-fori "for i loop." nil > "for (" @ (skeleton-read "" "i = 0") "; " @ (skeleton-read "" "i < N") "; " @ (skeleton-read "" "i++") ")" \n @@ -134,4 +141,43 @@ Requires the `count-percents' function." @ _ \n "}" > ) +(define-skeleton cc-main + "Insert main function with basic includes." + nil + > "#include +#include +#include +#include +#include + +int main(int argc, char** argv) +{" \n +> @ _ \n +> "return 0; +}" \n) + +(define-skeleton cc-include + "Insert system include." + "Header: " + \n "#include <" @ str ">" \n) + +(define-skeleton cc-include-local + "Insert local include." + "Header: " + \n "#include \"" @ str "\"" \n) + +;; TODO: solve indentation issues +(define-skeleton cc-if + "Insert an if statement." + "Condition: " + > "if (" @ str ") {" \n + > @ _ \n + ( "Other condition, %s: " + > "} else if (" @ str ") {" > \n + > @ \n) + "} else {" > \n + > @ \n + resume: + "}" > \n) + (provide 'mode-cc) diff --git a/.emacs.d/mode-tex.el b/.emacs.d/mode-tex.el index 5444cad9..bd84b524 100644 --- a/.emacs.d/mode-tex.el +++ b/.emacs.d/mode-tex.el @@ -239,7 +239,8 @@ properly escaped with double-quotes in case it has spaces." (local-set-key (kbd "") 'tex-pdf-view) (tex-set-compiler)) -(add-hook 'tex-mode-hook 'tex-setup) +;; TODO: why is tex-setup needed for tex-mode only? +(add-hook 'tex-mode-hook 'tex-setup t) (tex-setup) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -283,4 +284,191 @@ properly escaped with double-quotes in case it has spaces." ;; latex-math-preview-pifont-symbol-fonts-symbol-data))) )) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Skeletons + + +(define-skeleton tex-article + "Insert article template." + nil + > "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\\documentclass[10pt,a4paper]{article} +\\usepackage[utf8]{inputenc} +\\usepackage[T1]{fontenc} +\\usepackage{amsmath,amssymb,amsfonts} +\\usepackage{geometry} +\\usepackage{lmodern} +\\usepackage{marvosym} +\\usepackage{textcomp} +\\DeclareUnicodeCharacter{20AC}{\\EUR{}} +\\DeclareUnicodeCharacter{2260}{\\neq} +\\DeclareUnicodeCharacter{2264}{\\leq} +\\DeclareUnicodeCharacter{2265}{\\geq} +\\DeclareUnicodeCharacter{22C5}{\\cdot} +\\DeclareUnicodeCharacter{A0}{~} +\\DeclareUnicodeCharacter{B1}{\\pm} +\\DeclareUnicodeCharacter{D7}{\\times} +%%============================================================================= +%% Properties + +\\title{Title} +\\author{P.~\\textsc{Neidhardt}} + +\\makeatletter +\\let\\thetitle\\@title +\\let\\theauthor\\@author +\\let\\thedate\\@date +\\makeatother + +%%============================================================================= +%% Aliases + +\\usepackage{xspace} + +\\let\\latexbak\\LaTeX +\\renewcommand{\\LaTeX}{\\textrm{\\latexbak}\\xspace} + +\\let\\texbak\\TeX +\\renewcommand{\\TeX}{\\textrm{\\texbak}\\xspace} + +\\def\\unix{\\textsc{Unix}\\xspace} +\\def\\ie{\\textsl{i.e.}\\xspace} +\\def\\eg{\\textsl{e.g.}\\xspace} + +%%============================================================================= +%% Formatting + +% \\usepackage{parskip} +% \\setlength{\\parindent}{15pt} + +% \\renewcommand{\\thefigure}{\\arabic{section}.\\arabic{figure}} +\\renewcommand{\\arraystretch}{1.4} +% \\renewcommand{\\familydefault}{\\sfdefault} + +%% Header +% \\usepackage{fancyhdr} +% \\setlength{\\headheight}{15.2pt} +% \\pagestyle{fancy} +% \\lhead{\\thetitle} +% \\rhead{\\theauthor} + +%%============================================================================== +%% Tables + +% \\usepackage{longtable} +% \\usepackage{tabu} + +%%============================================================================== +%% Graphics + +%% Load TikZ after xcolor. +\\usepackage[svgnames]{xcolor} +% \\usepackage{graphicx} +% \\usepackage{tikz} + +% \\newcommand{\\fancybox}[1]{ +% \\begin{tikzpicture} +% \\node[draw,rounded corners]{#1}; +% \\end{tikzpicture} +% } + +%%============================================================================== +%% Misc. + +\\usepackage{comment} +\\usepackage{needspace} + +% \\usepackage{calc} +% \\usepackage{fp} +% \\usepackage{lipsum} + + +%%============================================================================= +%% Babel + +%% Load last before 'hyperref'. +\\usepackage[french,ngerman,english]{babel} +\\iflanguage{french}{ +}{ + %% Narrow items + \\newlength{\\wideitemsep} + \\setlength{\\wideitemsep}{.5\\itemsep} + \\addtolength{\\wideitemsep}{-7pt} + \\let\\olditem\\item + \\renewcommand{\\item}{\\setlength{\\itemsep}{\\wideitemsep}\\olditem} +} + +%%============================================================================== +%% Hyperref + +%% Load last. +\\usepackage[]{hyperref} + +\\hypersetup{ + colorlinks=true, + linkcolor=DarkRed, + linktoc=page, + urlcolor=blue, +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\\begin{document} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\\maketitle +% \\vfill +% \\thispagestyle{empty} +% \\tableofcontents +" \n +> @ _ \n +> " +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\\end{document} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +" \n) + +(define-skeleton latex-listing-setup + "Insert listing setup template." + nil + > "%%============================================================================= +%% Listings + +\\usepackage{listings} + +%% Source code. +\\lstdefinestyle{custom}{ + % numbers=left, + belowcaptionskip=1\\baselineskip, + breaklines=true, + frame=L, + xleftmargin=\\parindent, + % framexleftmargin=\\parindent, + language=C, + showstringspaces=false, + basicstyle=\\footnotesize\\ttfamily, + keywordstyle=\\bfseries\\color{green!40!black}, + commentstyle=\\itshape\\color{purple!40!black}, + identifierstyle=\\color{blue}, + stringstyle=\\color{orange}, + numberstyle=\\ttfamily, +} + +\\lstset{escapechar=,style=custom, + literate= + {á}{{\\'a}}1 {é}{{\\'e}}1 {í}{{\\'i}}1 {ó}{{\\'o}}1 {ú}{{\\'u}}1 + {Á}{{\\'A}}1 {É}{{\\'E}}1 {Í}{{\\'I}}1 {Ó}{{\\'O}}1 {Ú}{{\\'U}}1 + {à}{{\\`a}}1 {è}{{\\'e}}1 {ì}{{\\`i}}1 {ò}{{\\`o}}1 {ù}{{\\`u}}1 + {À}{{\\`A}}1 {È}{{\\'E}}1 {Ì}{{\\`I}}1 {Ò}{{\\`O}}1 {Ù}{{\\`U}}1 + {ä}{{\\\"a}}1 {ë}{{\\\"e}}1 {ï}{{\\\"i}}1 {ö}{{\\\"o}}1 {ü}{{\\\"u}}1 + {Ä}{{\\\"A}}1 {Ë}{{\\\"E}}1 {Ï}{{\\\"I}}1 {Ö}{{\\\"O}}1 {Ü}{{\\\"U}}1 + {â}{{\\^a}}1 {ê}{{\\^e}}1 {î}{{\\^i}}1 {ô}{{\\^o}}1 {û}{{\\^u}}1 + {Â}{{\\^A}}1 {Ê}{{\\^E}}1 {Î}{{\\^I}}1 {Ô}{{\\^O}}1 {Û}{{\\^U}}1 + {œ}{{\\oe}}1 {Œ}{{\\OE}}1 {æ}{{\\ae}}1 {Æ}{{\\AE}}1 {ß}{{\\ss}}1 + {ç}{{\\c c}}1 {Ç}{{\\c C}}1 {ø}{{\\o}}1 {å}{{\\r a}}1 {Å}{{\\r A}}1 + {€}{{\\EUR}}1 {£}{{\\pounds}}1 +} + +\\newcommand{\\includecode}[2][custom]{ + \\lstinputlisting[caption=#2, escapechar=, style=#1]{#2}}" \n) + + (provide 'mode-tex)