mirror of
https://github.com/tomru/org.git
synced 2026-03-03 14:37:26 +01:00
277 lines
6.0 KiB
Org Mode
277 lines
6.0 KiB
Org Mode
To get a list of packages type ~M-x list-packages~
|
|
|
|
* Intersting learnings
|
|
** Help systems
|
|
~SPC h RET~ emacs manual
|
|
|
|
~C-h a~ appropos
|
|
~C-h l~ list 300 last keystrokes with description
|
|
~C-h m~ docs to major and minor modes activg
|
|
|
|
~C-h k~ what does a keybinding X do
|
|
~C-h w~ which keybinding is active for X
|
|
* Elisp
|
|
Following this [[http://ergoemacs.org/emacs/elisp.html][Practical Emacs Lisp]]
|
|
|
|
** Basics
|
|
*** Eval code block with ~C-c C-c~
|
|
#+BEGIN_SRC elisp
|
|
(+ 547 1)
|
|
#+END_SRC
|
|
|
|
#+RESULTS:
|
|
: Result 548
|
|
*** Eval last expression with ~C-x C-e~
|
|
*** Printing with (message ...)
|
|
#+BEGIN_SRC elisp
|
|
(message "Result %S" (+ 547 1))
|
|
#+END_SRC
|
|
|
|
#+RESULTS:
|
|
: Result 548
|
|
*** Arithmetic
|
|
Singel digit numbers as ~2.~ are integers. Use ~2.0~ for floats.
|
|
|
|
#+BEGIN_SRC elisp
|
|
(+ 4 5 1) ; 10
|
|
(- 9 2) ; 7
|
|
(- 9 2 3) ; 4
|
|
(* 2 3) ; 6
|
|
(* 2 3 2) ; 12
|
|
|
|
;; integer part of quotient
|
|
(/ 7 2) ; 3
|
|
|
|
;; division
|
|
(/ 7 2.0) ; 3.5
|
|
|
|
;; mod, remainder
|
|
(% 7 4) ; 3
|
|
|
|
;; power; exponential
|
|
(expt 2 3) ; 8
|
|
|
|
;; int to float
|
|
(float 3) ; 3.0
|
|
|
|
(truncate 3.3) ; 3
|
|
|
|
(floor 3.3) ; 3
|
|
|
|
(ceiling 3.3) ; 4
|
|
|
|
(round 3.4) ; 3
|
|
#+END_SRC
|
|
|
|
*** Convert string and numbers
|
|
#+BEGIN_SRC elisp
|
|
(string-to-number "547")
|
|
(number-to-string 547)
|
|
#+END_SRC
|
|
*** True and False
|
|
**** ~nil~ is false
|
|
**** anything else is true,
|
|
**** nil is equivalent to a empty list ~()~, so also false
|
|
**** ~t~ is by convention true
|
|
*** and/or/not
|
|
#+BEGIN_SRC elisp
|
|
(and t nil)
|
|
(or t nil () t)
|
|
(not (and t t))
|
|
#+END_SRC
|
|
*** comparing
|
|
#+BEGIN_SRC elisp
|
|
; numbers
|
|
(< 3 4)
|
|
(>=_ 3 4)
|
|
(= 3 3.0000000000000000000000001)
|
|
(/= 3 4) ; not equal
|
|
|
|
;strings
|
|
(equal "abc" "abc") ; checks
|
|
(string-equal "string" "strings")
|
|
(string-equal "symbol" 'symbol) ; can be used to compare string with symbol
|
|
|
|
; generic equal - checks datatype and value
|
|
(equal 3 3) ; t
|
|
(equal 3 3.0) ; nil
|
|
(not (equal 3 4)) ; t. general way to test inequality
|
|
#+END_SRC
|
|
*** variables
|
|
**** global
|
|
#+BEGIN_SRC elisp
|
|
(setq x 1)
|
|
(setq x 2 y 3 z -1)
|
|
#+END_SRC
|
|
**** local
|
|
#+BEGIN_SRC elisp
|
|
(let name "value")
|
|
|
|
(let (name1 name2)
|
|
(setq name1 "Gustav")
|
|
(setq name2 "Gustl")
|
|
(+ 40 2) ; return value, optional
|
|
)
|
|
|
|
; or even shorter
|
|
(let ((name1 "Gustav") (name2 "Gustl"))
|
|
"Gustav+Gustl" ; return value, optional
|
|
)
|
|
#+END_SRC
|
|
*** if then else
|
|
#+BEGIN_SRC elisp
|
|
(if (< 3 2) "yay" "nay")
|
|
(if (< 1 2) "yay") ; no else, nil
|
|
; no else, clearer to use ~when~. All args executed.
|
|
(when (< 1 2) (setq a 1) (setq b 2)) ; a=1 and b=2
|
|
#+END_SRC
|
|
|
|
#+RESULTS:
|
|
: 2
|
|
|
|
*** block of expressions
|
|
Same as a code block in C-like languages ~{...}~
|
|
|
|
#+BEGIN_SRC elisp
|
|
(progn (message "a") (message "b"))
|
|
#+END_SRC
|
|
|
|
Often used inside ~if~
|
|
|
|
#+BEGIN_SRC elisp
|
|
(if something
|
|
(progn ; true
|
|
(message "something is t")
|
|
(message "yay")
|
|
)
|
|
(progn ; else
|
|
(message "something is nil")
|
|
(message 'nai')
|
|
)
|
|
)
|
|
#+END_SRC
|
|
*** loops
|
|
#+BEGIN_SRC elisp
|
|
;; inserts Unicode chars 32 to 126
|
|
(let ((x 32)))
|
|
(let ((r "")))
|
|
(while (< x 127)
|
|
(setq r (concatenate 'string r (char-to-string x)))
|
|
(setq x (+ x 1)))
|
|
(message "%s" r)
|
|
#+END_SRC
|
|
|
|
#+RESULTS:
|
|
: !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
|
|
|
|
* to research
|
|
** backup file location configurable?
|
|
** highlight line
|
|
** git gutter needed
|
|
** what the hell is that footer thing you cannot edit?
|
|
** ~C-o~ does not open last file, not sure why yet
|
|
** persistant undo possible?
|
|
** helm/ivy - dash?
|
|
|
|
Still trying to figure what use-case each of these tries to
|
|
solve. I'm primarily looking for something that offers me an nice
|
|
interface to deal with all kind of lists of elements, like files,
|
|
buffers, commits, tags, grepper etc.
|
|
|
|
I used to cover that all with vim.fzf and would again like to have
|
|
something like that.
|
|
|
|
Though it seems, that I just need some inteface for lists of any
|
|
kind that I can easily fuzzy search.
|
|
|
|
And other plugins to actually provide the content.
|
|
|
|
** gruvbox-theme
|
|
** which-key
|
|
Seems great for learning the editor commands. But could also be
|
|
distracting
|
|
|
|
** magit
|
|
** language server protocol
|
|
Mainly for my JS work, but probably worth to look at something
|
|
generic if there is something out there.
|
|
|
|
** vim-unimpaired ?
|
|
|
|
Couln't find something replicating unimpaired until now.
|
|
|
|
Maybe I just need to roll most of these on my own
|
|
|
|
** vim-abolish ?
|
|
** ranger/dired-ranger
|
|
** devdocs
|
|
|
|
* installed packages
|
|
** general
|
|
*** editorconfig
|
|
*** helm
|
|
*** projectile
|
|
*** magit
|
|
** evil related
|
|
*** evil
|
|
|
|
evil uses "state" for the "modes" in vi. The term "mode" is already used in emacs
|
|
for a set of key bindings for a cetrain sort of text. A "mode" may include custom
|
|
bindings for evil states.
|
|
|
|
The state is shown in the status bar.
|
|
|
|
There is also an emacs state <E>, basically turn off evil, which you can
|
|
toggle with 'C-z'.
|
|
|
|
I've heard numerous times that people claim evil covers 99% of what they use in vim.
|
|
[[evil-maps.el][~/.emacs.d/elpa/evil-20190729.704/evil-maps.el] is a good place
|
|
to start looking if something does not work for you.
|
|
|
|
*** evil-escape
|
|
*** evil-leader
|
|
I was first not sure if I should even start using the leader key
|
|
as I did in my vim config, as it would again not bring me further
|
|
in learning the standard key bindings vim offers.
|
|
|
|
This is still a valid point, but I also feel it will slow me down
|
|
quite a bit, now that I'm considering to switch to Emacs.
|
|
|
|
So I'll start with using it, but keep it very high in my priorities
|
|
to finally getting rid of it.
|
|
|
|
This is pretty important, as I'm pretty sure that I'll still be using
|
|
Vim in quite some remote systems.
|
|
|
|
*** evil-surround
|
|
*** evil-magit
|
|
*** evil-org
|
|
** org-mode related
|
|
*** org-bullets
|
|
UTF-8 bullets
|
|
|
|
* considering packages
|
|
** general
|
|
"So now " it makes really fun to work like this
|
|
#+BEGIN_SRC elisp
|
|
(print "blup")
|
|
#+END_SRC
|
|
|
|
#+BEGIN_SRC lisp
|
|
|
|
#+END_SRC
|
|
** evil related
|
|
*** evil-args
|
|
*** evil-matchit
|
|
*** evil-collection
|
|
This seems to use vim like keybindings in most common emacs
|
|
places. Not sure yet if this is a good idea.
|
|
** org-mode related
|
|
*** org-download
|
|
image d"n'd
|
|
*** org-gcal
|
|
*** org-jira
|
|
*** org-projectile
|
|
*** org-pandoc
|
|
*** org-reveal
|