Should have committed a long time ago.
This commit is contained in:
parent
8dc6802e29
commit
5efebc68b8
@ -1,42 +1,53 @@
|
|||||||
;; no splash screen
|
;; we can require features
|
||||||
(setq inhibit-splash-screen t)
|
(require 'cl)
|
||||||
|
(require 'package)
|
||||||
|
|
||||||
;; show matching parenthesis
|
;; add mirrors for list-packages
|
||||||
(show-paren-mode t)
|
(add-to-list 'package-archives
|
||||||
|
'("melpa" . "http://melpa.milkbox.net/packages/"))
|
||||||
;; answer with y/n
|
|
||||||
(fset 'yes-or-no-p 'y-or-n-p)
|
|
||||||
|
|
||||||
;; stop blinking cursor
|
|
||||||
(blink-cursor-mode 0)
|
|
||||||
|
|
||||||
;; overwrite marked text
|
|
||||||
(delete-selection-mode t)
|
|
||||||
|
|
||||||
;; show column number in mode-line
|
|
||||||
(column-number-mode t)
|
|
||||||
|
|
||||||
;; needed to use things downloaded with the package manager
|
;; needed to use things downloaded with the package manager
|
||||||
(package-initialize)
|
(package-initialize)
|
||||||
|
|
||||||
;; add mirrors for list-packages
|
;; install some packages if missing
|
||||||
(setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/")
|
(let* ((packages '(auto-complete
|
||||||
("marmalade" . "http://marmalade-repo.org/packages/")
|
ido-vertical-mode
|
||||||
("melpa" . "http://melpa.milkbox.net/packages/")))
|
monokai-theme
|
||||||
|
multiple-cursors
|
||||||
|
undo-tree
|
||||||
|
;; if you want more packages, add them here
|
||||||
|
))
|
||||||
|
(packages (remove-if 'package-installed-p packages)))
|
||||||
|
(when packages
|
||||||
|
(package-refresh-contents)
|
||||||
|
(mapc 'package-install packages)))
|
||||||
|
|
||||||
;; choose a color-theme
|
;; no splash screen
|
||||||
(load-theme 'wombat t)
|
(setq inhibit-splash-screen t)
|
||||||
|
|
||||||
;; get the default config for auto-complete (downloaded with
|
;; show matching parenthesis
|
||||||
;; package-manager)
|
(show-paren-mode 1)
|
||||||
(require 'auto-complete-config)
|
|
||||||
|
|
||||||
;; load the default config of auto-complete
|
;; show column number in mode-line
|
||||||
(ac-config-default)
|
(column-number-mode 1)
|
||||||
|
|
||||||
;; enable ido-mode, this changes the way files are selected in the
|
;; overwrite marked text
|
||||||
;; minibuffer
|
(delete-selection-mode 1)
|
||||||
(ido-mode t)
|
|
||||||
|
;; changes selection in the minibuffer
|
||||||
|
(ido-mode 1)
|
||||||
|
|
||||||
|
;; use ido everywhere
|
||||||
|
(ido-everywhere 1)
|
||||||
|
|
||||||
|
;; show vertically
|
||||||
|
(ido-vertical-mode 1)
|
||||||
|
|
||||||
|
;; use undo-tree-mode globally
|
||||||
|
(global-undo-tree-mode 1)
|
||||||
|
|
||||||
|
;; stop blinking cursor
|
||||||
|
(blink-cursor-mode 0)
|
||||||
|
|
||||||
;; no menubar
|
;; no menubar
|
||||||
(menu-bar-mode 0)
|
(menu-bar-mode 0)
|
||||||
@ -51,12 +62,25 @@
|
|||||||
;; with 1 to enable this feature
|
;; with 1 to enable this feature
|
||||||
(global-linum-mode 0)
|
(global-linum-mode 0)
|
||||||
|
|
||||||
|
;; answer with y/n
|
||||||
|
(fset 'yes-or-no-p 'y-or-n-p)
|
||||||
|
|
||||||
|
;; choose a color-theme
|
||||||
|
(load-theme 'monokai t)
|
||||||
|
|
||||||
|
;; get the default config for auto-complete (downloaded with
|
||||||
|
;; package-manager)
|
||||||
|
(require 'auto-complete-config)
|
||||||
|
|
||||||
|
;; load the default config of auto-complete
|
||||||
|
(ac-config-default)
|
||||||
|
|
||||||
;; kills the active buffer, not asking what buffer to kill.
|
;; kills the active buffer, not asking what buffer to kill.
|
||||||
(global-set-key (kbd "C-x k") 'kill-this-buffer)
|
(global-set-key (kbd "C-x k") 'kill-this-buffer)
|
||||||
|
|
||||||
;; adds all autosave-files (i.e #test.txt#, test.txt~) in one
|
;; adds all autosave-files (i.e #test.txt#, test.txt~) in one
|
||||||
;; directory, avoid clutter in filesystem.
|
;; directory, avoid clutter in filesystem.
|
||||||
(defvar emacs-autosave-directory "~/.emacs.d/autosaves/")
|
(defvar emacs-autosave-directory (concat user-emacs-directory "autosaves/"))
|
||||||
(setq backup-directory-alist
|
(setq backup-directory-alist
|
||||||
`((".*" . ,emacs-autosave-directory))
|
`((".*" . ,emacs-autosave-directory))
|
||||||
auto-save-file-name-transforms
|
auto-save-file-name-transforms
|
||||||
@ -65,14 +89,12 @@
|
|||||||
;; defining a function that sets more accessible keyboard-bindings to
|
;; defining a function that sets more accessible keyboard-bindings to
|
||||||
;; hiding/showing code-blocs
|
;; hiding/showing code-blocs
|
||||||
(defun hideshow-on ()
|
(defun hideshow-on ()
|
||||||
|
(interactive)
|
||||||
|
(local-set-key (kbd "<backtab>") 'hs-toggle-hiding)
|
||||||
(local-set-key (kbd "C-c <right>") 'hs-show-block)
|
(local-set-key (kbd "C-c <right>") 'hs-show-block)
|
||||||
(local-set-key (kbd "C-c C-<right>") 'hs-show-block)
|
|
||||||
(local-set-key (kbd "C-c <left>") 'hs-hide-block)
|
(local-set-key (kbd "C-c <left>") 'hs-hide-block)
|
||||||
(local-set-key (kbd "C-c C-<left>") 'hs-hide-block)
|
|
||||||
(local-set-key (kbd "C-c <up>") 'hs-hide-all)
|
(local-set-key (kbd "C-c <up>") 'hs-hide-all)
|
||||||
(local-set-key (kbd "C-c C-<up>") 'hs-hide-all)
|
|
||||||
(local-set-key (kbd "C-c <down>") 'hs-show-all)
|
(local-set-key (kbd "C-c <down>") 'hs-show-all)
|
||||||
(local-set-key (kbd "C-c C-<down>") 'hs-show-all)
|
|
||||||
(hs-minor-mode t))
|
(hs-minor-mode t))
|
||||||
|
|
||||||
;; now we have to tell emacs where to load these functions. Showing
|
;; now we have to tell emacs where to load these functions. Showing
|
||||||
@ -113,7 +135,7 @@
|
|||||||
(end (if (region-active-p) (region-end) (point-max))))
|
(end (if (region-active-p) (region-end) (point-max))))
|
||||||
(whitespace-cleanup)
|
(whitespace-cleanup)
|
||||||
(indent-region beg end nil)
|
(indent-region beg end nil)
|
||||||
(untabify beg end)))
|
|
||||||
|
|
||||||
|
(untabify beg end)))
|
||||||
;; bindes the tidy-function to C-TAB
|
;; bindes the tidy-function to C-TAB
|
||||||
(global-set-key (kbd "<C-tab>") 'tidy)
|
(global-set-key (kbd "<C-tab>") 'tidy)
|
||||||
|
@ -1,250 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
|
|
||||||
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
||||||
<head>
|
|
||||||
<title>emacs-init.el</title>
|
|
||||||
<meta name="generator" content="emacs 24.2.1; htmlfontify 0.21" />
|
|
||||||
<style type="text/css"><!--
|
|
||||||
body { font-family: Inconsolata; font-stretch: normal; font-weight: 500; font-style: normal; color: #eeeeec; background: #1d282b; font-size: 11pt; text-decoration: none; }
|
|
||||||
span.default { font-family: Inconsolata; font-stretch: normal; font-weight: 500; font-style: normal; color: #eeeeec; background: #1d282b; font-size: 11pt; text-decoration: none; }
|
|
||||||
span.default a { font-family: Inconsolata; font-stretch: normal; font-weight: 500; font-style: normal; color: #eeeeec; background: #1d282b; font-size: 11pt; text-decoration: underline; }
|
|
||||||
span.doc { color: #888a85; font-family: Inconsolata; font-stretch: normal; font-weight: 500; font-style: normal; background: #1d282b; font-size: 11pt; text-decoration: none; }
|
|
||||||
span.doc a { color: #888a85; font-family: Inconsolata; font-stretch: normal; font-weight: 500; font-style: normal; background: #1d282b; font-size: 11pt; text-decoration: underline; }
|
|
||||||
span.function-name { color: #edd400; font-style: italic; font-weight: 700; font-family: Inconsolata; font-stretch: normal; background: #1d282b; font-size: 11pt; text-decoration: none; }
|
|
||||||
span.function-name a { color: #edd400; font-style: italic; font-weight: 700; font-family: Inconsolata; font-stretch: normal; background: #1d282b; font-size: 11pt; text-decoration: underline; }
|
|
||||||
span.variable-name { color: #eeeeec; font-family: Inconsolata; font-stretch: normal; font-weight: 500; font-style: normal; background: #1d282b; font-size: 11pt; text-decoration: none; }
|
|
||||||
span.variable-name a { color: #eeeeec; font-family: Inconsolata; font-stretch: normal; font-weight: 500; font-style: normal; background: #1d282b; font-size: 11pt; text-decoration: underline; }
|
|
||||||
span.constant { color: #8ae234; font-family: Inconsolata; font-stretch: normal; font-weight: 500; font-style: normal; background: #1d282b; font-size: 11pt; text-decoration: none; }
|
|
||||||
span.constant a { color: #8ae234; font-family: Inconsolata; font-stretch: normal; font-weight: 500; font-style: normal; background: #1d282b; font-size: 11pt; text-decoration: underline; }
|
|
||||||
span.keyword { color: #729fcf; font-weight: 700; font-family: Inconsolata; font-stretch: normal; font-style: normal; background: #1d282b; font-size: 11pt; text-decoration: none; }
|
|
||||||
span.keyword a { color: #729fcf; font-weight: 700; font-family: Inconsolata; font-stretch: normal; font-style: normal; background: #1d282b; font-size: 11pt; text-decoration: underline; }
|
|
||||||
span.string { color: #ad7fa8; font-style: italic; font-family: Inconsolata; font-stretch: normal; font-weight: 500; background: #1d282b; font-size: 11pt; text-decoration: none; }
|
|
||||||
span.string a { color: #ad7fa8; font-style: italic; font-family: Inconsolata; font-stretch: normal; font-weight: 500; background: #1d282b; font-size: 11pt; text-decoration: underline; }
|
|
||||||
span.comment { color: #888a85; font-family: Inconsolata; font-stretch: normal; font-weight: 500; font-style: normal; background: #1d282b; font-size: 11pt; text-decoration: none; }
|
|
||||||
span.comment a { color: #888a85; font-family: Inconsolata; font-stretch: normal; font-weight: 500; font-style: normal; background: #1d282b; font-size: 11pt; text-decoration: underline; }
|
|
||||||
span.comment-delimiter { color: #888a85; font-family: Inconsolata; font-stretch: normal; font-weight: 500; font-style: normal; background: #1d282b; font-size: 11pt; text-decoration: none; }
|
|
||||||
span.comment-delimiter a { color: #888a85; font-family: Inconsolata; font-stretch: normal; font-weight: 500; font-style: normal; background: #1d282b; font-size: 11pt; text-decoration: underline; }
|
|
||||||
--></style>
|
|
||||||
|
|
||||||
<script type="text/javascript"><!--
|
|
||||||
// this function is needed to work around
|
|
||||||
// a bug in IE related to element attributes
|
|
||||||
function hasClass(obj)
|
|
||||||
{
|
|
||||||
var result = false;
|
|
||||||
if (obj.getAttributeNode("class") != null)
|
|
||||||
{
|
|
||||||
result = obj.getAttributeNode("class").value;
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
function stripe(id)
|
|
||||||
{
|
|
||||||
// the flag we'll use to keep track of
|
|
||||||
// whether the current row is odd or even
|
|
||||||
var even = false;
|
|
||||||
|
|
||||||
// if arguments are provided to specify the colors
|
|
||||||
// of the even & odd rows, then use the them;
|
|
||||||
// otherwise use the following defaults:
|
|
||||||
var evenColor = arguments[1] ? arguments[1] : "#fff";
|
|
||||||
var oddColor = arguments[2] ? arguments[2] : "#ddd";
|
|
||||||
|
|
||||||
// obtain a reference to the desired table
|
|
||||||
// if no such table exists, abort
|
|
||||||
var table = document.getElementById(id);
|
|
||||||
if (! table) { return; }
|
|
||||||
|
|
||||||
// by definition, tables can have more than one tbody
|
|
||||||
// element, so we'll have to get the list of child
|
|
||||||
// <tbody>s
|
|
||||||
var tbodies = table.getElementsByTagName("tbody");
|
|
||||||
|
|
||||||
// and iterate through them...
|
|
||||||
for (var h = 0; h < tbodies.length; h++)
|
|
||||||
{
|
|
||||||
// find all the <tr> elements...
|
|
||||||
var trs = tbodies[h].getElementsByTagName("tr");
|
|
||||||
|
|
||||||
// ... and iterate through them
|
|
||||||
for (var i = 0; i < trs.length; i++)
|
|
||||||
{
|
|
||||||
// avoid rows that have a class attribute
|
|
||||||
// or backgroundColor style
|
|
||||||
if (! hasClass(trs[i]) &&
|
|
||||||
! trs[i].style.backgroundColor)
|
|
||||||
{
|
|
||||||
// get all the cells in this row...
|
|
||||||
var tds = trs[i].getElementsByTagName("td");
|
|
||||||
|
|
||||||
// and iterate through them...
|
|
||||||
for (var j = 0; j < tds.length; j++)
|
|
||||||
{
|
|
||||||
var mytd = tds[j];
|
|
||||||
|
|
||||||
// avoid cells that have a class attribute
|
|
||||||
// or backgroundColor style
|
|
||||||
if (! hasClass(mytd) &&
|
|
||||||
! mytd.style.backgroundColor)
|
|
||||||
{
|
|
||||||
mytd.style.backgroundColor =
|
|
||||||
even ? evenColor : oddColor;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// flip from odd to even, or vice-versa
|
|
||||||
even = ! even;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function toggle_invis( name )
|
|
||||||
{
|
|
||||||
var filter =
|
|
||||||
{ acceptNode:
|
|
||||||
function( node )
|
|
||||||
{ var classname = node.id;
|
|
||||||
if( classname )
|
|
||||||
{ var classbase = classname.substr( 0, name.length );
|
|
||||||
if( classbase == name ) { return NodeFilter.FILTER_ACCEPT; } }
|
|
||||||
return NodeFilter.FILTER_SKIP; } };
|
|
||||||
var walker = document.createTreeWalker( document.body ,
|
|
||||||
NodeFilter.SHOW_ELEMENT ,
|
|
||||||
filter ,
|
|
||||||
false );
|
|
||||||
while( walker.nextNode() )
|
|
||||||
{
|
|
||||||
var e = walker.currentNode;
|
|
||||||
if( e.style.display == "none" ) { e.style.display = "inline"; }
|
|
||||||
else { e.style.display = "none"; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
--> </script>
|
|
||||||
</head>
|
|
||||||
<body onload="stripe('index'); return true;">
|
|
||||||
|
|
||||||
<pre><span class="comment-delimiter">;; </span><span class="comment">no splash screen
|
|
||||||
</span>(setq inhibit-splash-screen t)
|
|
||||||
|
|
||||||
<span class="comment-delimiter">;; </span><span class="comment">show matching parenthesis
|
|
||||||
</span>(show-paren-mode t)
|
|
||||||
|
|
||||||
<span class="comment-delimiter">;; </span><span class="comment">answer with y/n
|
|
||||||
</span>(fset 'yes-or-no-p 'y-or-n-p)
|
|
||||||
|
|
||||||
<span class="comment-delimiter">;; </span><span class="comment">stop blinking cursor
|
|
||||||
</span>(blink-cursor-mode 0)
|
|
||||||
|
|
||||||
<span class="comment-delimiter">;; </span><span class="comment">overwrite marked text
|
|
||||||
</span>(delete-selection-mode t)
|
|
||||||
|
|
||||||
<span class="comment-delimiter">;; </span><span class="comment">show column number in mode-line
|
|
||||||
</span>(column-number-mode t)
|
|
||||||
|
|
||||||
<span class="comment-delimiter">;; </span><span class="comment">needed to use things downloaded with the package manager
|
|
||||||
</span>(package-initialize)
|
|
||||||
|
|
||||||
<span class="comment-delimiter">;; </span><span class="comment">add mirrors for list-packages
|
|
||||||
</span>(setq package-archives '((<span class="string">"gnu"</span> . <span class="string">"http://elpa.gnu.org/packages/"</span>)
|
|
||||||
(<span class="string">"marmalade"</span> . <span class="string">"http://marmalade-repo.org/packages/"</span>)
|
|
||||||
(<span class="string">"melpa"</span> . <span class="string">"http://melpa.milkbox.net/packages/"</span>)))
|
|
||||||
|
|
||||||
<span class="comment-delimiter">;; </span><span class="comment">choose a color-theme
|
|
||||||
</span>(load-theme 'wombat t)
|
|
||||||
|
|
||||||
<span class="comment-delimiter">;; </span><span class="comment">get the default config for auto-complete (downloaded with
|
|
||||||
</span><span class="comment-delimiter">;; </span><span class="comment">package-manager)
|
|
||||||
</span>(<span class="keyword">require</span> '<span class="constant">auto-complete-config</span>)
|
|
||||||
|
|
||||||
<span class="comment-delimiter">;; </span><span class="comment">load the default config of auto-complete
|
|
||||||
</span>(ac-config-default)
|
|
||||||
|
|
||||||
<span class="comment-delimiter">;; </span><span class="comment">enable ido-mode, this changes the way files are selected in the
|
|
||||||
</span><span class="comment-delimiter">;; </span><span class="comment">minibuffer
|
|
||||||
</span>(ido-mode t)
|
|
||||||
|
|
||||||
<span class="comment-delimiter">;; </span><span class="comment">no menubar
|
|
||||||
</span>(menu-bar-mode 0)
|
|
||||||
|
|
||||||
<span class="comment-delimiter">;; </span><span class="comment">no toolbar either
|
|
||||||
</span>(tool-bar-mode 0)
|
|
||||||
|
|
||||||
<span class="comment-delimiter">;; </span><span class="comment">scrollbar? no
|
|
||||||
</span>(scroll-bar-mode 0)
|
|
||||||
|
|
||||||
<span class="comment-delimiter">;; </span><span class="comment">global-linum-mode shows line numbers in all buffers, exchange 0
|
|
||||||
</span><span class="comment-delimiter">;; </span><span class="comment">with 1 to enable this feature
|
|
||||||
</span>(global-linum-mode 0)
|
|
||||||
|
|
||||||
<span class="comment-delimiter">;; </span><span class="comment">kills the active buffer, not asking what buffer to kill.
|
|
||||||
</span>(global-set-key (kbd <span class="string">"C-x k"</span>) 'kill-this-buffer)
|
|
||||||
|
|
||||||
<span class="comment-delimiter">;; </span><span class="comment">adds all autosave-files (i.e #test.txt#, test.txt~) in one
|
|
||||||
</span><span class="comment-delimiter">;; </span><span class="comment">directory, avoid clutter in filesystem.
|
|
||||||
</span>(<span class="keyword">defvar</span> <span class="variable-name">emacs-autosave-directory</span> <span class="string">"~/.emacs.d/autosaves/"</span>)
|
|
||||||
(setq backup-directory-alist
|
|
||||||
`((<span class="string">".*"</span> . ,emacs-autosave-directory))
|
|
||||||
auto-save-file-name-transforms
|
|
||||||
`((<span class="string">".*"</span> ,emacs-autosave-directory t)))
|
|
||||||
|
|
||||||
<span class="comment-delimiter">;; </span><span class="comment">defining a function that sets more accessible keyboard-bindings to
|
|
||||||
</span><span class="comment-delimiter">;; </span><span class="comment">hiding/showing code-blocs
|
|
||||||
</span>(<span class="keyword">defun</span> <span class="function-name">hideshow-on</span> ()
|
|
||||||
(local-set-key (kbd <span class="string">"C-c <right>"</span>) 'hs-show-block)
|
|
||||||
(local-set-key (kbd <span class="string">"C-c C-<right>"</span>) 'hs-show-block)
|
|
||||||
(local-set-key (kbd <span class="string">"C-c <left>"</span>) 'hs-hide-block)
|
|
||||||
(local-set-key (kbd <span class="string">"C-c C-<left>"</span>) 'hs-hide-block)
|
|
||||||
(local-set-key (kbd <span class="string">"C-c <up>"</span>) 'hs-hide-all)
|
|
||||||
(local-set-key (kbd <span class="string">"C-c C-<up>"</span>) 'hs-hide-all)
|
|
||||||
(local-set-key (kbd <span class="string">"C-c <down>"</span>) 'hs-show-all)
|
|
||||||
(local-set-key (kbd <span class="string">"C-c C-<down>"</span>) 'hs-show-all)
|
|
||||||
(hs-minor-mode t))
|
|
||||||
|
|
||||||
<span class="comment-delimiter">;; </span><span class="comment">now we have to tell emacs where to load these functions. Showing
|
|
||||||
</span><span class="comment-delimiter">;; </span><span class="comment">and hiding codeblocks could be useful for all c-like programming
|
|
||||||
</span><span class="comment-delimiter">;; </span><span class="comment">(java is c-like) languages, so we add it to the c-mode-common-hook.
|
|
||||||
</span>(add-hook 'c-mode-common-hook 'hideshow-on)
|
|
||||||
|
|
||||||
<span class="comment-delimiter">;; </span><span class="comment">adding shortcuts to java-mode, writing the shortcut folowed by a
|
|
||||||
</span><span class="comment-delimiter">;; </span><span class="comment">non-word character will cause an expansion.
|
|
||||||
</span>(<span class="keyword">defun</span> <span class="function-name">java-shortcuts</span> ()
|
|
||||||
(define-abbrev-table 'java-mode-abbrev-table
|
|
||||||
'((<span class="string">"psv"</span> <span class="string">"public static void main(String[] args) {"</span> nil 0)
|
|
||||||
(<span class="string">"sop"</span> <span class="string">"System.out.printf"</span> nil 0)
|
|
||||||
(<span class="string">"sopl"</span> <span class="string">"System.out.println"</span> nil 0)))
|
|
||||||
(abbrev-mode t))
|
|
||||||
|
|
||||||
<span class="comment-delimiter">;; </span><span class="comment">the shortcuts are only useful in java-mode so we'll load them to
|
|
||||||
</span><span class="comment-delimiter">;; </span><span class="comment">java-mode-hook.
|
|
||||||
</span>(add-hook 'java-mode-hook 'java-shortcuts)
|
|
||||||
|
|
||||||
<span class="comment-delimiter">;; </span><span class="comment">defining a function that guesses a compile command and bindes the
|
|
||||||
</span><span class="comment-delimiter">;; </span><span class="comment">compile-function to C-c C-c
|
|
||||||
</span>(<span class="keyword">defun</span> <span class="function-name">java-setup</span> ()
|
|
||||||
(set (make-variable-buffer-local 'compile-command)
|
|
||||||
(concat <span class="string">"javac "</span> (buffer-name)))
|
|
||||||
(local-set-key (kbd <span class="string">"C-c C-c"</span>) 'compile))
|
|
||||||
|
|
||||||
<span class="comment-delimiter">;; </span><span class="comment">this is a java-spesific function, so we only load it when entering
|
|
||||||
</span><span class="comment-delimiter">;; </span><span class="comment">java-mode
|
|
||||||
</span>(add-hook 'java-mode-hook 'java-setup)
|
|
||||||
|
|
||||||
<span class="comment-delimiter">;; </span><span class="comment">defining a function that sets the right indentation to the marked
|
|
||||||
</span><span class="comment-delimiter">;; </span><span class="comment">text, or the entire buffer if no text is selected.
|
|
||||||
</span>(<span class="keyword">defun</span> <span class="function-name">tidy</span> ()
|
|
||||||
<span class="doc">"Ident, untabify and unwhitespacify current buffer, or region if active."</span>
|
|
||||||
(interactive)
|
|
||||||
(<span class="keyword">let</span> ((beg (<span class="keyword">if</span> (region-active-p) (region-beginning) (point-min)))
|
|
||||||
(end (<span class="keyword">if</span> (region-active-p) (region-end) (point-max))))
|
|
||||||
(whitespace-cleanup)
|
|
||||||
(indent-region beg end nil)
|
|
||||||
(untabify beg end)))
|
|
||||||
|
|
||||||
<span class="comment-delimiter">;; </span><span class="comment">bindes the tidy-function to C-TAB
|
|
||||||
</span>(global-set-key (kbd <span class="string">"<C-tab>"</span>) 'tidy)
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,39 +1,42 @@
|
|||||||
|
;; we can require features
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;; add mirrors for list-packages
|
||||||
|
|
||||||
|
|
||||||
|
;; needed to use downloaded packages
|
||||||
|
|
||||||
|
|
||||||
|
;; install some packages if missing
|
||||||
|
;; (auto-complete ido-vertical-mode monokai-theme multiple-cursors undo-tree)
|
||||||
|
|
||||||
|
|
||||||
;; no splash screen
|
;; no splash screen
|
||||||
|
|
||||||
|
|
||||||
;; show matching parenthesis
|
;; show matching parenthesis
|
||||||
|
|
||||||
|
|
||||||
;; answer with y/n
|
;; show column number in mode-line
|
||||||
|
|
||||||
|
|
||||||
;; stop blinking cursor
|
|
||||||
|
|
||||||
|
|
||||||
;; overwrite marked text
|
;; overwrite marked text
|
||||||
|
|
||||||
|
|
||||||
;; show column number in mode-line
|
;; enable ido-mode, changes the way files are selected in the minibuffer
|
||||||
|
|
||||||
|
|
||||||
;; needed to use things downloaded with the package manager
|
;; use ido everywhere
|
||||||
|
|
||||||
|
|
||||||
;; add mirrors for list-packages
|
;; show vertically
|
||||||
|
|
||||||
|
|
||||||
;; choose a color-theme (downloaded with package-manager)
|
;; use undo-tree-mode globally
|
||||||
|
|
||||||
|
|
||||||
;; get the default config for auto-complete (downloaded with
|
;; stop blinking cursor
|
||||||
;; package-manager)
|
|
||||||
|
|
||||||
|
|
||||||
;; load the default config of auto-complete
|
|
||||||
|
|
||||||
|
|
||||||
;; enable ido-mode, this changes the way files are selected in the
|
|
||||||
;; minibuffer
|
|
||||||
|
|
||||||
|
|
||||||
;; no menubar
|
;; no menubar
|
||||||
@ -49,6 +52,19 @@
|
|||||||
;; with 1 to enable this feature
|
;; with 1 to enable this feature
|
||||||
|
|
||||||
|
|
||||||
|
;; answer with y/n
|
||||||
|
|
||||||
|
|
||||||
|
;; choose a color-theme
|
||||||
|
|
||||||
|
|
||||||
|
;; get the default config for auto-complete (downloaded with
|
||||||
|
;; package-manager)
|
||||||
|
|
||||||
|
|
||||||
|
;; load the default config of auto-complete
|
||||||
|
|
||||||
|
|
||||||
;; kills the active buffer, not asking what buffer to kill.
|
;; kills the active buffer, not asking what buffer to kill.
|
||||||
|
|
||||||
|
|
||||||
@ -56,6 +72,7 @@
|
|||||||
;; directory, avoid clutter in filesystem.
|
;; directory, avoid clutter in filesystem.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;; defining a function that sets more accessible keyboard-bindings to
|
;; defining a function that sets more accessible keyboard-bindings to
|
||||||
;; hiding/showing code-blocs
|
;; hiding/showing code-blocs
|
||||||
|
|
||||||
@ -86,3 +103,4 @@
|
|||||||
|
|
||||||
|
|
||||||
;; bindes the tidy-function to C-TAB
|
;; bindes the tidy-function to C-TAB
|
||||||
|
|
||||||
|
1219
emacskurs.html
1219
emacskurs.html
File diff suppressed because it is too large
Load Diff
392
emacskurs.org
392
emacskurs.org
@ -1,268 +1,368 @@
|
|||||||
* Emacskurs
|
#+Title: Emacskurs
|
||||||
** Intro
|
#+Email: larstvei@ifi.uio.no
|
||||||
*** Hva er Emacs?
|
|
||||||
|
|
||||||
|
#+OPTIONS: toc:1 num:nil \n:1
|
||||||
|
#+REVEAL_TRANS: linear
|
||||||
|
#+REVEAL_THEME: night
|
||||||
|
#+REVEAL_THEME: moon
|
||||||
|
#+REVEAL_SPEED: fast
|
||||||
|
#+REVEAL_HLEVEL: 1
|
||||||
|
|
||||||
|
* Intro
|
||||||
|
** Plan for kurset
|
||||||
|
#+ATTR_REVEAL: :frag roll-in
|
||||||
|
- Før pause:
|
||||||
|
- Innføring i Emacs
|
||||||
|
- Nyttige kommander
|
||||||
|
|
||||||
|
- Etter pause:
|
||||||
|
- Sette opp Emacs på Ifi's maskiner
|
||||||
|
- Skrive en enkel konfigurasjonsfil
|
||||||
|
- Bruke det vi lærte før pause
|
||||||
|
|
||||||
|
** Hva er Emacs?
|
||||||
|
#+ATTR_REVEAL: :frag roll-in
|
||||||
- Teksteditor
|
- Teksteditor
|
||||||
- Utvidbar (Elisp)
|
- Utvidbar (Emacs Lisp)
|
||||||
- Over 30 år gammel
|
- Over 30 år gammel
|
||||||
- Over 2500 innebygde kommandoer
|
- Over 2500 innebygde kommandoer
|
||||||
- Fri programvare
|
- Fri programvare
|
||||||
|
|
||||||
*** Buffere, vinduer og rammer
|
** Rammer, vinduer og buffere
|
||||||
|
|
||||||
|
#+ATTR_REVEAL: :frag roll-in
|
||||||
|
- Emacs åpnes i en ramme
|
||||||
|
- Man kan ha flere vinduer i samme ramme
|
||||||
- Tekst vises i buffere
|
- Tekst vises i buffere
|
||||||
- Du kan ha så mange åpene buffere du vil
|
- Du kan ha så mange åpne buffere du vil
|
||||||
- En fil åpnes i et nytt buffer
|
- En fil åpnes i et nytt buffer
|
||||||
- Minibufferet (nederste linje), brukes til å skrive inn filnavn,
|
- Minibufferet (nederste linje), brukes til å skrive inn filnavn, buffernavn, etc...
|
||||||
buffernavn, etc...
|
|
||||||
|
|
||||||
- Emacs åpnes i en ramme
|
** Modes
|
||||||
- En kan ha flere vinduer i samme ramme
|
|
||||||
|
|
||||||
*** Modes
|
|
||||||
|
|
||||||
|
#+ATTR_REVEAL: :frag roll-in
|
||||||
- Major modes
|
- Major modes
|
||||||
- hvert buffer har kun én aktiv major mode
|
- hvert buffer har kun én aktiv major mode
|
||||||
- en major mode gir deg funksjonalitet for en bestemt type
|
- en major mode gir deg funksjonalitet for en bestemt type
|
||||||
tekstredigering
|
tekstredigering
|
||||||
- de fleste programmeringsspråk har sin egen major mode
|
- de fleste programmeringsspråk har sin egen major mode
|
||||||
|
|
||||||
- Minor modes
|
- Minor modes
|
||||||
- du kan ha så mange aktive minor modes du ønsker
|
- du kan ha så mange aktive minor modes du ønsker
|
||||||
- en minor mode tilbyr tilleggsfunksjonalitet
|
- en minor mode tilbyr tilleggsfunksjonalitet
|
||||||
|
|
||||||
Modes tilføyer ofte egne tastekombinasjoner!
|
- Modes tilføyer ofte egne tastekombinasjoner!
|
||||||
|
|
||||||
*** Tips
|
** Tips
|
||||||
|
|
||||||
Emacs er annerledes å bruke enn mange andre programmer, så det
|
- Emacs er annerledes å bruke enn mange andre programmer, så det krever tilvenning.
|
||||||
krever tilvenning.
|
|
||||||
|
|
||||||
- i begynnelsen
|
#+ATTR_REVEAL: :frag roll-in
|
||||||
- les og gjør «learn-by-doing tutorial» (C-h t)
|
- i begynnelsen:
|
||||||
- tving deg selv til å bruke de kommandoene du lærer til de
|
- les og gjør «learn-by-doing tutorial» (=C-h t=)
|
||||||
sitter i fingrene
|
- tving deg selv til å bruke de kommandoene du lærer til de sitter i fingrene
|
||||||
- unngå «pek og klikk»
|
- unngå «pek og klikk»
|
||||||
|
|
||||||
- etter hvert (for spesielt interesserte)
|
- etter hvert (for spesielt interesserte):
|
||||||
- skriv din egen configfil
|
- skriv din egen config-fil
|
||||||
- lær litt elisp, og skriv dine egne funksjoner
|
- lær litt Emacs lisp, og skriv dine egne funksjoner
|
||||||
|
|
||||||
- annet
|
- annet:
|
||||||
- gjør CAPS-LOCK om til en ekstra Control (Ctrl)
|
- gjør =CAPS-LOCK= om til en ekstra Control (=Ctrl=)
|
||||||
|
|
||||||
** Taster
|
* Taster
|
||||||
*** Terminologi for taster
|
** Terminologi for taster
|
||||||
|
|
||||||
- C-<any>
|
#+ATTR_REVEAL: :frag roll-in
|
||||||
|
- =C-<any>=
|
||||||
Control
|
Control
|
||||||
|
|
||||||
- M-<any>
|
- =M-<any>=
|
||||||
Meta er Alt på de fleste maskiner (alternativt ESC)
|
Meta er =Alt= på de fleste maskiner (alternativt =ESC=)
|
||||||
|
|
||||||
<any> betyr et vilkårlig tegn (eller tastekombinasjon)
|
- =<any>= betyr et vilkårlig tegn (eller tastekombinasjon)
|
||||||
|
|
||||||
*** Prefikstaster
|
** Prefikstaster
|
||||||
|
|
||||||
- C-x <any>
|
#+ATTR_REVEAL: :frag roll-in
|
||||||
|
- =C-x <any>=
|
||||||
prefiks for globale kommandoer
|
prefiks for globale kommandoer
|
||||||
|
|
||||||
- C-c <any>
|
- =C-c <any>=
|
||||||
prefiks for lokale kommandoer
|
prefiks for lokale kommandoer
|
||||||
(har ikke alltid samme funksjon!)
|
(har ikke alltid samme funksjon!)
|
||||||
|
|
||||||
- C-h <any>
|
- =C-h <any>=
|
||||||
prefiks for hjelp
|
prefiks for hjelp
|
||||||
|
|
||||||
Alle tastekombinasjon som ikke er en prefiks er bundet til en
|
- Alle tastekombinasjoner som ikke er en prefiks er bundet til en kommando!
|
||||||
kommando!
|
|
||||||
|
|
||||||
** Komme seg ut
|
** Komme seg ut
|
||||||
|
|
||||||
- C-x C-c
|
#+ATTR_REVEAL: :frag roll-in
|
||||||
avslutt emacs
|
- =C-x C-c=
|
||||||
|
avslutt Emacs
|
||||||
|
|
||||||
- C-g
|
- =C-g=
|
||||||
avbryt
|
avbryt
|
||||||
(bruk hvis du ikke skjønner hva emacs holder på med!)
|
(bruk hvis du ikke skjønner hva Emacs holder på med!)
|
||||||
|
|
||||||
- ESC ESC ESC
|
- =ESC ESC ESC=
|
||||||
(bruk hvis C-g ikke hjalp)
|
(bruk hvis =C-g= ikke hjalp)
|
||||||
|
|
||||||
- C-<prefix> C-g
|
- =C-<prefix> C-g=
|
||||||
er udefinert
|
er udefinert
|
||||||
(Dvs. C-g kan brukes til å avbryte prefiks)
|
(Dvs. =C-g= kan brukes til å avbryte prefiks)
|
||||||
|
|
||||||
** Tekstredigering
|
** Tekstredigering
|
||||||
*** Flytte markør
|
|
||||||
|
|
||||||
- C-f, C-b
|
#+ATTR_REVEAL: :frag roll-in
|
||||||
flytt markøren ett tegn frem/tilbake
|
- =C-f=, =C-b=
|
||||||
|
flytt markøren ett tegn frem/tilbake
|
||||||
|
|
||||||
- M-f, M-b
|
- =M-f=, =M-b=
|
||||||
flytt markøren ett ord frem/tilbake
|
flytt markøren ett ord frem/tilbake
|
||||||
|
|
||||||
- C-a, C-e
|
- =C-a=, =C-e=
|
||||||
flytt markøren til begynnelsen/slutten av linja
|
flytt markøren til begynnelsen/slutten av linja
|
||||||
|
|
||||||
- C-p, C-n
|
- =C-p=, =C-n=
|
||||||
flytt markøren til forrige/neste linje
|
flytt markøren til forrige/neste linje
|
||||||
|
|
||||||
*** Bla rundt
|
** Bla rundt
|
||||||
|
|
||||||
- C-v, M-v
|
#+ATTR_REVEAL: :frag roll-in
|
||||||
|
- =C-v=, =M-v=
|
||||||
scroll ned/opp en side
|
scroll ned/opp en side
|
||||||
|
|
||||||
- M-<, M->
|
- =M-<=, =M->=
|
||||||
gå til begynnelsen/slutten av bufferet
|
gå til begynnelsen/slutten av bufferet
|
||||||
|
|
||||||
- C-l
|
- =C-l=
|
||||||
vis slik at markøren er i senter/toppen/bunnen
|
vis slik at markøren er i senter/toppen/bunnen
|
||||||
|
|
||||||
*** Kill og yank
|
** Kill og yank
|
||||||
|
|
||||||
- C-w
|
#+ATTR_REVEAL: :frag roll-in
|
||||||
|
- =C-w=
|
||||||
kill, tilsvarer cut
|
kill, tilsvarer cut
|
||||||
|
|
||||||
- C-y
|
- =C-y=
|
||||||
yank, tilsvarer paste
|
yank, tilsvarer paste
|
||||||
|
|
||||||
- M-w
|
- =M-w=
|
||||||
lagre til kill-ring, tilsvarer copy
|
lagre til kill-ring, tilsvarer copy
|
||||||
|
|
||||||
- C-k
|
- =C-k=
|
||||||
kill, drepe resten av en linje
|
kill, drepe resten av en linje
|
||||||
|
|
||||||
- M-y, må etterfølges av C-y
|
- =M-y=, må etterfølges av =C-y=
|
||||||
yank-pop, går lenger tilbake på kill-ring
|
yank-pop, går lenger tilbake på kill-ring
|
||||||
|
|
||||||
*** Feiloppretting
|
** Feiloppretting
|
||||||
|
|
||||||
- C-d, M-d
|
#+ATTR_REVEAL: :frag roll-in
|
||||||
|
- =C-d=, =M-d=
|
||||||
fjern neste bokstav/ord
|
fjern neste bokstav/ord
|
||||||
|
|
||||||
- C-_
|
- =C-_=, =C-/=, =C-x u=
|
||||||
undo!
|
undo!
|
||||||
|
|
||||||
- C-t, M-t
|
- =C-t=, =M-t=
|
||||||
bytt om to bokstaver/ord
|
bytt om to bokstaver/ord
|
||||||
|
|
||||||
- C-x C-t
|
- =C-x C-t=
|
||||||
bytt om to linjer
|
bytt om to linjer
|
||||||
|
|
||||||
- M-q
|
- =M-q=
|
||||||
plasserer om tekst i en paragraf slik at linjene ikke overstiger
|
plasserer om tekst i en paragraf slik at linjene ikke overstiger 70 tegn (den ødelegger ikke syntaks i programmeringmodes)
|
||||||
70 tegn (den ødelegger ikke syntaks i programmeringsmodes)
|
|
||||||
|
|
||||||
- M-u, M-l, M-c
|
- =M-u=, =M-l=, =M-c=
|
||||||
gjør neste ord til UPPERCASE/lowercase/Capital-Case
|
gjør neste ord til UPPERCASE/lowercase/Capital-Case
|
||||||
|
|
||||||
*** Markering av tekst
|
** Markering av tekst
|
||||||
|
|
||||||
- C-SPC
|
#+ATTR_REVEAL: :frag roll-in
|
||||||
marker tekst
|
- =C-SPC=
|
||||||
|
markerer tekst
|
||||||
|
|
||||||
- C-x h
|
- =C-x h=
|
||||||
marker all tekst
|
markerer all tekst
|
||||||
|
|
||||||
Bruk i kombinasjon med M-w, C-w og TAB
|
- =M-h=
|
||||||
|
markerer en paragraf
|
||||||
|
|
||||||
** Filer, vinduer og buffere
|
- Bruk i kombinasjon med =M-w=, =C-w= og =TAB=
|
||||||
*** Filer
|
|
||||||
|
|
||||||
- C-x C-f
|
* Filer, vinduer og buffere
|
||||||
åpne fil
|
** Filer
|
||||||
(hvis den ikke finnes fra før opprettes den)
|
|
||||||
|
|
||||||
- C-x C-s
|
#+ATTR_REVEAL: :frag roll-in
|
||||||
|
- =C-x C-f=
|
||||||
|
åpne fil
|
||||||
|
(hvis den ikke finnes fra før åpnes et tomt buffer med det nye filnavnet)
|
||||||
|
|
||||||
|
- =C-x C-s=
|
||||||
lagre buffer
|
lagre buffer
|
||||||
|
|
||||||
- C-x C-w
|
- =C-x C-w=
|
||||||
skrive til fil (tilsvarende «lagre som...»)
|
skrive til fil (tilsvarende «lagre som...»)
|
||||||
|
|
||||||
*** Vinduer
|
** Vinduer
|
||||||
|
|
||||||
- C-x 2, C-x 3
|
#+ATTR_REVEAL: :frag roll-in
|
||||||
splitt et vindu vertikalt/horisontalt
|
- =C-x 2=, =C-x 3=
|
||||||
|
splitt et vindu horisontalt/vertikalt
|
||||||
|
|
||||||
- C-x 1
|
- =C-x 1=
|
||||||
gjør det aktive vinduet til det eneste vinduet
|
gjør det aktive vinduet til det eneste vinduet
|
||||||
|
|
||||||
- C-x 0
|
- =C-x 0=
|
||||||
lukk det aktive vinduet
|
lukk det aktive vinduet
|
||||||
|
|
||||||
- C-x o
|
- =C-x o=
|
||||||
bytt fokus til et annet vindu
|
bytt fokus til et annet vindu
|
||||||
|
|
||||||
*** Buffere
|
** Buffere
|
||||||
|
|
||||||
- C-x b RET
|
#+ATTR_REVEAL: :frag roll-in
|
||||||
|
- =C-x b RET=
|
||||||
bytt buffer
|
bytt buffer
|
||||||
(siste besøkte buffer er default)
|
(siste besøkte buffer er default)
|
||||||
|
|
||||||
- C-x k RET
|
- =C-x k RET=
|
||||||
drep (kill) buffer
|
drep (kill) buffer
|
||||||
(det aktive bufferet er default)
|
(det aktive bufferet er default)
|
||||||
|
|
||||||
- C-x left, C-x right
|
- =C-x left=, =C-x right=
|
||||||
en annen måte å bytter buffer
|
en annen måte å bytter buffer på
|
||||||
|
|
||||||
** Kommandoer
|
* Kommandoer
|
||||||
|
|
||||||
- M-x function RET
|
#+ATTR_REVEAL: :frag roll-in
|
||||||
lar deg kalle en hvilken som helst kommando med navn
|
- =M-x function RET=
|
||||||
|
lar deg kalle en vilkårlig kommando med navn
|
||||||
|
|
||||||
- M-x replace-string RET erstatt RET med RET
|
- =M-x replace-string RET erstatt RET med RET=
|
||||||
tilsvarer «search and replace»
|
tilsvarer «search and replace»
|
||||||
|
|
||||||
- M-x query-replace RET erstatt RET med RET ... y/n
|
- =M-x query-replace RET erstatt RET med RET= ... =y/n=
|
||||||
samme som replace-string, men du kan velge hva som skal
|
samme som replace-string, men du kan velge hva som skal erstattes (kan også kjøres med =M-%=!)
|
||||||
erstattes
|
|
||||||
|
|
||||||
Bruk TAB for autocomplete!
|
- Bruk =TAB= for autocomplete!
|
||||||
|
|
||||||
** Søking
|
* Søking
|
||||||
|
|
||||||
- C-s
|
#+ATTR_REVEAL: :frag roll-in
|
||||||
søk fremover i bufferet
|
- =C-s=
|
||||||
|
søk fremover i bufferet
|
||||||
|
|
||||||
- C-r
|
- =C-r=
|
||||||
søk bakover i bufferet
|
søk bakover i bufferet
|
||||||
|
|
||||||
Dette er en effektiv måte å flytte markøren!
|
- Dette er en /svært/ effektiv måte å flytte markøren på!
|
||||||
|
|
||||||
** Hjelp til selvhjelp
|
* Hjelp til selvhjelp
|
||||||
|
|
||||||
- C-h k
|
#+ATTR_REVEAL: :frag roll-in
|
||||||
bruk hvis du lurer på hva en tastekombinasjon gjør
|
- =C-h k=
|
||||||
|
bruk hvis du lurer på hva en tastekombinasjon gjør
|
||||||
|
|
||||||
- C-h f
|
- =C-h f=
|
||||||
bruk hvis du kjenner navnet på en funksjon, men ikke vet hva hva
|
bruk hvis du kjenner navnet på en funksjon, men ikke vet hva den gjør
|
||||||
den gjør
|
|
||||||
|
|
||||||
- C-h m
|
- =C-h m=
|
||||||
gir deg informasjon om moden du er i
|
gir deg informasjon om moden du er i (bl.a. tastekombinasjoner som er spesielle for moden)
|
||||||
(bl.a tastekombinasjoner som er spesielle for moden)
|
|
||||||
|
|
||||||
- C-h a
|
- =C-h a=
|
||||||
apropos, lar deg søke i hjelpen
|
apropos, lar deg søke i hjelpen
|
||||||
|
|
||||||
- C-h C-h, C-h ?
|
- =C-h C-h= (eller: =C-h ?=)
|
||||||
gir deg hjelp om hjelpen
|
gir deg hjelp om hjelpen
|
||||||
|
|
||||||
** Programmering
|
* Programmering
|
||||||
|
|
||||||
- TAB indenterer riktig
|
#+ATTR_REVEAL: :frag roll-in
|
||||||
(dersom indenteringen er gal er det et tegn på at det er noe galt
|
- =TAB=
|
||||||
i koden!)
|
indenterer riktig (dersom indenteringen er gal er det et tegn på at det er noe galt i koden!)
|
||||||
|
|
||||||
- M-;
|
- =M-;=
|
||||||
kommenterer ut et markert område
|
kommenterer ut et markert område
|
||||||
|
|
||||||
- M-x compile RET compile-command RET
|
- =M-x compile RET compile-command RET=
|
||||||
lar deg kompilere i Emacs
|
lar deg kompilere i Emacs
|
||||||
(gir trykkbare linker til der feil oppstod)
|
(gir trykkbare linker til der feil oppstod)
|
||||||
|
|
||||||
- M-g g <nr> RET
|
- =M-g g <nr> RET=
|
||||||
flytter markøren til linjenummer <nr>
|
flytter markøren til linjenummer =<nr>=
|
||||||
|
|
||||||
|
* Makroer
|
||||||
|
|
||||||
|
#+ATTR_REVEAL: :frag roll-in
|
||||||
|
- Makroer er en måte å "ta opp" en rekke kommandoer på
|
||||||
|
|
||||||
|
- =C-x (=
|
||||||
|
definer en makro
|
||||||
|
|
||||||
|
- =<f3>=
|
||||||
|
definer en makro /eller/ sett inn løpenummer
|
||||||
|
|
||||||
|
- =C-x )=, =<f4>=
|
||||||
|
ferdigstill makroen
|
||||||
|
|
||||||
|
- =C-x e=
|
||||||
|
utfør makroen
|
||||||
|
|
||||||
|
- =e=
|
||||||
|
gjenta makroen
|
||||||
|
|
||||||
|
* Pakker
|
||||||
|
|
||||||
|
#+ATTR_REVEAL: :frag roll-in
|
||||||
|
- Emacs 24 kommer med innebygd pakkebehandler
|
||||||
|
|
||||||
|
- det finnes tusenvis av pakker
|
||||||
|
|
||||||
|
- =M-x list-packages=
|
||||||
|
bla gjennom pakker
|
||||||
|
|
||||||
|
- =i= installere
|
||||||
|
|
||||||
|
- =U= oppgrader alle
|
||||||
|
|
||||||
|
- =d= slett
|
||||||
|
|
||||||
|
- =x= utfør installering/oppgradering/sletting
|
||||||
|
|
||||||
|
** Anbefalinger
|
||||||
|
|
||||||
|
#+ATTR_REVEAL: :frag roll-in
|
||||||
|
|
||||||
|
- [[https://github.com/auto-complete/auto-complete][Auto-Complete]]
|
||||||
|
viser mulige fullføringer
|
||||||
|
|
||||||
|
- [[https://github.com/emacsmirror/undo-tree][Undo-Tree]]
|
||||||
|
et mer standard undo-system, med trestruktur
|
||||||
|
|
||||||
|
- [[https://github.com/magnars/multiple-cursors.el][Multiple cursors]] ([[http://emacsrocks.com/e13.html][demo]])
|
||||||
|
lar deg kontrollere flere markører samtidig!
|
||||||
|
|
||||||
|
- [[https://github.com/oneKelvinSmith/monokai-emacs][Monokai]]
|
||||||
|
et fargetema (hentet fra Sublime)
|
||||||
|
|
||||||
|
* Til slutt
|
||||||
|
|
||||||
|
** Nyttige lenker
|
||||||
|
#+ATTR_REVEAL: :frag roll-in
|
||||||
|
- [[http://www.gnu.org/software/emacs/manual/html_node/emacs/index.html#Top][Emacs manualen]]
|
||||||
|
- [[http://termvakt.ifi.uio.no/Emacs][Termvaktens guide til Emacs]]
|
||||||
|
- [[http://www.masteringemacs.org/reading-guide/][En flott blogg om Emacs]]
|
||||||
|
- [[http://www.ic.unicamp.br/%7Ehelio/disciplinas/MC102/Emacs_Reference_Card.pdf][En cheat-sheet for Emacs]]
|
||||||
|
- [[https://github.com/larstvei/dot-emacs][Min konfigurasjonsfil]]
|
||||||
|
|
||||||
|
** Spørsmål?
|
||||||
|
|
||||||
|
#+ATTR_REVEAL: :frag roll-in
|
||||||
|
- Noen spørsmål nå?
|
||||||
|
- Kom ned i pausen hvis dere har spørsmål eller ønske for neste time!
|
||||||
|
- Gjerne send mail til [[mailto:larstvei@ifi.uio.no][larstvei@ifi.uio.no]]!
|
||||||
|
Loading…
Reference in New Issue
Block a user