Emacs: change global custom bindings prefix from C-c to C-x

master
Pierre Neidhardt 2014-02-20 14:06:47 +01:00
parent bdf337676c
commit 63509e6fde
5 changed files with 247 additions and 13 deletions

View File

@ -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 '())

View File

@ -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."

View File

@ -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-<down-mouse-1>"))
(define-key my-keys-minor-mode-map (kbd "C-<mouse-1>") '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)

View File

@ -64,7 +64,11 @@ restored."
(cc-set-compiler)
(local-set-key (kbd "<f9>") '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 <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <stdint.h>
#include <inttypes.h>
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)

View File

@ -239,7 +239,8 @@ properly escaped with double-quotes in case it has spaces."
(local-set-key (kbd "<f9>") '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)