1766 lines
80 KiB
Org Mode
1766 lines
80 KiB
Org Mode
-*- coding: utf-8 -*-
|
||||
|
|
#+TITLE: la mia configurazione di emacs Vrs 0.9
|
|||
|
|
#+AUTHOR: CSiCoAlm
|
|||
|
|
#+DESCRIPTION: File in formato org con la configurazione di emacs
|
|||
|
|
#+SETUPFILE: ~/.MyCfg/emacs/templates/norang/norang_local.org
|
|||
|
|
|
|||
|
|
* Intro:
|
|||
|
|
Fino ad ora (2020/04) utilizzavo direttamente il file ~/.emacs da cui caricavo i veri e
|
|||
|
|
propi file di configurazione dal reposity GIT "~/.dotemacs" su cui avevo tutti i singoli
|
|||
|
|
file con le varie personalizzazioni. Vedendo in internet vari esempi, voglio cambiare
|
|||
|
|
per portare il tutto su un file org che mi permetta non solo di configurare emacs
|
|||
|
|
secondo i miei desideri, ma anche che mi permetta di inserire ulteriori informazioni in
|
|||
|
|
modo che posso esplicitare le varie scelte fatte per poterle ricordare in futuro senza
|
|||
|
|
perdere tempo e sopratutto per potermi ricordare cosa intendevo ottenere. In questo
|
|||
|
|
file racchiuderò tutta la configurazione e la personalizzazione di emacs, descrivendo il
|
|||
|
|
più possibile tutti i vari passaggi per renderlo il più utile ed interessante possibile.
|
|||
|
|
|
|||
|
|
Cercherò quindi di espicitare il più possibile le scelte fatte, non solo descrivendo le
|
|||
|
|
singole funzionalità, ma cercando anche di esplicitare cosa si voleva ottenere e come si
|
|||
|
|
è fatto, in modo che in futuro rileggendo posso ricordare tutto senza perdere tempo.
|
|||
|
|
|
|||
|
|
I punti che non sono chiari o che devo rivedere li evidenzio tramite l'abbreviazione
|
|||
|
|
{???} oppure tramite il tag ToReview.
|
|||
|
|
|
|||
|
|
Vedere di utilizzare anche tag o altre cose di org per chiarire meglio il tutto. Magari
|
|||
|
|
utilizzare i link per connettere la parte in cui ad esempio setto il gestore dei
|
|||
|
|
packages con le parti in cui utilizzo un package.
|
|||
|
|
|
|||
|
|
|
|||
|
|
* References:
|
|||
|
|
La configurazione partirà da quanto fatto finora (Configurazione Vrs. 3.3 del
|
|||
|
|
04/10/2018) ripartendo da zero con le considerazioni ricavate dalle varie sorgenti
|
|||
|
|
analizzate:
|
|||
|
|
- [[http://doc.norang.ca/org-mode.html][Org Mode - Organize Your Life In Plain Text!]] :: Bel esempio di come utilizzare in
|
|||
|
|
particolar modo org-mode nella produttività.
|
|||
|
|
- [[https://cestlaz.github.io/stories/emacs/][Using Emacs Series]] :: serie di video su emacs di Mike Zamansky che hanno anche il
|
|||
|
|
relativo [[https://github.com/zamansky/using-emacs][GitHub repo]]
|
|||
|
|
- [[https://www.youtube.com/watch?v=9pkuBijrMD4&list=PLNJWazvift25KnHDwYlhwrrgr60wtpQOB][Lukewh]] :: Playlist di video su emacs. Ne parla anche su [[https://lbry.tv/@lukewh:3][LBRY]]
|
|||
|
|
- [[http://pages.sachachua.com/.emacs.d/Sacha.html][http://pages.sachachua.com/.emacs.d/Sacha.html]]
|
|||
|
|
- [[https://sachachua.com/blog/][Sacha Blog]]
|
|||
|
|
- [[http://ergoemacs.org/emacs/emacs_encoding_decoding_faq.html][Emacs File Encoding FAQ]]
|
|||
|
|
- [[https://egli.dev/posts/using-org-mode-for-meeting-minutes/][Using org-mode for meeting minutes]]
|
|||
|
|
- [[https://www.youtube.com/watch?v=2-0OwGTt0dI][Emacs: introduction to MAGIT]]
|
|||
|
|
- Blog molto carino: [[https://irreal.org/blog/][irreal]]
|
|||
|
|
|
|||
|
|
|
|||
|
|
* Esigenze: :ToReview:
|
|||
|
|
- mettere comandi semplici per esportare tutto su html
|
|||
|
|
- mettere a punto esportazione su pdf
|
|||
|
|
- mettere a punto espansione dei testi abbreviati soprattutto per:
|
|||
|
|
- i blocchi codice
|
|||
|
|
- form di introduzione di dati ripetitivi tipo un resum di un lavoro.
|
|||
|
|
- mettere comandi veloci per:
|
|||
|
|
- evidenziare un capitolo nascondendo gli altri e viceversa.
|
|||
|
|
- far partire timer e fermarli
|
|||
|
|
- registrare ed eseguire delle macro
|
|||
|
|
Per le macro vi sono questi reference:
|
|||
|
|
- [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Keyboard-Macros.html#Keyboard-Macros][Manual]]
|
|||
|
|
- [[https://www.emacswiki.org/emacs/KeyboardMacros][Wiki]]
|
|||
|
|
- Using emacs series [[https://cestlaz.github.io/posts/using-emacs-15-macros/][video 15]]
|
|||
|
|
- sfruttare nuova struttura:
|
|||
|
|
- file unico (Inbox) con i lavori attuali e indici a file di riferimento per ciascun
|
|||
|
|
cliente.
|
|||
|
|
- file di reference dei vari clienti magari vedendo se può essere uno solo e sfruttare
|
|||
|
|
aggenda per estrarre i dati tramite tag o altro
|
|||
|
|
- file con le nozioni e i CFG dell'ufficio e della casa
|
|||
|
|
- file con i riferimenti money report per capire come investo e quanto ho nei vari
|
|||
|
|
investimenti
|
|||
|
|
- sistemare con le nuove caratteristiche i capture in modo che fuzionino bene per:
|
|||
|
|
- link utili da rivedere o per bibbliografia
|
|||
|
|
- telefonate
|
|||
|
|
- ToDo
|
|||
|
|
- Note
|
|||
|
|
- appuntamenti
|
|||
|
|
- Idee future
|
|||
|
|
- sistemare i tag per:
|
|||
|
|
- classificare i vari reference per il TGD
|
|||
|
|
- classificare le cose per future ricerche
|
|||
|
|
- Pensare come legarsi con keep per sincronizarsi con cellulare
|
|||
|
|
- Esempi di emacs:
|
|||
|
|
- come configurare emacs: https://github.com/abrochard/emacs-config (dal video
|
|||
|
|
https://meet.jit.si/FAR_HJ9Bzjs0tmF0DlA9qHIE)
|
|||
|
|
- Tutorial molto bello in vari video: https://cestlaz.github.io/stories/emacs/
|
|||
|
|
- Indagare sui bookmark di emacs per capire come sfruttarli (vedi [[https://www.youtube.com/watch?v=ajiEBK2swKo][Lukewh video 12]]) [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Bookmarks.html][emacs manual]]
|
|||
|
|
- Informarsi su 'Company mode' package che crea una specie di intellisense per suggerire come
|
|||
|
|
completare le parole in base a quanto editato prima (come in notepad++). Per
|
|||
|
|
riferimenti: [[https://www.youtube.com/watch?v=q-9Z2eR7cTE][Lukewh video 16]] o [[http://company-mode.github.io/][Company mode on GitHub]]
|
|||
|
|
- vedere per la correzione ortografica (Flycheck, flymake o altro)
|
|||
|
|
- [[https://www.flycheck.org/en/latest/][flycheck]] anche da [[https://www.youtube.com/watch?v=EGR9CwM1ksQ][Lukewh video 17]]
|
|||
|
|
- ORG PUBBLISH: Sul sito [[https://opensource.com/article/20/3/blog-emacs][blog-emacs]] c'è un tutorial sulla pubblicazione tramite org che è
|
|||
|
|
molto bello, inoltre mostra anche come cambiare il file autogenerato mapindex in un
|
|||
|
|
generico index.html con css e tutto per renderlo più bello.
|
|||
|
|
- Impostare l'utilizzo di org anche dal cellulare. Per farlo vedere come utilizzare
|
|||
|
|
orgmobile o [[https://f-droid.org/en/packages/com.orgzly/][orgzly]] o l'interfaccia web ecc.... Un esempio molto interessante che
|
|||
|
|
utilizza anche GIT per mettere sul clud i file è quello in dal portale opensource.com:
|
|||
|
|
[[https://opensource.com/article/19/4/calendar-git][Manage your daily schedule with Git]]
|
|||
|
|
- rivedere il gestore di calendari in modo testuale [[https://lostpackets.de/khal/index.html][khal]] perchè sempbra molto carino.
|
|||
|
|
|
|||
|
|
** TODO [[https://katherine.cox-buday.com/blog/2015/03/14/writing-specs-with-org-mode/][Writing Specs with Org-mode]] :ToReview:
|
|||
|
|
esempio di come produrre documentazione tecnica con
|
|||
|
|
org-mode, LaTeX, PlantUML per ottenere pdf. Mostra anche il relativo file di
|
|||
|
|
configurazione.
|
|||
|
|
|
|||
|
|
** TODO Created a new HTML export back-end that uses Tailwind.css classes :ToReview:
|
|||
|
|
- Link [[https://www.reddit.com/r/emacs/comments/fw6onf/created_a_new_html_export_backend_that_uses/][articolo]]
|
|||
|
|
- Link [[https://github.com/vascoferreira25/ox-tailwind][GitHub]]
|
|||
|
|
: (load "~/.MyTools/private-packages/ox-tailwind/ox-tailwind.el")
|
|||
|
|
|
|||
|
|
** TODO Socially isolating my Emacs with Docker! :ToReview:
|
|||
|
|
- Link [[https://www.youtube.com/watch?v=D2E1Eh9Hxdg&feature=youtu.be][video]]
|
|||
|
|
|
|||
|
|
** TODO riconfigurare l'esportazione in html:
|
|||
|
|
- tenere conto delle info dal sito [[https://opensource.com/article/20/3/blog-emacs][blog-emacs]] per personalizzare il file mapindex
|
|||
|
|
- rivedere l'esportazione partendo tutto in ~/Pub e in esso mantenere anche i reference
|
|||
|
|
e styli.
|
|||
|
|
|
|||
|
|
|
|||
|
|
* Set home path
|
|||
|
|
Essendo nato in linux, emacs utilizza molto la directory home e perciò ho trovato utile
|
|||
|
|
crearne un riferimento in windows. In particolare imposto la cartella C:\_Home come
|
|||
|
|
cartella home.
|
|||
|
|
|
|||
|
|
Per inserire _Home come path predefinito, non serve definirlo sulla variabile di sistema
|
|||
|
|
PATH, ma basta definire una variabile utente home:
|
|||
|
|
- in windows aprire il form delle variabili utente: 'Edit enviroment variables for
|
|||
|
|
account'
|
|||
|
|
- inserire una nuova variabile con i seguenti valori:
|
|||
|
|
- Variable name: home
|
|||
|
|
- Variable value: C:\_Home
|
|||
|
|
|
|||
|
|
Come emacs, utilizzo direttamente quello scaricabile dal progetto [[https://www.gnu.org/software/emacs/][GNU Emacs]]
|
|||
|
|
(Emacs 28.2 al 2022/12) disarchiviando lo zip, sulla cartella:
|
|||
|
|
: C:/MyTools/emacs
|
|||
|
|
e lo eseguo lanciando:
|
|||
|
|
: C:/MyTools/emacs/bin/runemacs.exe
|
|||
|
|
|
|||
|
|
|
|||
|
|
* init.el o .emacs
|
|||
|
|
Questa parte, descrive cosa inserire nel file iniziale che viene automaticamente letto
|
|||
|
|
all'avvio di emacs (~/.emacs o ~/.emacs.d/init.el). In esso occorre impostare le
|
|||
|
|
funzioni base che sono "obbligatorie", mentre tutto il resto viene delegato ad un file
|
|||
|
|
ottenuto compilando questo file org.
|
|||
|
|
|
|||
|
|
Preferisco evitare che il file org venga compilato ad ogni avvio di
|
|||
|
|
emacs perchè perdo tempo, ed inoltre cambierei sempre il file sul
|
|||
|
|
reposity e quindi non è utile per la gestione con GIT.
|
|||
|
|
|
|||
|
|
Quindi sul file di inizializzazione non metterò il codice di
|
|||
|
|
compilazione, ma caricherò direttamente il file compilato.
|
|||
|
|
|
|||
|
|
Per compilare il file a mano, basta eseguire lo stesso codice:
|
|||
|
|
: (org-babel-load-file (expand-file-name "~/.MyCfg/emacs/dotEmacs/MyInit.org"))
|
|||
|
|
copiandolo sul buffer scrach ed eseguendolo, oppure più
|
|||
|
|
semplicemente, basta dare il comando:
|
|||
|
|
: M-x org-babel-load-file "~/.MyCfg/emacs/dotEmacs/MyInit.org RET
|
|||
|
|
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
;; Emacs is unable to open this file properly: -*- coding: utf-8 -*-
|
|||
|
|
;; ;;
|
|||
|
|
;; ;;
|
|||
|
|
;; ;;
|
|||
|
|
;; ;; Imposto la gestione dei Packages
|
|||
|
|
;; ;;
|
|||
|
|
;; (require 'package)
|
|||
|
|
;; (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
|
|||
|
|
;; ;;(add-to-list 'package-archives '("melpa-stable" . "https://stable.melpa.org/packages/") t)
|
|||
|
|
;; (package-initialize)
|
|||
|
|
;; ;;
|
|||
|
|
;; ;;
|
|||
|
|
;; ;; ;; Carico come configurazione direttamente il file compilato a mano (tramite ...)
|
|||
|
|
;; ;; (load "~/.MyCfg/emacs/dotEmacs/MyInit.el")
|
|||
|
|
;; ;;
|
|||
|
|
;; ;; Compilo il file in formato org e lo carico:
|
|||
|
|
;; (org-babel-load-file (expand-file-name "~/.MyCfg/emacs/dotEmacs/MyInit.org"))
|
|||
|
|
;; ;;
|
|||
|
|
;; ;;
|
|||
|
|
;; ;;
|
|||
|
|
;; ;;
|
|||
|
|
;; ;;
|
|||
|
|
;; ;;
|
|||
|
|
;; ;; Altre configurazioni gestite in automatico da emacs
|
|||
|
|
;; ;;
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
|
|||
|
|
* Impostazioni generali
|
|||
|
|
** Imposto modalità server
|
|||
|
|
Per evitare di aprire più istanze di emacs, abilito la modalità server.
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
;; ---> ;; Abilito il server emacs
|
|||
|
|
;; ---> (server-start)
|
|||
|
|
#+END_SRC
|
|||
|
|
Dal sito [[https://qastack.it/emacs/146/set-up-emacs-on-windows-to-start-a-single-instance-and-open-files-in-the-existin][Configura Emacs su Windows per avviare una singola istanza]] ricavo che per
|
|||
|
|
avviare il server di emacs in automatico si utilizza:
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
;; Abilito il server emacs e lo avvio se non già in run
|
|||
|
|
(require 'server)
|
|||
|
|
(unless (server-running-p) (server-start))
|
|||
|
|
#+END_SRC
|
|||
|
|
Quindi avvia emacs semplicemente eseguendo l' runemacs.exe eseguibile fornito con la
|
|||
|
|
build.
|
|||
|
|
|
|||
|
|
La build di Windows di Emacs include un emacsclientw.exe eseguibile nella
|
|||
|
|
bin/directory. Usa il percorso completo di tale eseguibile come editor di tua scelta su
|
|||
|
|
tutti gli strumenti di terze parti che devi configurare per editare il file utilizzando
|
|||
|
|
il server già aperto.
|
|||
|
|
|
|||
|
|
** Imposto formato UTF-8
|
|||
|
|
Imposto come formato di default dei file: UTF8
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
;; Imposto come formato di default l'UTF8
|
|||
|
|
(set-language-environment "UTF-8")
|
|||
|
|
(set-default-coding-systems 'utf-8-unix)
|
|||
|
|
;; (set-terminal-coding-system 'utf-8)
|
|||
|
|
;; (prefer-coding-system 'utf-8)
|
|||
|
|
;; (set-charset-priority 'unicode)
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
** Carico i file lisp aggiuntivi
|
|||
|
|
:PROPERTIES:
|
|||
|
|
:CUSTOM_ID: Add-AddOn
|
|||
|
|
:END:
|
|||
|
|
Per abilitare delle funzionalità particolari, si deve caricare dei file lisp
|
|||
|
|
particolari che nella mia configurazione metterò nel path:
|
|||
|
|
: ~/.MyCfg/emacs/AddOn
|
|||
|
|
e li caricherò sempre tutti:
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
;; Carico il path dei file lisp che aggiungo:
|
|||
|
|
(add-to-list 'load-path (expand-file-name "~/.MyCfg/emacs/AddOn/elisp"))
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
** Nascondo la schermata di benvenuto
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
;; Don't show startup message
|
|||
|
|
(setq inhibit-startup-message t)
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
** Blinking del cursore
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
;; Stop al blinking del cursore
|
|||
|
|
(blink-cursor-mode -1) ;; (setq blink-cursor-delay 2 blink-cursor-interval 0.5)
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
** menu bar
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
;; menu bar (1=enable, -1=disable)
|
|||
|
|
(menu-bar-mode 1)
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
** scroll bar
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
;; scroll bar (1=enable, -1=disable)
|
|||
|
|
(toggle-scroll-bar 1)
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
** tools bar
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
;; tool bar (1=enable, -1=disable)
|
|||
|
|
(tool-bar-mode -1)
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
** Highlight line
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
;; Higlight line (1=enable, -1=disable)
|
|||
|
|
(global-hl-line-mode 1)
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
** Edit selected text
|
|||
|
|
Se si edita del testo selezionato, emacs di default non lo sostituisce, ma si limita ad
|
|||
|
|
inserire il nuovo testo prima di quello selezionato. Per fare in modo che si comporti
|
|||
|
|
come sono abituato in windows, occorre abilitare la cancellazione del testo
|
|||
|
|
selezionato.
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
;; delete selection when edited (1=enable, -1=disable)
|
|||
|
|
(delete-selection-mode 1)
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
** Gestione Autosave e Autobackup dei file
|
|||
|
|
Gestione dei file di salvataggio automatico (quelli con # all'inizio e alla fine). Il
|
|||
|
|
file di salvataggio automatico di un determinato buffer viene cancellato quando si
|
|||
|
|
salva esplicitamente il file. Per impedire ciò è necessario impostare a nil la
|
|||
|
|
variabile delete-auto-save-files.
|
|||
|
|
|
|||
|
|
Se si modifica il nome del file aperto tramite C-x C-w o set-visited-file-name, il nome
|
|||
|
|
del file di salvataggio automatico viene modificato di conseguenza.
|
|||
|
|
|
|||
|
|
Alla modifica di un file, emacs fa un backup automatico del file (stesso nome con la
|
|||
|
|
tilde finale). Per abilitare o no il backup automatico, si deve agire sull'apposita
|
|||
|
|
variabile.
|
|||
|
|
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
;; disable autosave
|
|||
|
|
(setq delete-auto-save-files t)
|
|||
|
|
;; disable autobackup
|
|||
|
|
(setq make-backup-files nil)
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
** Calendario in Italiano :ToCheck:
|
|||
|
|
Personalizzazione del calendario per visualizzarlo in Italiano ed inserire le
|
|||
|
|
festività italiane:
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
;; Calendario in italiano
|
|||
|
|
(setq calendar-christian-all-holidays-flag t)
|
|||
|
|
(setq calendar-date-style (quote iso))
|
|||
|
|
(setq calendar-day-name-array ["Domenica" "Lunedi'" "Martedi'" "Mercoledi'" "Giovedi'" "Venerdi'" "Sabato"])
|
|||
|
|
(setq calendar-latitude [45 40 north])
|
|||
|
|
(setq calendar-longitude [12 22 east])
|
|||
|
|
(setq calendar-mark-holidays-flag t)
|
|||
|
|
(setq calendar-month-name-array ["Gennaio" "Febbraio" "Marzo" "Aprile" "Maggio" "Giugno" "Luglio" "Agosto" "Settembre" "Ottobre" "Novembre" "Dicembre"])
|
|||
|
|
(setq calendar-time-display-form (quote (24-hours ":" minutes (if time-zone " (") time-zone (if time-zone ")"))))
|
|||
|
|
(setq calendar-view-holidays-initially-flag t)
|
|||
|
|
(setq calendar-week-start-day 1)
|
|||
|
|
(setq column-number-mode t)
|
|||
|
|
(setq display-time-mode t)
|
|||
|
|
(setq show-paren-mode t)
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
** Mostro il numero delle righe durante la programmazione
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
;; Show line numbers on programming mode
|
|||
|
|
(add-hook 'prog-mode-hook 'display-line-numbers-mode)
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
** Colum number
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
;; Show the column number
|
|||
|
|
(column-number-mode 1)
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
** Abbrevio Yes or No
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
;; Make all "yes or no" prompts be "y or n" instead
|
|||
|
|
(fset 'yes-or-no-p 'y-or-n-p)
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
** Matching delle parentesi
|
|||
|
|
Abilito l'evidenziazione delle coppie di parentesi e riduco al minimo il tempo di
|
|||
|
|
attesa
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
;; Show the matching parenthesis and do it immediately, we are in a hurry
|
|||
|
|
(show-paren-mode t)
|
|||
|
|
(setq show-paren-delay 0)
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
** Mostro Ora nella modeline
|
|||
|
|
Visualizzo l'ora attuale nella barra di sistema nel formato 24 ore.
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
;; Time in the modeline
|
|||
|
|
(display-time)
|
|||
|
|
(setq display-time-24hr-format t)
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
** Completamento dinamico sul minibuffer:
|
|||
|
|
Facilita l'inserimento sul minibuffer. Un esempio è quando
|
|||
|
|
introduco un tag su un file org, con questo abilitato, emcas mi
|
|||
|
|
sugerisce tutti i tag già inseriti.
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
;; Activate the dynamic completion in the mini-buffer
|
|||
|
|
(icomplete-mode 1)
|
|||
|
|
;; This should actually turn on auto-fill-mode by default in all major
|
|||
|
|
;; modes. The other way to do this is to turn on the fill for specific modes
|
|||
|
|
;; via hooks.
|
|||
|
|
(setq auto-fill-mode 1)
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
** Directory iniziale
|
|||
|
|
Imposto la directory iniziale che è quella da cui partire per ricercare o inserire file
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
;; Directory iniziale
|
|||
|
|
(setq default-directory "~/Doc/Org/")
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
** Kill buffer automatico :Disable:KeyBinding:
|
|||
|
|
Per default il comando di chiusura di un buffer (C-x k) chiede il nome del buffer da
|
|||
|
|
chiudere suggerendo inizialmente quello in cui si è. Tramite il comando
|
|||
|
|
kill-this-buffer si può chiudere direttamente il buffer in cui si è senza avere la
|
|||
|
|
richiesta di conferma. Se si vuole accelerare, si può quindi bindare il comando
|
|||
|
|
generale a quello veloce:
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
;; ---> (global-set-key (kbd "C-x k") 'kill-this-buffer)
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
** Correttore ortografico: :ToReview:Disable:
|
|||
|
|
Dal sito [[https://github.com/nobiot/Zero-to-Emacs-and-Org-roam][nobiot/Zero-to-Emacs-and-Org-roam]] ho preso spunto per installare il correttore
|
|||
|
|
ortografico Hunspell e in particolare ho scaricato la versione 1.7.0 e messa sulla
|
|||
|
|
cartella "~/.MyCfg/emacs/AddOn/hunspell-1.7.0". Qui ho inoltre messo anche i dizionari
|
|||
|
|
presi da quelli di libreoffice. Infine ho impostato emacs in questo modo:
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
;; Imposto l'italiano come lingua predefinita
|
|||
|
|
(setenv "LANG" "it_IT")
|
|||
|
|
;; Indico dove trovare Hunspell
|
|||
|
|
(setq ispell-program-name "~/.MyCfg/emacs/AddOn/hunspell-1.7.0/Bin/hunspell.exe")
|
|||
|
|
;; Indico che dizionario utilizzare.
|
|||
|
|
;; Se voglio cambiarlo devo ridare il comando con il dizionario che voglio utilizzare.
|
|||
|
|
(setq ispell-local-dictionary "it_IT")
|
|||
|
|
;; Imposto il path dei dizionari
|
|||
|
|
(setq ispell-hunspell-dict-paths-alist
|
|||
|
|
'(("it_IT" "~/.MyCfg/emacs/AddOn/hunspell-1.7.0/Dictionaries/it_IT.aff")
|
|||
|
|
("en_US" "~/.MyCfg/emacs/AddOn/hunspell-1.7.0/Dictionaries/en_US.aff")
|
|||
|
|
("en_GB" "~/.MyCfg/emacs/AddOn/hunspell-1.7.0/Dictionaries/en_GB.aff")
|
|||
|
|
("default" "~/.MyCfg/emacs/AddOn/hunspell-1.7.0/Dictionaries/it_IT.aff")
|
|||
|
|
)
|
|||
|
|
)
|
|||
|
|
#+END_SRC
|
|||
|
|
Ora posso avviare il correttore sul file aperto tramite il comando:
|
|||
|
|
: M-x ispell
|
|||
|
|
|
|||
|
|
Come reference ho utilizzato anche i seguenti siti:
|
|||
|
|
- [[http://blog.binchen.org/posts/what-s-the-best-spell-check-set-up-in-emacs/][What's the best spell check setup in emacs]]
|
|||
|
|
- [[https://www.reddit.com/r/emacs/comments/dgj0ae/tutorial_spellchecking_with_hunspell_170_for/][Tutorial: spellchecking with hunspell (1.7.0) for emacs (26.2) on Windows (10)]]
|
|||
|
|
|
|||
|
|
|
|||
|
|
* UI
|
|||
|
|
** emacs Custom Themes:
|
|||
|
|
Per ora disativo i temi e quindi scelgo uno fra quelli di default di emacs.
|
|||
|
|
|
|||
|
|
Come reference per i theme ci sono i seguenti siti:
|
|||
|
|
- [[https://pawelbx.github.io/emacs-theme-gallery/][emacs theme gallery]]
|
|||
|
|
- [[https://emacsthemes.com/][emacs Themes]]
|
|||
|
|
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
;; dichromacy -- Face colors suitable for red/green color-blind users.
|
|||
|
|
(load-theme 'dichromacy t)
|
|||
|
|
;; ---> ;; tsdh-dark -- A dark theme used and created by Tassilo Horn.
|
|||
|
|
;; ---> (load-theme 'tsdh-dark t)
|
|||
|
|
;; ---> ;; tsdh-light -- A light Emacs theme.
|
|||
|
|
;; ---> (load-theme 'tsdh-light t)
|
|||
|
|
;; ---> ;; whiteboard -- Face colors similar to markers on a whiteboard.
|
|||
|
|
;; ---> (load-theme 'whiteboard t)
|
|||
|
|
;; ---> ;; wombat -- Med
|
|||
|
|
;; ---> (load-theme 'wombat t)
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
** Dimensioni font
|
|||
|
|
Per ridimensionare il testo, c'è il comando:
|
|||
|
|
: C-x C-0
|
|||
|
|
Dopo il quale si hanno i seguenti comandi:
|
|||
|
|
: + incrementa il size
|
|||
|
|
: - decrementa il size
|
|||
|
|
: 0 ritorna al default
|
|||
|
|
I comandi si possono ripetere a piacere fino a quando si è raggiunta
|
|||
|
|
la dimensione desiderata e poi chiude con
|
|||
|
|
: ESC
|
|||
|
|
|
|||
|
|
Imposto la dimensione di default del testo per facilitare la lettura:
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
;; Imposto la dimensione del testo:
|
|||
|
|
(set-face-attribute 'default nil :height 110)
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
** Dimensione finestra
|
|||
|
|
Ridimensiono la finestra di emacs in base a quanto visto nella pagina della
|
|||
|
|
[[https://www.emacswiki.org/emacs/FrameSize][wiki]].
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
;; Imposto dimensioni finestra
|
|||
|
|
;; (when window-system (set-frame-size (selected-frame) 92 46))
|
|||
|
|
(add-to-list 'default-frame-alist '(width . 100))
|
|||
|
|
(add-to-list 'default-frame-alist '(height . 48))
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
** Wordwrap
|
|||
|
|
Inoltre imposto il wordwrap a 90 caratteri in modo da sfruttare opportunamente le
|
|||
|
|
righe.
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
;; Imposto wordwrap
|
|||
|
|
(setq-default fill-column 90)
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
** Colorization :ToReview:Disable:
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
;; ---> ;; use colorization for all modes
|
|||
|
|
;; ---> (global-font-lock-mode t)
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
** Reload file nel buffer :Disable:ToReview:KeyBinding:
|
|||
|
|
Per ricaricare il file sul buffer ed anullare tutte le modifiche fatte, si usa il
|
|||
|
|
comando
|
|||
|
|
: revert-buffer
|
|||
|
|
Per comodità è utile bindarlo ad un tasto:
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
;; ---> (global-set-key (kbd "<f5>") 'revert-buffer)
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
** Buzzer visibile
|
|||
|
|
Dal sito [[http://pragmaticemacs.com/emacs/using-a-visible-bell-in-emacs/][Pragmatic emacs]] ho trovato come visualizzare un lampeggio in emacs al posto
|
|||
|
|
del beep (per errori o allarmi) di emacs.
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
;; Buzzer visibile
|
|||
|
|
(setq visible-bell t)
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
|
|||
|
|
* Modes :Minor_Mode:
|
|||
|
|
** IDO :ToReview:Disable:
|
|||
|
|
Mode per avere i suggerimenti e l'autocompletazione nei menu e dei comandi.
|
|||
|
|
|
|||
|
|
Diverso materiale ed informazioni si possono trovare in:
|
|||
|
|
- [[https://www.emacswiki.org/emacs/InteractivelyDoThings][Ido from emacs wiki]]
|
|||
|
|
- [[https://www.gnu.org/software/emacs/manual/html_mono/ido.html][Ido from gnu.org]]
|
|||
|
|
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
;; ---> ;; Set ido (https://www.gnu.org/software/emacs/manual/html_mono/ido.html)
|
|||
|
|
;; ---> (setq ido-everywhere t)
|
|||
|
|
;; ---> (setq ido-enable-flex-matching t)
|
|||
|
|
;; ---> (ido-mode 1)
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
** Visual Basic Mode
|
|||
|
|
Dal sito [[http://www.emacswiki.org/emacs/visual-basic-mode.el][Wiki]], si ricava come installare il "visual-basic-mode" che permette di editare
|
|||
|
|
il visual basic in modo agevole e con l'evidenziazione sintattica.
|
|||
|
|
|
|||
|
|
Per farlo occorre caricare il file [[file:~/.MyCfg/emacs/AddOn/visu][visual-basic-mode.el]] e per farlo lo metto sul path
|
|||
|
|
che carico di default all'avvio (vedi relativo [[#Add-AddOn][paragrafo]]); per velocizzare si può anche
|
|||
|
|
compilare il file ma per ora non lo faccio.
|
|||
|
|
|
|||
|
|
Configuro quindi il load del modo e gli associo i relativi file (in automatico i file
|
|||
|
|
li associo a "visual basic .net" e non a "visual basic 6").
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
;; Carico il modo Visual Basic
|
|||
|
|
;(autoload 'visual-basic-mode "visual-basic-mode" "Visual Basic mode." t)
|
|||
|
|
(require 'visual-basic-mode)
|
|||
|
|
;;
|
|||
|
|
;; Associo il modo VB automaticamente ai file *.frm, *.bas, *.cls, *.vb
|
|||
|
|
;(setq auto-mode-alist (append '(("\\.\\(frm\\|bas\\|cls\\|vb\\)$" . visual-basic-mode)) auto-mode-alist))
|
|||
|
|
(require 'vbnet-mode)
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
** Visual Basic .NET mode
|
|||
|
|
Dal sito [[http://www.emacswiki.org/emacs/VbDotNetMode][Wiki]], si ricava come installare il "vbnet-mode" che permette di editare il
|
|||
|
|
visual basic in modo agevole e con l'evidenziazione sintattica.
|
|||
|
|
|
|||
|
|
Per farlo occorre caricare il file [[file:~/.MyCfg/emacs/AddOn/vbnet-mode.el][vbnet-mode.cs]] e per farlo lo metto sul path che
|
|||
|
|
carico di default all'avvio (vedi relativo [[#Add-AddOn][paragrafo]]); per velocizzare si può anche
|
|||
|
|
compilare il file ma per ora non lo faccio.
|
|||
|
|
|
|||
|
|
Configuro quindi il load del modo e gli associo i relativi file.
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
;; Carico il modo Visual Basic .Net
|
|||
|
|
(autoload 'vbnet-mode "vbnet-mode" "Mode for editing VB.NET code." t)
|
|||
|
|
;;
|
|||
|
|
;; Associo il modo VBNet automaticamente ai file *.frm, *.bas, *.cls, *.vb
|
|||
|
|
;(setq auto-mode-alist (append '(("\\.\\(frm\\|bas\\|cls\\|vb\\)$" . vbnet-mode)) auto-mode-alist))
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
** C#: csharp-mode
|
|||
|
|
Da Stack Overflow: [[https://stackoverflow.com/questions/3954607/c-sharp-emacs-mode-questions-indentation-and-build][C# Emacs mode questions - indentation and build]] e successivamente dal
|
|||
|
|
sito [[https://github.com/emacs-csharp/csharp-mode][GitHub csharp-mode]] ricavato i file [[file:~/.MyCfg/emacs/AddOn/elisp/csharp-mode.el][csharp-mode.el]] e [[file:~/.MyCfg/emacs/AddOn/elisp/csharp-compilation.el][csharp-compilation.el]] che
|
|||
|
|
permettono di definire il csharp-mode utilizzabile direttamente nei blocchi org per avere
|
|||
|
|
il codice con la colorazione sintattica.
|
|||
|
|
|
|||
|
|
Da quanto visto, non serve linkare il linguaggio con babel, ma basta inserire i file negli
|
|||
|
|
AddOn e caricare i rispettivi modi:
|
|||
|
|
|
|||
|
|
#+begin_src emacs-lisp
|
|||
|
|
;; ---> ;; ---> ;; Carico il path dei file lisp che definiscono il modo C#:
|
|||
|
|
;; ---> ;; ---> (add-to-list 'load-path (expand-file-name "~/.MyCfg/emacs/AddOn/elisp"))
|
|||
|
|
;; ---> ;; Attivo il modo per C#
|
|||
|
|
;; ---> (require 'csharp-mode)
|
|||
|
|
;; ---> ;; Vi assicio, di default, i file *.cs
|
|||
|
|
;; ---> (setq auto-mode-alist
|
|||
|
|
;; ---> (append '(("\\.cs$" . csharp-mode)) auto-mode-alist))
|
|||
|
|
;; ---> ;; Volendo posso definire la funzione di hook per impostarci una
|
|||
|
|
;; ---> ;; tabulazione predefinita valida in tutti i modi derivanti dal C:
|
|||
|
|
;; ---> (defun my-c-mode-common-hook ()
|
|||
|
|
;; ---> (setq c-basic-offset 4)
|
|||
|
|
;; ---> (c-set-offset 'substatement-open 0)
|
|||
|
|
;; ---> )
|
|||
|
|
;; ---> ;; Infine assegnare la funzione appena definita, all'hook:
|
|||
|
|
;; ---> (add-hook 'c-mode-common-hook 'my-c-mode-common-hook)
|
|||
|
|
#+end_src
|
|||
|
|
|
|||
|
|
*** Obsoleto:
|
|||
|
|
Dal sito [[https://code.google.com/p/csharpmode/][code.google]] e successivamente dal sito [[https://github.com/josteink/csharp-mode][GitHub]] ricavo il file [[file:~/.MyCfg/emacs/AddOn/csharp-mode.el][csharp-mode.el]]
|
|||
|
|
che permette di avere il csharp-mode per visualizzare il codice C# correttamente
|
|||
|
|
colorato.
|
|||
|
|
|
|||
|
|
Il file lo ho copiato nella directory che carico allo startup (vedi relativo
|
|||
|
|
[[#Add-AddOn][paragrafo]]); per velocizzare si può anche compilare il file ma per ora non lo faccio.
|
|||
|
|
|
|||
|
|
Configuro quindi il load del modo e gli associo i relativi file:
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
;; ---> ;; Carico il modo C#
|
|||
|
|
;; ---> (autoload 'csharp-mode "csharp-mode" "Major mode for editing C# code." t)
|
|||
|
|
;; ---> ;;
|
|||
|
|
;; ---> ;; Associo il modo C# automaticamente ai file *.cs
|
|||
|
|
;; ---> (setq auto-mode-alist (append '(("\\.cs$" . csharp-mode)) auto-mode-alist))
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
** Power Shell mode :Disable:Obsolete:
|
|||
|
|
Ricercando info per il vbnet-mode ho trovato il sito [[https://www.emacswiki.org/emacs/PowerShell][Wiki]] da cui si ricava il file
|
|||
|
|
[[file:~/.MyTools/_MyUp/Lisp/PowerShell-Mode.el][PowerShell-Mode.el]] per gestire il vpowershell-mode
|
|||
|
|
|
|||
|
|
Il file lo ho messo sulla cartella da cui carico, all'avvio, i file lisp esterni,
|
|||
|
|
|
|||
|
|
Configuro quindi il load del modo e gli associo i relativi file:
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
;; ---> ;; Carico il modo PowerShell
|
|||
|
|
;; ---> (autoload 'powershell-mode "vpowershell-mode" "PowerShell Mode" t)
|
|||
|
|
;; ---> ;; Associo il modo automaticamente ai file *.?1?, *.?2?
|
|||
|
|
;; ---> ;(setq auto-mode-alist (append '(("\\.\\(?1?\\|?2?\\)$" . vpowershell-mode)) auto-mode-alist))
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
[2022-12-08 Thu] Nella revisione, si è visto che ora la modalità è compresa nel package
|
|||
|
|
di emacs e quindi si può installare direttamente con i comandi:
|
|||
|
|
: M-x package-install RET powershell RET
|
|||
|
|
|
|||
|
|
|
|||
|
|
* Packages :Package:
|
|||
|
|
|
|||
|
|
Emacs ha una gestione dei packages che mi permette di installare ed utilizzare
|
|||
|
|
differenti pacchetti o funzionalità in modo semplice.
|
|||
|
|
|
|||
|
|
Qui inserisco tutte le configurazioni sui package inserendo le
|
|||
|
|
descrizioni varie ed eventuali esempi di utilizzo, in modo che anche
|
|||
|
|
fra qualche tempo se vado a vedere, ritrovo tutte le informazioni
|
|||
|
|
base ed importanti.
|
|||
|
|
|
|||
|
|
Vi sono diversi reposity, ma i principali, non chè ufficiali, sono:
|
|||
|
|
- [[https://melpa.org/][MELPA]] o [[https://github.com/melpa/melpa][MELPA GitHub]]
|
|||
|
|
- [[https://github.com/melpa/melpa][MELPA Stable]]
|
|||
|
|
- gnu
|
|||
|
|
- org
|
|||
|
|
- ????
|
|||
|
|
|
|||
|
|
Di seguito inserisco la configurazione del gestore dei package ed a seguire tutte le
|
|||
|
|
configurazioni sui package che installo inserendo le descrizioni varie ed eventuali
|
|||
|
|
esempi di utilizzo, in modo che anche fra qualche tempo se vado a vedere, ritrovo tutte
|
|||
|
|
le informazioni base ed importanti.
|
|||
|
|
|
|||
|
|
Spunti inizialmente presi da https://orgmode.org/elpa.html e
|
|||
|
|
http://pages.sachachua.com/.emacs.d/Sacha.html. Nel 2020/04 rivisto il tutto
|
|||
|
|
in base alla serie [[https://cestlaz.github.io/stories/emacs/][Using emacs]]
|
|||
|
|
|
|||
|
|
** Note sull'utilizzo e sui comandi:
|
|||
|
|
Per vedere la lista dei package:
|
|||
|
|
: M-x list-packages
|
|||
|
|
Per aggiornare la lista dei package si usa:
|
|||
|
|
: M-x package-refresh-contents
|
|||
|
|
Per installare l'ultimo package di org:
|
|||
|
|
: M-x package-install RET org RET
|
|||
|
|
Per avere informazioni su un package si può usare il comando
|
|||
|
|
: M-x describe-package
|
|||
|
|
che visualizza una finestra con le informazioni del pacchetto.
|
|||
|
|
|
|||
|
|
Per aggiornare l'installazione di un package, occorre che non sia in uso, poi si
|
|||
|
|
richiama l'elenco dei packages con
|
|||
|
|
: M-x list-packages
|
|||
|
|
Ora si seleziona i pacchetti da aggiornare con
|
|||
|
|
: U
|
|||
|
|
(mark Upgradable packages) e si avvia l'aggiornamento con
|
|||
|
|
: x
|
|||
|
|
(eXecute the installs and deletions). Alla fine dell'aggiornamento chiede eventualmente
|
|||
|
|
se si vuole cancellare i pacchetti obsoleti e basta rispondere con Yes.
|
|||
|
|
|
|||
|
|
If you run into a problem installing or upgrading, you may need to go into your
|
|||
|
|
~/.emacs.d/elpa/ directory and delete packages that are installed multiple times. This
|
|||
|
|
can happen when the install times out.
|
|||
|
|
|
|||
|
|
** Setup generale:
|
|||
|
|
Per utilizzare i reposity, occorre inizializzarli. Il relativo codice è già stato
|
|||
|
|
inserito nel file init.el perchè deve essere una delle prime cose da fare.
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
;; Codice già resente in init.el:
|
|||
|
|
;; (require 'package)
|
|||
|
|
;; (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
|
|||
|
|
;; ;;(add-to-list 'package-archives '("melpa-stable" . "https://stable.melpa.org/packages/") t)
|
|||
|
|
;; (package-initialize)
|
|||
|
|
;;
|
|||
|
|
;; Codice per rinfrescare i package solo quando serve prima di utilizzarli:
|
|||
|
|
(unless package-archive-contents (package-refresh-contents)) ;; Refresh the packages descriptions
|
|||
|
|
(setq package-load-list '(all)) ;; List of packages to load
|
|||
|
|
;;
|
|||
|
|
;; Carico Org se non già caricato:
|
|||
|
|
(unless (package-installed-p 'org) (package-install 'org)) ;; Make sure the Org package is installed, install it if not
|
|||
|
|
;;
|
|||
|
|
;; Codice per rinfrescare i package solo quando serve prima di utilizzarli:
|
|||
|
|
(unless (package-installed-p 'use-package)
|
|||
|
|
(package-refresh-contents)
|
|||
|
|
(package-install 'use-package))
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
** Package: Try
|
|||
|
|
Permette di provare i vari pacchetti senza installarli. Quindi riavviando emacs si
|
|||
|
|
ritorna alla situazione iniziale.
|
|||
|
|
|
|||
|
|
Quando installato, si può provare un pacchetto direttamente installandolo
|
|||
|
|
temporaneamente con try. Per esempio e voglio installare il pacchetto del gioco 2048:
|
|||
|
|
: M-x try RET 2048-game
|
|||
|
|
e quindi lanciare il gioco temporaneamente installato:
|
|||
|
|
: M-X 2048-game RET
|
|||
|
|
|
|||
|
|
Si può utilizzare anche per provare un file dal web. Per esempio per caricare il file,
|
|||
|
|
file.el, in modo temporaneo:
|
|||
|
|
: M-x try RET https://url.com/to/some/file.el
|
|||
|
|
|
|||
|
|
Dai siti di rifererimento [[https://melpa.org/#/tryhttps://melpa.org/#/try][Melpa]], [[https://github.com/larstvei/Try][GitHub]]
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
(use-package try
|
|||
|
|
:ensure t)
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
** Package: Which-key
|
|||
|
|
Visualizza sul minibuffer tutti i comandi possibili per completare quello iniziato.
|
|||
|
|
Quindi permette di iniziare un comando, per esempio C-x, attendere qualche secondo, e
|
|||
|
|
mostra sul minibuffer tutti i possibili suggerimenti
|
|||
|
|
|
|||
|
|
E' simile ad IDO, ma è riferito esclusivamente ai comandi.
|
|||
|
|
|
|||
|
|
Sui siti di riferimento [[https://melpa.org/#/which-key][Melpa]], [[https://github.com/justbur/emacs-which-key][GitHub]], ci sono molte opzioni (visualizzare i
|
|||
|
|
suggerimenti sotto, a destra, tempo di attesa prima di visualizzarli, ecc..) ma per ora
|
|||
|
|
utilizzo la configurazione base e poi sperimentando vedo se variarla.
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
(use-package which-key
|
|||
|
|
:ensure t
|
|||
|
|
:config
|
|||
|
|
(which-key-mode))
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
** Package: Org-bullet :Disable:Obsolete:
|
|||
|
|
Questo pacchetto permette di sostituire gli asterichi nelle header con dei bullet più
|
|||
|
|
carini. Dai siti di riferimento [[https://melpa.org/#/org-bullets][Melpa]], [[https://github.com/sabof/org-bullets][GitHub]] si indica che non sarà più aggiornato e
|
|||
|
|
che viene sostituito da org-superstart, quindi anchio lo disattivo ed utilizzo
|
|||
|
|
superstar. Il codice di configurazione era:
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
;;(use-package org-bullets
|
|||
|
|
;; :ensure t
|
|||
|
|
;; :config
|
|||
|
|
;; (add-hook 'org-mode-hook (lambda () (org-bullets-mode 1))))
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
** Package: Org-superstar
|
|||
|
|
Questo pacchetto permette di sostituire gli asterichi nelle header con dei bullet più
|
|||
|
|
carini. Dai siti di riferimento [[https://melpa.org/#/org-superstar][Melpa]] [[https://github.com/integral-dw/org-superstar-mode][GitHub]] viene indicato come il successore di
|
|||
|
|
org-bullet.
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
(use-package org-superstar
|
|||
|
|
:ensure t
|
|||
|
|
:config
|
|||
|
|
(add-hook 'org-mode-hook (lambda () (org-superstar-mode 1))))
|
|||
|
|
;; Per velocizzare la gestione del font
|
|||
|
|
(setq inhibit-compacting-font-caches t)
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
** Package: Swiper / Ivy / Counsel :ToReview:Disable:
|
|||
|
|
Questo serve per estendere la funzione di search ed inoltre estende IDO, ma è da usare
|
|||
|
|
in modo esclusivo (occorre disattivare IDO). Per ora non lo uso, ma merita di darci
|
|||
|
|
un'occhiata. Si combina bene con HEM
|
|||
|
|
|
|||
|
|
Permette di editare in contemporanea su più punti, autocompleta i comandi. ecc...
|
|||
|
|
|
|||
|
|
Visto in Using Emacs Series [[https://www.youtube.com/watch?v=0mwwN0S1dnQ][Video 6]] e i siti di riferimento sono: [[https://melpa.org/#/swiper][Melpa]], [[https://github.com/abo-abo/swiper][GitHub]]
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
;; ---> ;; it looks like counsel is a requirement for swiper
|
|||
|
|
;; ---> (use-package counsel
|
|||
|
|
;; ---> :ensure t
|
|||
|
|
;; ---> )
|
|||
|
|
;; ---> ;;
|
|||
|
|
;; ---> (use-package swiper
|
|||
|
|
;; ---> :ensure try
|
|||
|
|
;; ---> :config
|
|||
|
|
;; ---> (progn
|
|||
|
|
;; ---> (ivy-mode 1)
|
|||
|
|
;; ---> (setq ivy-use-virtual-buffers t)
|
|||
|
|
;; ---> (global-set-key "\C-s" 'swiper)
|
|||
|
|
;; ---> (global-set-key (kbd "C-c C-r") 'ivy-resume)
|
|||
|
|
;; ---> (global-set-key (kbd "<f6>") 'ivy-resume)
|
|||
|
|
;; ---> (global-set-key (kbd "M-x") 'counsel-M-x)
|
|||
|
|
;; ---> (global-set-key (kbd "C-x C-f") 'counsel-find-file)
|
|||
|
|
;; ---> (global-set-key (kbd "<f1> f") 'counsel-describe-function)
|
|||
|
|
;; ---> (global-set-key (kbd "<f1> v") 'counsel-describe-variable)
|
|||
|
|
;; ---> (global-set-key (kbd "<f1> l") 'counsel-load-library)
|
|||
|
|
;; ---> (global-set-key (kbd "<f2> i") 'counsel-info-lookup-symbol)
|
|||
|
|
;; ---> (global-set-key (kbd "<f2> u") 'counsel-unicode-char)
|
|||
|
|
;; ---> (global-set-key (kbd "C-c g") 'counsel-git)
|
|||
|
|
;; ---> (global-set-key (kbd "C-c j") 'counsel-git-grep)
|
|||
|
|
;; ---> (global-set-key (kbd "C-c k") 'counsel-ag)
|
|||
|
|
;; ---> (global-set-key (kbd "C-x l") 'counsel-locate)
|
|||
|
|
;; ---> (global-set-key (kbd "C-S-o") 'counsel-rhythmbox)
|
|||
|
|
;; ---> (define-key read-expression-map (kbd "C-r") 'counsel-expression-history)
|
|||
|
|
;; ---> ))
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
** Package: Auto-complete
|
|||
|
|
Simile alla funzione di autocompletamento nativa di emacs (M-/) questa visualizza i
|
|||
|
|
suggerimenti tipo intellisense e quindi è carina da vedere. per ora provo ad usarla e
|
|||
|
|
poi vedo se tenerla o no.
|
|||
|
|
|
|||
|
|
I siti di riferimento sono: [[https://melpa.org/#/auto-complete][Melpa]], [[https://github.com/auto-complete/auto-complete][GitHub]]
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
(use-package auto-complete
|
|||
|
|
:ensure t
|
|||
|
|
:init
|
|||
|
|
(progn
|
|||
|
|
(ac-config-default)
|
|||
|
|
(global-auto-complete-mode t)
|
|||
|
|
))
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
** Package: Htmlize
|
|||
|
|
Per convertire il testo ed i blocchi in testo html con associati i vari colori.
|
|||
|
|
|
|||
|
|
Siti di riferimento: [[https://melpa.org/#/htmlize][Melpa]], [[https://github.com/hniksic/emacs-htmlize][GitHub]] da cui si vede che è possibile personalizzare lo
|
|||
|
|
stile dell'esportazione in tre modi in base ai valori assegnato alla variabile:
|
|||
|
|
: htmlize-output-type
|
|||
|
|
: css
|
|||
|
|
: inline-css
|
|||
|
|
: font
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
(use-package htmlize
|
|||
|
|
:ensure t)
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
** Package: Theme Zenburn :Disable:
|
|||
|
|
Permette di gestire comodamente il thema ZenBurn
|
|||
|
|
|
|||
|
|
I siti di riferimento sono: [[https://melpa.org/#/zenburn-theme][Melpa]], [[https://github.com/bbatsov/zenburn-emacs][GitHub]] da cui ricavo anche che il thema gestisce
|
|||
|
|
dimensioni diverse per le headline.
|
|||
|
|
|
|||
|
|
Si possono ridefinire i colori andando a ridefinire la variabile
|
|||
|
|
zenburn-override-colors-alist come in questo esempio.
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
;; ---> ;; ;; Sample redefine colors:
|
|||
|
|
;; ---> ;; (setq zenburn-override-colors-alist
|
|||
|
|
;; ---> ;; '(("zenburn-bg+05" . "#282828")
|
|||
|
|
;; ---> ;; ("zenburn-bg+1" . "#2F2F2F")
|
|||
|
|
;; ---> ;; ("zenburn-bg+2" . "#3F3F3F")
|
|||
|
|
;; ---> ;; ("zenburn-bg+3" . "#4F4F4F")))
|
|||
|
|
;; ---> ;; (load-theme 'zenburn t)
|
|||
|
|
;; ---> ;;
|
|||
|
|
;; ---> ;; use variable-pitch fonts for some headings and titles
|
|||
|
|
;; ---> (setq zenburn-use-variable-pitch t)
|
|||
|
|
;; ---> ;;
|
|||
|
|
;; ---> ;; scale headings in org-mode
|
|||
|
|
;; ---> (setq zenburn-scale-org-headlines t)
|
|||
|
|
;; ---> ;;
|
|||
|
|
;; ---> ;; scale headings in outline-mode
|
|||
|
|
;; ---> (setq zenburn-scale-outline-headlines t)
|
|||
|
|
;; ---> ;;
|
|||
|
|
;; ---> ;; Load theme
|
|||
|
|
;; ---> (use-package zenburn-theme
|
|||
|
|
;; ---> :ensure t
|
|||
|
|
;; ---> :config
|
|||
|
|
;; ---> (load-theme 'zenburn t))
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
** Package: Theme Spacemacs :Disable:
|
|||
|
|
Permette di gestire comodamente il thema Spacemacs. Spacemacs è
|
|||
|
|
una configurazione particolare di emacs completa di configuratore e
|
|||
|
|
altro. Per informazioni il sito di riferimento è: [[https://www.spacemacs.org/][Spacemacs]] o [[https://www.youtube.com/watch?v=hCNOB5jjtmc][Video]]
|
|||
|
|
|
|||
|
|
I siti di riferimento sono: [[https://melpa.org/#/spacemacs-theme][Melpa]], [[https://github.com/nashamri/spacemacs-theme][GitHub]] da cui ricavo anche che il thema gestisce
|
|||
|
|
dimensioni diverse per le headline e anche il grassetto.
|
|||
|
|
|
|||
|
|
Si possono ridefinire i colori andando a ridefinire la variabile
|
|||
|
|
zenburn-override-colors-alist come in questo esempio.
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
;; ---> ;;
|
|||
|
|
;; ---> ;; Load theme
|
|||
|
|
;; ---> (use-package spacemacs-theme
|
|||
|
|
;; ---> :ensure t
|
|||
|
|
;; ---> :config (load-theme 'spacemacs-light t))
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
** Package: ox-Reveal :ToReview:Disable:
|
|||
|
|
Permette di generare da org delle presentazioni web tramite lo script [[https://github.com/hakimel/reveal.js/][reveal.js]]
|
|||
|
|
|
|||
|
|
Siti di riferimento: [[https://melpa.org/#/ox-reveal][Melpa]], [[https://github.com/yjwen/org-reveal][GitHub]] si capisce che:
|
|||
|
|
- tramite la variabile org-reveal-root si indica quale [[https://github.com/hakimel/reveal.js/][reveal.js]] utilizzare (locale o
|
|||
|
|
web)
|
|||
|
|
- org-reveal-mathjax permette di abilitare equazioni LaTex
|
|||
|
|
|
|||
|
|
Per il tutto ho preso spunto da Using emacs series [[https://www.youtube.com/watch?v=psDpCpcIVYs][Video 11]]
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
;; ---> (use-package ox-reveal
|
|||
|
|
;; ---> :ensure ox-reveal)
|
|||
|
|
;; ---> (setq org-reveal-root "http://cdn.jsdelivr.net/reveal.js/3.0.0/")
|
|||
|
|
;; ---> (setq org-reveal-mathjax t)
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
Il tutto sembra non funzionare, se confronto la pagina html generata da me con quella
|
|||
|
|
dell'esempio dal [[https://www.youtube.com/watch?v=psDpCpcIVYs][sito]] si vede che io inserisco la linea:
|
|||
|
|
: <script src="http://cdn.jsdelivr.net/reveal.js/3.0.0/js/reveal.js"></script>
|
|||
|
|
mentre nell'esempio si ha:
|
|||
|
|
: <script src="http://cdn.jsdelivr.net/reveal.js/3.0.0/lib/js/head.min.js"></script>
|
|||
|
|
: <script src="http://cdn.jsdelivr.net/reveal.js/3.0.0/js/reveal.js"></script>
|
|||
|
|
Quindi sulla mia esportazione manca il codice:
|
|||
|
|
: <script src="http://cdn.jsdelivr.net/reveal.js/3.0.0/lib/js/head.min.js"></script>
|
|||
|
|
|
|||
|
|
Alcune informazioni utili su come utilizzarlo anche in locale sono presenti
|
|||
|
|
sull'articolo sul portale opensource:
|
|||
|
|
[[https://opensource.com/article/18/2/how-create-slides-emacs-org-mode-and-revealjs][How to create slides with Emacs Org mode and Reveal.js]]
|
|||
|
|
|
|||
|
|
** Package: Yasnippet
|
|||
|
|
Permette di inserire testi tramite abbreviazioni e poi tab, estende quindi le
|
|||
|
|
funzionalità base di emacs. I vari sniptes si possono personalizzare a piacere.
|
|||
|
|
|
|||
|
|
Siti di riferimento: [[https://melpa.org/#/yasnippet][Melpa]], [[https://github.com/joaotavora/yasnippet][GitHub]], [[http://joaotavora.github.io/yasnippet/][Manual]]
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
(use-package yasnippet
|
|||
|
|
:ensure t
|
|||
|
|
:init
|
|||
|
|
(yas-global-mode 1))
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
** Package: Magit :ToReview:Disable:
|
|||
|
|
I siti di riferimento sono: [[https://magit.vc/][magit.vc]], [[https://github.com/magit/magit][GitHub]], [[https://www.emacswiki.org/emacs/Magit][emacswiki]]
|
|||
|
|
|
|||
|
|
** Package: Org-mode :MISSING:
|
|||
|
|
*** Installazione e attivazione:
|
|||
|
|
Dal sito di riferimento di org: [[https://orgmode.org/][orgmode.org]] ricavo l'installazione del pacchetto (per
|
|||
|
|
averlo aggiornato):
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
;; Installazione
|
|||
|
|
(use-package org
|
|||
|
|
:ensure t)
|
|||
|
|
;;
|
|||
|
|
;; Imposto OrgMode come default per i file '*.org' e '*.org_archive'
|
|||
|
|
(add-to-list 'auto-mode-alist '("\\.\\(org\\|org_archive\\)$" . org-mode))
|
|||
|
|
|
|||
|
|
;; Attivazione pacchetto
|
|||
|
|
(require 'org)
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
*** Visibilità iniziale:
|
|||
|
|
Imposto la visibilità iniziale a tutto ragruppato per velocizzare la vista dall'alto.
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
;; Visibilità iniziale: tutto ragruppato
|
|||
|
|
(setq org-startup-folded t)
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
*** Use utf-8 as the default coding system for all of my org files.
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
;; default coding system UTF-8
|
|||
|
|
(setq org-export-coding-system 'utf-8)
|
|||
|
|
(setq default-process-coding-system '(utf-8-unix . utf-8-unix))
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
*** Key Binding :ToReview:MISSING:
|
|||
|
|
Impostiamo alcuni dei key binding di default:
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
;;(global-set-key (kbd "C-c l") 'org-store-link)
|
|||
|
|
(global-set-key (kbd "C-c a") 'org-agenda)
|
|||
|
|
(global-set-key (kbd "C-c c") 'org-capture)
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
Analisi dei tasti funzioni disponibili:
|
|||
|
|
| Key | Binding originale |
|
|||
|
|
|---------+----------------------------------------------------|
|
|||
|
|
| <F5> | Non Definito |
|
|||
|
|
| S-<F5> | Non Definito |
|
|||
|
|
| C-<F5> | Non Definito |
|
|||
|
|
| M-<F5> | Non Definito |
|
|||
|
|
|---------+----------------------------------------------------|
|
|||
|
|
| <F6> | Non Definito |
|
|||
|
|
| S-<F6> | Non Definito |
|
|||
|
|
| C-<F6> | Non Definito |
|
|||
|
|
| M-<F6> | Non Definito |
|
|||
|
|
|---------+----------------------------------------------------|
|
|||
|
|
| <F7> | Non Definito |
|
|||
|
|
| S-<F7> | Non Definito |
|
|||
|
|
| C-<F7> | Non Definito |
|
|||
|
|
| M-<F7> | Non Definito |
|
|||
|
|
|---------+----------------------------------------------------|
|
|||
|
|
| <F8> | Non Definito |
|
|||
|
|
| S-<F8> | Non Definito |
|
|||
|
|
| C-<F8> | Non Definito |
|
|||
|
|
| M-<F8> | Non Definito |
|
|||
|
|
|---------+----------------------------------------------------|
|
|||
|
|
| <F9> | Non Definito |
|
|||
|
|
| S-<F9> | Non Definito |
|
|||
|
|
| C-<F9> | Non Definito |
|
|||
|
|
| M-<F9> | Non Definito |
|
|||
|
|
|---------+----------------------------------------------------|
|
|||
|
|
| <F10> | Passa il focus al menu |
|
|||
|
|
| S-<F10> | Passa il focus al menu |
|
|||
|
|
| C-<F10> | Passa il focus al sottomenu |
|
|||
|
|
| M-<F10> | Passa la visualizzazione a schermo Intero/Finestra |
|
|||
|
|
|---------+----------------------------------------------------|
|
|||
|
|
| <F11> | Passa la visualizzazione a schermo Intero/Finestra |
|
|||
|
|
| S-<F11> | Passa la visualizzazione a schermo Intero/Finestra |
|
|||
|
|
| C-<F11> | Non Definito |
|
|||
|
|
| M-<F11> | Non Definito |
|
|||
|
|
|---------+----------------------------------------------------|
|
|||
|
|
| <F12> | Non Definito |
|
|||
|
|
| S-<F12> | Non Definito |
|
|||
|
|
| C-<F12> | Non Definito |
|
|||
|
|
| M-<F12> | Non Definito |
|
|||
|
|
|---------+----------------------------------------------------|
|
|||
|
|
|
|||
|
|
Quindi assegnerò con questi principi i tasti:
|
|||
|
|
- *F9* - /Visibilità/ - per la visibilità sul file
|
|||
|
|
| Key | Origin | My Bingind |
|
|||
|
|
|--------+--------------+------------------------------|
|
|||
|
|
| <F9> | Non Definito | Visualizza tutto |
|
|||
|
|
| S-<F9> | Non Definito | Visualizza solo ramo attuale |
|
|||
|
|
| C-<F9> | Non Definito | nascondi ramo attuale |
|
|||
|
|
| M-<F9> | Non Definito | ... |
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
(global-set-key (kbd "<f9>") 'widen)
|
|||
|
|
(global-set-key (kbd "C-<f9>") 'MRK/hide-other)
|
|||
|
|
(global-set-key (kbd "S-<f9>") 'narrow-to-region)
|
|||
|
|
;(global-set-key (kbd "M-<f9>") )
|
|||
|
|
#+END_SRC
|
|||
|
|
*/ToReview:/*
|
|||
|
|
|
|||
|
|
Verificare come posso sfruttare i segnalibri per navigare fra i file:
|
|||
|
|
: C-x r m bookmark-set Imposta un segnalibro. Utile nelle ricerche
|
|||
|
|
: C-x r b bookmark-jump Salta ad un segnalibro.
|
|||
|
|
|
|||
|
|
Come riepilogato nella [[https://www.emacswiki.org/emacs/BasicNarrowing][wiki]] i comandi base per narrowing/widen (narrow=stringere
|
|||
|
|
widen=allargare) in emacs sono:
|
|||
|
|
- C-x n n /narrow-to-region/ :: Visualizza solo il testo selezionato, e nasconde
|
|||
|
|
tutto il resto.
|
|||
|
|
- C-x n w /widen/ :: Visualizza tutto il testo del buffer
|
|||
|
|
- C-x n p /narrow-to-page/ :: Visualizza solo il testo dal cursore a fine pagina.
|
|||
|
|
- C-x n d /narrow-to-defun/ :: Visualizza solo il testo tramite le [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Defuns.html#Defuns][Defun]].
|
|||
|
|
Naturalmente il testo nascosto non è più accessibile per le modifiche dal buffer
|
|||
|
|
fino a che non si rivisualizza (widen) però rimane gestito, quindi salvando il file
|
|||
|
|
lo mantiene ecc...
|
|||
|
|
|
|||
|
|
Org-mode ha i seguenti modi per cambiare la visibilità del testo nel buffer:
|
|||
|
|
- C-c / /org-sparse-tree/ :: This prompts for an extra key to select a sparse-tree
|
|||
|
|
creating command.
|
|||
|
|
|
|||
|
|
|
|||
|
|
- *F11* - /Loggin Work/ - per la gestione del log dei tempi
|
|||
|
|
| Key | Origin | My Binding |
|
|||
|
|
|---------+-------------------------------------+------------|
|
|||
|
|
| <F11> | Visualizza dove c'è il clock attivo | Clock Goto |
|
|||
|
|
| S-<F11> | Fa partire il clock di timing | Clock In |
|
|||
|
|
| C-<F11> | Termina il clock di timng | Clock Out |
|
|||
|
|
| M-<F11> | Org manage per navigare fra i file | Org-Manage |
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
(global-set-key (kbd "<f11>") 'org-clock-goto)
|
|||
|
|
(global-set-key (kbd "C-<f11>") 'org-clock-in)
|
|||
|
|
(global-set-key (kbd "S-<f11>") 'org-clock-out)
|
|||
|
|
(global-set-key (kbd "M-<f11>") 'org-manage )
|
|||
|
|
#+END_SRC
|
|||
|
|
*/ToReview:/*
|
|||
|
|
|
|||
|
|
Impostiamo il tasto F11 per iteragire con i timer ed il log delle ore e quindi devo
|
|||
|
|
pensare a come fare le seguenti cose:
|
|||
|
|
- avviare il log del task: Clock in
|
|||
|
|
- fermare un log del task: Clock out
|
|||
|
|
- fare il report dei log: ?
|
|||
|
|
- stimare il tempo di un task
|
|||
|
|
- modificare la stima di un task
|
|||
|
|
- mostrare stima e log di un task in forma colonne
|
|||
|
|
- navigare fra i task loggati (la ring relativa)
|
|||
|
|
|
|||
|
|
- *F12* - /Navigazione/ - per la navigazione fra i file (e la pubblicazione per compatibilità)
|
|||
|
|
| <F12> | Apre aggenda (C-c a) |
|
|||
|
|
| S-<F12> | Aprire subito Trash.org |
|
|||
|
|
| C-<F12> | Aprire subito InBox.org |
|
|||
|
|
| M-<F12> | Aprire subito Mrk.org |
|
|||
|
|
| C-S-<F12> | Pubblicazione file org |
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
(global-set-key (kbd "<f12>") 'org-agenda)
|
|||
|
|
(global-set-key (kbd "S-<f12>") (lambda() (interactive)(find-file "~/Doc/Trash/Trash.org")))
|
|||
|
|
(global-set-key (kbd "C-<f12>") (lambda() (interactive)(find-file "~/Doc/Org/InBox.org")))
|
|||
|
|
(global-set-key (kbd "M-<f12>") (lambda() (interactive)(find-file "~/Doc/Org/Private/MRK.org")))
|
|||
|
|
(global-set-key (kbd "C-S-<f12>") 'MRK/save-then-publish)
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
Mentre imposto anche questi miei key binding custom:
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
;; Vecchio binding solo per reference:
|
|||
|
|
;;(global-set-key (kbd "<f12>") 'org-agenda)
|
|||
|
|
;;(global-set-key (kbd "<f5>") 'bh/org-todo)
|
|||
|
|
;;(global-set-key (kbd "<S-f5>") 'bh/widen)
|
|||
|
|
;;(global-set-key (kbd "<f7>") 'bh/set-truncate-lines)
|
|||
|
|
;;(global-set-key (kbd "<f8>") 'org-cycle-agenda-files)
|
|||
|
|
;;(global-set-key (kbd "<f9> <f9>") 'bh/show-org-agenda)
|
|||
|
|
;;(global-set-key (kbd "<f9> b") 'bbdb)
|
|||
|
|
;;(global-set-key (kbd "<f9> c") 'calendar)
|
|||
|
|
;;(global-set-key (kbd "<f9> f") 'boxquote-insert-file)
|
|||
|
|
;;(global-set-key (kbd "<f9> g") 'gnus)
|
|||
|
|
;;(global-set-key (kbd "<f9> h") 'bh/hide-other)
|
|||
|
|
;;(global-set-key (kbd "<f9> n") 'bh/toggle-next-task-display)
|
|||
|
|
;;(global-set-key (kbd "<f9> I") 'bh/punch-in)
|
|||
|
|
;;(global-set-key (kbd "<f9> O") 'bh/punch-out)
|
|||
|
|
;;(global-set-key (kbd "<f9> o") 'bh/make-org-scratch)
|
|||
|
|
;;(global-set-key (kbd "<f9> r") 'boxquote-region)
|
|||
|
|
;;(global-set-key (kbd "<f9> s") 'bh/switch-to-scratch)
|
|||
|
|
;;(global-set-key (kbd "<f9> t") 'bh/insert-inactive-timestamp)
|
|||
|
|
;;(global-set-key (kbd "<f9> T") 'bh/toggle-insert-inactive-timestamp)
|
|||
|
|
;;(global-set-key (kbd "<f9> v") 'visible-mode)
|
|||
|
|
;;(global-set-key (kbd "<f9> l") 'org-toggle-link-display)
|
|||
|
|
;;(global-set-key (kbd "<f9> SPC") 'bh/clock-in-last-task)
|
|||
|
|
;;(global-set-key (kbd "C-<f9>") 'previous-buffer)
|
|||
|
|
;;(global-set-key (kbd "M-<f9>") 'org-toggle-inline-images)
|
|||
|
|
;;(global-set-key (kbd "C-x n r") 'narrow-to-region)
|
|||
|
|
;;(global-set-key (kbd "C-<f10>") 'next-buffer)
|
|||
|
|
;;(global-set-key (kbd "<f11>") 'org-clock-goto)
|
|||
|
|
;;(global-set-key (kbd "C-<f11>") 'org-clock-in)
|
|||
|
|
;;(global-set-key (kbd "C-<f12>") 'MRK/save-then-publish)
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
*** Tasks and States
|
|||
|
|
Imposto come parole chiavi per i ToDo i seguenti codici:
|
|||
|
|
| key | Descr |
|
|||
|
|
|---------+--------------------------|
|
|||
|
|
| TODO | Task da fare |
|
|||
|
|
| NEXT | Task in esecuzione |
|
|||
|
|
| DONE | Task terminato |
|
|||
|
|
| WAITING | Task in attesa |
|
|||
|
|
| HOLD | Task Bloccato |
|
|||
|
|
| ABORT | Task Abortito(Cancellato |
|
|||
|
|
| PHONE | Telefonata |
|
|||
|
|
| MEETING | Meeting |
|
|||
|
|
|
|||
|
|
e corrisponde al seguente schema:
|
|||
|
|
|
|||
|
|
#+begin_src plantuml :file ~/Pub/.Tmp/Img/MyInit.org_task_states.png :cache yes :tangle no
|
|||
|
|
title Task States
|
|||
|
|
[*] -> TODO
|
|||
|
|
TODO -> NEXT
|
|||
|
|
TODO -> DONE
|
|||
|
|
NEXT -> DONE
|
|||
|
|
DONE -> [*]
|
|||
|
|
TODO --> WAITING
|
|||
|
|
WAITING --> TODO
|
|||
|
|
NEXT --> WAITING
|
|||
|
|
WAITING --> NEXT
|
|||
|
|
HOLD --> CANCELLED
|
|||
|
|
WAITING --> CANCELLED
|
|||
|
|
CANCELLED --> [*]
|
|||
|
|
TODO --> HOLD
|
|||
|
|
HOLD --> TODO
|
|||
|
|
TODO --> CANCELLED
|
|||
|
|
TODO: t
|
|||
|
|
NEXT: n
|
|||
|
|
DONE: d
|
|||
|
|
WAITING:w
|
|||
|
|
note right of WAITING: Note records\nwhat it is waiting for
|
|||
|
|
HOLD:h
|
|||
|
|
note right of CANCELLED: Note records\nwhy it was cancelled
|
|||
|
|
CANCELLED:c
|
|||
|
|
WAITING --> DONE
|
|||
|
|
#+end_src
|
|||
|
|
|
|||
|
|
per le chiamate:
|
|||
|
|
#+begin_src plantuml :file ~/Pub/.Tmp/Img/MyInit.org_phone_states.png :cache yes :tangle no
|
|||
|
|
title Phone Call Task State
|
|||
|
|
[*] -> PHONE
|
|||
|
|
PHONE -> [*]
|
|||
|
|
#+end_src
|
|||
|
|
|
|||
|
|
per i meeting:
|
|||
|
|
#+begin_src plantuml :file ~/Pub/.Tmp/Img/MyInit.org_meeting_states.png :cache yes :tangle no
|
|||
|
|
title Meeting Task State
|
|||
|
|
[*] -> MEETING
|
|||
|
|
MEETING -> [*]
|
|||
|
|
#+end_src
|
|||
|
|
|
|||
|
|
Per ciacuno di essi, definisco anche la lettera di abbreviazione per l'inserimento
|
|||
|
|
veloce
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
;; Task keywords definitions:
|
|||
|
|
(setq org-todo-keywords
|
|||
|
|
(quote (
|
|||
|
|
(sequence "TODO(t)" "NEXT(n)" "|" "DONE(d)")
|
|||
|
|
(sequence "WAITING(w@/!)" "HOLD(h@/!)" "|" "ABORT(a@/!)" "PHONE" "MEETING")
|
|||
|
|
)
|
|||
|
|
)
|
|||
|
|
)
|
|||
|
|
#+END_SRC
|
|||
|
|
Per ciascuna keyword posso personalizzare il faceplate, ma per ora non lo faccio.
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
;; ---> ;; Task keywords colour settings:
|
|||
|
|
;; ---> (setq org-todo-keyword-faces (quote (
|
|||
|
|
;; ---> ("TODO" :foreground "red" :weight bold)
|
|||
|
|
;; ---> ("NEXT" :foreground "blue" :weight bold)
|
|||
|
|
;; ---> ("DONE" :foreground "forest green" :weight bold)
|
|||
|
|
;; ---> ("WAITING" :foreground "orange" :weight bold)
|
|||
|
|
;; ---> ("HOLD" :foreground "magenta" :weight bold)
|
|||
|
|
;; ---> ("ABORT" :foreground "forest green" :weight bold)
|
|||
|
|
;; ---> ("MEETING" :foreground "forest green" :weight bold)
|
|||
|
|
;; ---> ("PHONE" :foreground "forest green" :weight bold)
|
|||
|
|
;; ---> )))
|
|||
|
|
#+END_SRC
|
|||
|
|
Ai tipi di ToDo, associo anche in modo automatico dei tag per facilitare filtri o
|
|||
|
|
ricerche:
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
;; Triggers that automatically assign tags to tasks based on state changes:
|
|||
|
|
(setq org-todo-state-tags-triggers (quote (
|
|||
|
|
("ABORT" ("ABORT" . t))
|
|||
|
|
("WAITING" ("WAITING" . t))
|
|||
|
|
("HOLD" ("WAITING") ("HOLD" . t))
|
|||
|
|
(done ("WAITING") ("HOLD"))
|
|||
|
|
("TODO" ("WAITING") ("ABORT") ("HOLD"))
|
|||
|
|
("NEXT" ("WAITING") ("ABORT") ("HOLD"))
|
|||
|
|
("DONE" ("WAITING") ("ABORT") ("HOLD"))
|
|||
|
|
)))
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
Abilito la selezione veloce delle keyword tramite il comando
|
|||
|
|
: C-c C-t Keyword
|
|||
|
|
Inoltre abilito lo switch fra le keyword tramite i comandi
|
|||
|
|
: S-left
|
|||
|
|
: S-right
|
|||
|
|
senza però che si attivino le annotazioni automatiche.
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
;; Fast todo selection allows changing from any task todo state to any other state directly by selecting the appropriate key from the fast todo selection key menu.
|
|||
|
|
;; The relative command is: C-c C-t KEY where KEY is the appropriate fast todo state selection key as defined in org-todo-keywords.
|
|||
|
|
(setq org-use-fast-todo-selection t)
|
|||
|
|
;;
|
|||
|
|
;; Cycles through the todo states with S-left and S-right, but skips setting timestamps and entering notes
|
|||
|
|
(setq org-treat-S-cursor-todo-selection-as-state-change nil)
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
*** Tags :ToReview:MISSING:
|
|||
|
|
imposto i tag generali in uso
|
|||
|
|
|
|||
|
|
*** Capture Setup :ToReview:MISSING:
|
|||
|
|
imposto i form di cattura veloce
|
|||
|
|
|
|||
|
|
*** Refiling Tasks: :ToReview:MISSING:
|
|||
|
|
imposto il refill
|
|||
|
|
|
|||
|
|
*** org-protocol Setup: :ToReview:MISSING:
|
|||
|
|
imposto org protocol
|
|||
|
|
|
|||
|
|
*** Agenda Setup :ToReview:MISSING:
|
|||
|
|
Per l'aggenda in primo acchitto utilizzo i file in cui lavoro, quindi utilizzerò i file:
|
|||
|
|
- Inbox.org: Per tutti i task su cui sto lavorando e che quindi avranno sicuramente
|
|||
|
|
ToDo o lavori schedulati.
|
|||
|
|
- Diary.org: Per tutti i task ripetitivi o prevedibili tipo compleanni o altro o
|
|||
|
|
scadenze future (assicurazione, dividendi degli investimenti ecc...)
|
|||
|
|
- KnowHow: Per tutti i file con le mie note, sopratutto per le ricerche in base ai tag
|
|||
|
|
- Private: Per i miei lavori privati, in particolare prevedo vi saranno soprattutto
|
|||
|
|
task ripetitivi, perchè gestendo i lavori correnti con il Inbox.org, sulla cartella
|
|||
|
|
resteranno pochi task Todo o schedulati.
|
|||
|
|
- Work: Per i miei lavori, in particolare prevedo vi saranno soprattutto task
|
|||
|
|
ripetitivi, perchè gestendo i lavori correnti con il Inbox.org, sulla cartella
|
|||
|
|
resteranno pochi task Todo o schedulati.
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
;; File gestiti dall'agenda:
|
|||
|
|
(if (boundp 'org-user-agenda-files)
|
|||
|
|
(setq org-agenda-files org-user-agenda-files)
|
|||
|
|
(setq org-agenda-files ( quote (
|
|||
|
|
"~/Doc/Org/Diary.org"
|
|||
|
|
"~/Doc/Org/InBox.org"
|
|||
|
|
"~/Doc/Org/KnowHow"
|
|||
|
|
"~/Doc/Org/Private"
|
|||
|
|
"~/Doc/Org/Work"
|
|||
|
|
)))
|
|||
|
|
)
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
*** Time Clocking, Reporting, Tracking, Estimate :ToReview:MISSING:
|
|||
|
|
Dal manuale, si ricavano i seguenti comandi per la retentività dei clock:
|
|||
|
|
#+begin_src emacs-lisp
|
|||
|
|
(setq org-clock-persist 'history)
|
|||
|
|
(org-clock-persistence-insinuate)
|
|||
|
|
#+end_src
|
|||
|
|
|
|||
|
|
Voglio che il pulsante F9 sia dedicato al clock e quindi le varie comandi:
|
|||
|
|
- org-clock-goto va al clock in corso (F9)
|
|||
|
|
|
|||
|
|
*** GTD stuff (Project & Archiving) :ToReview:MISSING:
|
|||
|
|
imposto i set per usare GTD ed eventualmente projetile e treemacs
|
|||
|
|
|
|||
|
|
*** Publishing and Exporting :ToReview:MISSING:
|
|||
|
|
Impostazioni generali utili per l'esportazione (anche del singolo file):
|
|||
|
|
#+begin_src emacs-lisp
|
|||
|
|
;; Alphabetical listing options need to be set before the exporters are loaded for filling to work correctly
|
|||
|
|
(setq org-alphabetical-lists t)
|
|||
|
|
;;
|
|||
|
|
;; Explicitly load required exporters
|
|||
|
|
(require 'ox-html)
|
|||
|
|
(require 'ox-latex)
|
|||
|
|
(require 'ox-ascii)
|
|||
|
|
(require 'ox-md)
|
|||
|
|
(require 'ox-texinfo)
|
|||
|
|
;;
|
|||
|
|
;; Imposto dove trovare Ditaa (Corretto il setup di Ditaa in base alla discussione del forum: http://thread.gmane.org/gmane.emacs.orgmode/27859/focus=27864)
|
|||
|
|
(setq org-ditaa-jar-path "~/.MyCfg/emacs/AddOn/app/ditaa0_9.jar")
|
|||
|
|
;;
|
|||
|
|
;; Imposto dove trovare PlantUML (http://plantuml.sourceforge.net/faq.html)
|
|||
|
|
(setq org-plantuml-jar-path "~/.MyCfg/emacs/AddOn/app/plantuml-1.2023.1.jar")
|
|||
|
|
#+end_src
|
|||
|
|
Imposto Babel:
|
|||
|
|
#+begin_src emacs-lisp
|
|||
|
|
;; Org-babel Setup:
|
|||
|
|
;;
|
|||
|
|
;; Imposto di mostrare l'immagine:
|
|||
|
|
(add-hook 'org-babel-after-execute-hook 'org-display-inline-images)
|
|||
|
|
;(add-hook 'org-babel-after-execute-hook 'bh/display-inline-images 'append)
|
|||
|
|
;;
|
|||
|
|
;; Make babel results blocks lowercase
|
|||
|
|
(setq org-babel-results-keyword "results")
|
|||
|
|
;;
|
|||
|
|
;; Imposto quali linguaggi caricare: Per Problema a Ditaa sto studianto: http://thread.gmane.org/gmane.emacs.orgmode/27859/focus=27864
|
|||
|
|
(org-babel-do-load-languages
|
|||
|
|
(quote org-babel-load-languages)
|
|||
|
|
(quote (
|
|||
|
|
; (asymptote . t)
|
|||
|
|
; (awk . t)
|
|||
|
|
; (C . t)
|
|||
|
|
; (calc . t)
|
|||
|
|
; (clojure . t)
|
|||
|
|
; (comint . t)
|
|||
|
|
; (core . t)
|
|||
|
|
; (csharp . t)
|
|||
|
|
; (css . t)
|
|||
|
|
(ditaa . t)
|
|||
|
|
(dot . t)
|
|||
|
|
(emacs-lisp . t)
|
|||
|
|
; (eval . t)
|
|||
|
|
; (exp . t)
|
|||
|
|
; (fortran . t)
|
|||
|
|
; (gnuplot . t)
|
|||
|
|
; (haskell . t)
|
|||
|
|
; (io . t)
|
|||
|
|
; (java . t)
|
|||
|
|
; (js . t)
|
|||
|
|
; (keys . t)
|
|||
|
|
; (latex . t)
|
|||
|
|
; (ledger . t)
|
|||
|
|
; (lilypond . t)
|
|||
|
|
; (lisp . t)
|
|||
|
|
; (lob . t)
|
|||
|
|
; (makefile . t)
|
|||
|
|
; (matlab . t)
|
|||
|
|
; (maxima . t)
|
|||
|
|
; (mscgen . t)
|
|||
|
|
; (ocaml . t)
|
|||
|
|
; (octave . t)
|
|||
|
|
(org . t)
|
|||
|
|
; (perl . t)
|
|||
|
|
; (picolisp . t)
|
|||
|
|
(plantuml . t)
|
|||
|
|
; (python . t)
|
|||
|
|
; (R . t)
|
|||
|
|
; (ref . t)
|
|||
|
|
; (ruby . t)
|
|||
|
|
; (sass . t)
|
|||
|
|
; (scala . t)
|
|||
|
|
; (scheme . t)
|
|||
|
|
; (screen . t)
|
|||
|
|
; (sh . t)
|
|||
|
|
; (shell . t)
|
|||
|
|
; (shen . t)
|
|||
|
|
; (sql . t)
|
|||
|
|
; (sqlite . t)
|
|||
|
|
; (table . t)
|
|||
|
|
; (tangle . t)
|
|||
|
|
)))
|
|||
|
|
;;
|
|||
|
|
;; Do not prompt to confirm evaluation
|
|||
|
|
;; This may be dangerous - make sure you understand the consequences
|
|||
|
|
;; of setting this -- see the docstring for details
|
|||
|
|
(setq org-confirm-babel-evaluate nil)
|
|||
|
|
;;
|
|||
|
|
;; Use fundamental mode when editing plantuml blocks with C-c '
|
|||
|
|
(add-to-list 'org-src-lang-modes (quote ("plantuml" . fundamental)))
|
|||
|
|
;;
|
|||
|
|
#+end_src
|
|||
|
|
Altro sull'esportazione:
|
|||
|
|
#+begin_src emacs-lisp
|
|||
|
|
;; Inline images in HTML instead of producting links to the image
|
|||
|
|
(setq org-export-html-inline-images t)
|
|||
|
|
;;; Disabilita la visualizzazione delle immagini per evitare errori nelle sessioni ssh
|
|||
|
|
;(setq org-startup-with-inline-images nil)
|
|||
|
|
;;
|
|||
|
|
;; Inline images in HTML instead of producting links to the image
|
|||
|
|
(setq org-html-inline-images t)
|
|||
|
|
;;
|
|||
|
|
;; Do not use sub or superscripts - I currently don't need this functionality in my documents
|
|||
|
|
;(setq org-export-with-sub-superscripts nil)
|
|||
|
|
;;
|
|||
|
|
; ;; Usa foglio di stile locale: Preferisco caricarlo dal file template
|
|||
|
|
; (setq org-html-head-extra "<link rel=\"stylesheet\" href=\"file://C:/_Home/Pub/.Styles/norang/doc.norang.ca_org.css\" type=\"text/css\" />")
|
|||
|
|
; (setq org-html-head-include-default-style nil)
|
|||
|
|
; ;;
|
|||
|
|
; ;; Do not generate internal css formatting for HTML exports
|
|||
|
|
; (setq org-export-htmlize-output-type (quote css))
|
|||
|
|
;;
|
|||
|
|
;; Disabilita lo stile di default:
|
|||
|
|
(setq org-export-html-style-include-default nil)
|
|||
|
|
;;
|
|||
|
|
;; Export with LaTeX fragments
|
|||
|
|
(setq org-export-with-LaTeX-fragments t)
|
|||
|
|
;;
|
|||
|
|
;; For export to latex I use the following setting to get fontified listings from source blocks:
|
|||
|
|
(setq org-export-latex-listings t)
|
|||
|
|
;;
|
|||
|
|
;; Fontify Latex listings for source blocks
|
|||
|
|
(setq org-latex-listings t)
|
|||
|
|
;;
|
|||
|
|
;; Rimuovo l'header XML per problemi di compatibilità con open office
|
|||
|
|
(setq org-html-xml-declaration (quote (
|
|||
|
|
("html" . "")
|
|||
|
|
("was-html" . "<?xml version=\"1.0\" encoding=\"%s\"?>")
|
|||
|
|
("php" . "<?php echo \"<?xml version=\\\"1.0\\\" encoding=\\\"%s\\\" ?>\"; ?>")
|
|||
|
|
)))
|
|||
|
|
;;
|
|||
|
|
;; Permetto in automatico l'override delle variabili di personalizzazione dell'esportazione
|
|||
|
|
(setq org-export-allow-BIND t)
|
|||
|
|
;;
|
|||
|
|
;;
|
|||
|
|
#+end_src
|
|||
|
|
Infine definisco il progetto di esportazione:
|
|||
|
|
#+begin_src emacs-lisp
|
|||
|
|
;; Progetti per l'esportazione automatica:
|
|||
|
|
;; OrgData - Esportazione di tutti i file in OrgData
|
|||
|
|
(setq org-publish-project-alist (quote (
|
|||
|
|
;; Progetti nell'esportazione dei file Org:
|
|||
|
|
;; - orgFile are the org-files that generate the content
|
|||
|
|
;; - imgFile are images and css files that need to be included
|
|||
|
|
;; - OrgData is the top-level project that gets published
|
|||
|
|
("orgFile"
|
|||
|
|
:base-directory "~/Doc/Org"
|
|||
|
|
:publishing-directory "~/Pub"
|
|||
|
|
:recursive t
|
|||
|
|
:section_numbers nil
|
|||
|
|
:table-of-contents nil
|
|||
|
|
:base-extension "org"
|
|||
|
|
:publishing-function org-html-publish-to-html
|
|||
|
|
:auto-index t
|
|||
|
|
:index-filename "Index.org"
|
|||
|
|
:index-title "Indice del materiale Org-Mode"
|
|||
|
|
:index-function org-publish-org-index
|
|||
|
|
:author-info t
|
|||
|
|
:creator-info t
|
|||
|
|
:auto-sitemap t
|
|||
|
|
:sitemap-filename "MySiteMap.org"
|
|||
|
|
:html-head-extra "<!-- Start Favicon e style per il sitemap -->\n<link rel=\"stylesheet\" type=\"text/css\" href=\"file://C:/_Home/Pub/.Styles/solarized-css/solarized-dark.css\"/>\n<link rel=\"icon\" type=\"image/x-icon\" href=\"file://C:/_Home/Pub/.Res/Img/CSiCo_favicon.ico\">\n<!-- End Favicon e style per il sitemap -->"
|
|||
|
|
:sitemap-title "Indice del materiale esportato in html")
|
|||
|
|
("imgFile"
|
|||
|
|
:base-directory "~/Doc/Org"
|
|||
|
|
:publishing-directory "~/Pub"
|
|||
|
|
:base-extension "css\\|pdf\\|png\\|jpg\\|gif\\|txt"
|
|||
|
|
:publishing-function org-publish-attachment
|
|||
|
|
:recursive t
|
|||
|
|
:author nil)
|
|||
|
|
("OrgData"
|
|||
|
|
:components ("orgFile" "imgFile"))
|
|||
|
|
)))
|
|||
|
|
#+end_src
|
|||
|
|
|
|||
|
|
|
|||
|
|
;; Export org-mode theme
|
|||
|
|
;; * Export org-mode theme
|
|||
|
|
;; In ~/.MyCfg/emacs/templates inserisco le definizioni dei themi da utilizzare con
|
|||
|
|
;; l'esportazione da org; mentre in ~/Pub/.Styles inserisco le relative risorse (css, js,
|
|||
|
|
;; ecc...) che sono necessarie per caricare localmente il tema. Quando possibile mantengo
|
|||
|
|
;; nelle definizioni sia il setup per i riferimenti locali (per mio utilizzo locale), sia
|
|||
|
|
;; il setup con i riferimenti remoti in modo che il file sia visibile da tutti (per
|
|||
|
|
;; utilizzo di altri).
|
|||
|
|
;;
|
|||
|
|
;; In particolare al 2020/04 ho impostato due themi principali, mentre al 2020/06 ho
|
|||
|
|
;; introdotto altri themi, per arrivare ai seguenti che riassumo brevemente nella forma
|
|||
|
|
;; locale:
|
|||
|
|
;; : #+SETUPFILE: ~/.MyCfg/emacs/templates/norang/norang_local.org
|
|||
|
|
;; : #+SETUPFILE: ~/.MyCfg/emacs/templates/org-html-themes/theme-bigblow-local.setup
|
|||
|
|
;; : #+SETUPFILE: ~/.MyCfg/emacs/templates/org-html-themes/theme-readtheorg-local.setup
|
|||
|
|
;; : #+SETUPFILE: ~/.MyCfg/emacs/templates/gongzhitaao.org/gongzhitaao_local.org
|
|||
|
|
;; : #+SETUPFILE: ~/.MyCfg/emacs/templates/solarized-css/solarized-dark_local.org
|
|||
|
|
;; : #+SETUPFILE: ~/.MyCfg/emacs/templates/solarized-css/solarized-light_local.org
|
|||
|
|
;; : #+SETUPFILE: ~/.MyCfg/emacs/templates/thi.ng/thi.ng_local.org
|
|||
|
|
;;
|
|||
|
|
;; ** Norang
|
|||
|
|
;; Tema che ho ricavato dal sito [[http://doc.norang.ca/org-mode.html][Org Mode - Organize Your Life In Plain Text!]]
|
|||
|
|
;;
|
|||
|
|
;; I file di configurazione sono in ~/.MyCfg/emacs/templates/norang, mentre le relative
|
|||
|
|
;; risorse le ho messe in ~/Pub/.Styles/norang.
|
|||
|
|
;;
|
|||
|
|
;; Per applicarlo utilizzare il seguente metadata sul file org:
|
|||
|
|
;; - Versione con risorse locali:
|
|||
|
|
;; : #+SETUPFILE: ~/.MyCfg/emacs/templates/norang/norang_local.org
|
|||
|
|
;; - Versione con risorse remote:
|
|||
|
|
;; : #+SETUPFILE: ~/.MyCfg/emacs/templates/norang/norang.org
|
|||
|
|
;;
|
|||
|
|
;; ** Org-HTML (Bigblow, ReadTheOrg)
|
|||
|
|
;;
|
|||
|
|
;; ** gongzhitaao.org
|
|||
|
|
;; Stile semplice preso dal sito: https://gongzhitaao.org/orgcss/ tramite il link diretto:
|
|||
|
|
;; [[https://gongzhitaao.org/orgcss/org.css][org.css]] e che dispone del repository: [[https://github.com/gongzhitaao/orgcss][GitHub]]
|
|||
|
|
;;
|
|||
|
|
;; I file di configurazione sono in ~/.MyCfg/emacs/templates/gongzhitaao.org, mentre le relative
|
|||
|
|
;; risorse le ho messe in ~/Pub/.Styles/gongzhitaao.org.
|
|||
|
|
;;
|
|||
|
|
;; Per applicarlo utilizzare il seguente metadata sul file org:
|
|||
|
|
;; - Versione con risorse locali:
|
|||
|
|
;; : #+SETUPFILE: ~/.MyCfg/emacs/templates/gongzhitaao.org/gongzhitaao_local.org
|
|||
|
|
;; - Versione con risorse remote:
|
|||
|
|
;; : #+SETUPFILE: ~/.MyCfg/emacs/templates/gongzhitaao.org/gongzhitaao.org
|
|||
|
|
;;
|
|||
|
|
;; ** solarized-css
|
|||
|
|
;; Dal sito [[http://thomasf.github.io/solarized-css/][solarized-css]] ([[https://github.com/thomasf/solarized-css][GitHub]]) ricavo un thema chiaro ed uno scuro che sembrano
|
|||
|
|
;; promettenti:
|
|||
|
|
;;
|
|||
|
|
;; I file di configurazione sono in ~/.MyCfg/emacs/templates/solarized-css, mentre le
|
|||
|
|
;; relative risorse le ho messe in ~/Pub/.Styles/solarized-css.
|
|||
|
|
;;
|
|||
|
|
;; Per applicare, il thema chiaro, utilizzare il seguente metadata sul file org:
|
|||
|
|
;; - Versione con risorse locali:
|
|||
|
|
;; : #+SETUPFILE: ~/.MyCfg/emacs/templates/solarized-css/solarized-light_local.org
|
|||
|
|
;; - Versione con risorse remote:
|
|||
|
|
;; : #+SETUPFILE: ~/.MyCfg/emacs/templates/solarized-css/solarized-light.org
|
|||
|
|
;;
|
|||
|
|
;; Per applicare, il thema scuro, utilizzare il seguente metadata sul file org:
|
|||
|
|
;; - Versione con risorse locali:
|
|||
|
|
;; : #+SETUPFILE: ~/.MyCfg/emacs/templates/solarized-css/solarized-dark_local.org
|
|||
|
|
;; - Versione con risorse remote:
|
|||
|
|
;; : #+SETUPFILE: ~/.MyCfg/emacs/templates/solarized-css/solarized-dark.org
|
|||
|
|
;;
|
|||
|
|
;; ** thi.ng/org-spec
|
|||
|
|
;; Dal sito https://github.com/thi-ng/org-spec ricavo un thema semplice ma con la TOC a
|
|||
|
|
;; sinistra:
|
|||
|
|
;;
|
|||
|
|
;; I file di configurazione sono in ~/.MyCfg/emacs/templates/thi.ng, mentre le
|
|||
|
|
;; relative risorse le ho messe in ~/Pub/.Styles/thi.ng.
|
|||
|
|
;;
|
|||
|
|
;; Per applicarlo utilizzare il seguente metadata sul file org:
|
|||
|
|
;; - Versione con risorse locali:
|
|||
|
|
;; : #+SETUPFILE: ~/.MyCfg/emacs/templates/thi.ng/thi.ng_local.org
|
|||
|
|
;; - Versione con risorse remote:
|
|||
|
|
;; : #+SETUPFILE: ~/.MyCfg/emacs/templates/thi.ng/thi.ng.org
|
|||
|
|
;;
|
|||
|
|
;; ** org-html-themes (Bigblow e ReadTheOrg)
|
|||
|
|
;; Vi sono più versioni, il reposity di [[https://github.com/fniessen/org-html-themes][fniessen]] è stato forkato da [[https://github.com/paulzql/org-html-themes][paulzql]] che io avevo
|
|||
|
|
;; inizialmente preso a riferimento. Però questo è fermo al 2015, mentre fniessen è più
|
|||
|
|
;; attivo e quindi faccio l'upgrade sperando che così risolva i piccoli errori riscontrati
|
|||
|
|
;; nella toc laterale quando ho molte headline.
|
|||
|
|
;;
|
|||
|
|
;; *** Repository fniessen/org-html-themes
|
|||
|
|
;; Sito di riferimento: [[https://github.com/fniessen/org-html-themes][GitHub]]
|
|||
|
|
;;
|
|||
|
|
;; *** Repository paulzql/org-html-themes
|
|||
|
|
;; Sito di riferimento: [[https://github.com/paulzql/org-html-themes][GitHub]]
|
|||
|
|
;;
|
|||
|
|
;; Da questo sito, ho ricavato il reposity del 2020/04, ho copiato i file di setup in
|
|||
|
|
;; ~/.MyCfg/emacs/templates/org-html-themes dopo aver corretto i riferimenti locali; le
|
|||
|
|
;; risorse le ho copiate nella cartella C:\_Home\Pub\.Styles\org-html-themes-master.
|
|||
|
|
;;
|
|||
|
|
;; **** Bigblow
|
|||
|
|
;; Per applicarlo utilizzare il seguente metadata sul file org:
|
|||
|
|
;; - Versione con risorse locali:
|
|||
|
|
;; : #+SETUPFILE: ~/.MyCfg/emacs/templates/org-html-themes/theme-bigblow-local.setup
|
|||
|
|
;; - Versione con risorse remote:
|
|||
|
|
;; : #+SETUPFILE: ~/.MyCfg/emacs/templates/org-html-themes/theme-bigblow.setup
|
|||
|
|
;;
|
|||
|
|
;; Questo tema permette di utilizzare le seguenti abbreviazioni per navigare:
|
|||
|
|
;; | Shortcut | What it does |
|
|||
|
|
;; |----------+-----------------------------------|
|
|||
|
|
;; | ? or h | Access the dashboard |
|
|||
|
|
;; | n | Move to the next main heading |
|
|||
|
|
;; | p | Move to the previous main heading |
|
|||
|
|
;; | b | Scroll up |
|
|||
|
|
;; | < | Scroll to top |
|
|||
|
|
;; | > | Scroll to bottom |
|
|||
|
|
;; | - | Collapse all |
|
|||
|
|
;; | + | Expand all |
|
|||
|
|
;; | r | Go to next task in list |
|
|||
|
|
;; | R | Go to previous task in list |
|
|||
|
|
;; | q | Stop reviewing the list of tasks |
|
|||
|
|
;; | g | Reload the page |
|
|||
|
|
;; |----------+-----------------------------------|
|
|||
|
|
;;
|
|||
|
|
;; **** ReadTheOrg
|
|||
|
|
;; Per applicarlo utilizzare il seguente metadata sul file org:
|
|||
|
|
;; - Versione con risorse locali:
|
|||
|
|
;; : #+SETUPFILE: ~/.MyCfg/emacs/templates/org-html-themes/theme-readtheorg-local.setup
|
|||
|
|
;; - Versione con risorse remote:
|
|||
|
|
;; : #+SETUPFILE: ~/.MyCfg/emacs/templates/org-html-themes/theme-readtheorg.setup
|
|||
|
|
|
|||
|
|
*** Reminders :ToReview:MISSING:
|
|||
|
|
Imposto i remainder e come utilizzarli.
|
|||
|
|
|
|||
|
|
*** Funzioni in uso:
|
|||
|
|
**** MRK/save-then-publish
|
|||
|
|
Funzione ricavata dall'esempio in [[http://doc.norang.ca/org-mode.html][Org Mode - Organize Your Life In Plain Text!]] per:
|
|||
|
|
- salvare tutti i buffer
|
|||
|
|
- inserire per ciascun file la validazione dell'html
|
|||
|
|
- richiamare per ciascuno l'esportazione in html
|
|||
|
|
- infine richiamare la pubblicazione dell'intero progetto
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
(defun MRK/save-then-publish (&optional force)
|
|||
|
|
(interactive "P")
|
|||
|
|
(save-buffer)
|
|||
|
|
(org-save-all-org-buffers)
|
|||
|
|
(let ((org-html-head-extra)
|
|||
|
|
(org-html-validation-link "<a href=\"http://validator.w3.org/check?uri=referer\">Validate XHTML 1.0</a>"))
|
|||
|
|
(org-publish-current-project force)))
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
**** MRK/hide-other
|
|||
|
|
Funzione per aprire completamente il ramo in cui sono e ragruppare tutti gli altri.
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
(defun bh/hide-other ()
|
|||
|
|
(interactive)
|
|||
|
|
(save-excursion
|
|||
|
|
(org-back-to-heading 'invisible-ok)
|
|||
|
|
(hide-other)
|
|||
|
|
(org-cycle)
|
|||
|
|
(org-cycle)
|
|||
|
|
)
|
|||
|
|
)
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
** - : org-manage: :ToReview:
|
|||
|
|
Dal sito [[https://github.com/dmgerman/org-manage][github]] ricavo il file [[file:~/.MyCfg/emacs/AddOn/org-manage.el][org-manage.el]] che permette di avere un riepilogo dei
|
|||
|
|
file org. Il file lo ho copiato nella directory che carico allo startup (vedi relativo
|
|||
|
|
[[#Add-AddOn][paragrafo]]); per velocizzare si può anche compilare il file ma per ora non lo faccio.
|
|||
|
|
|
|||
|
|
Configuro quindi il load del modo e gli associo i relativi file:
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
;; Installo il pacchetto necessario:
|
|||
|
|
(require 'ctable)
|
|||
|
|
;; Installo il pacchetto vero e propio:
|
|||
|
|
(require 'org-manage)
|
|||
|
|
;; Inizializzo org-manage indicando la cartella da scansionare per i file org:
|
|||
|
|
(setq org-manage-directory-org "~/Doc/Org")
|
|||
|
|
;; Ora basta richiamare la funzione:
|
|||
|
|
;; M-x org-manage
|
|||
|
|
;; o usare il bind 'Alt+F11'
|
|||
|
|
#+END_SRC
|
|||
|
|
Con la versione 28 di emacs, questo non funziona più, in particolare dà errore
|
|||
|
|
#+begin_comment
|
|||
|
|
... remove-duplicates ...
|
|||
|
|
#+end_comment
|
|||
|
|
per risolverlo, ho dovuto cambiare il comando lisp 'remove-duplicates' che non è più
|
|||
|
|
supportato, con il comando 'seq-uniq'
|
|||
|
|
|
|||
|
|
Inoltre si ha un problema con la funzione org-manage che non definisce bene il Hook al
|
|||
|
|
click e quindi quando clicco non mi porta al file corretto. Se invece copio la funzione
|
|||
|
|
sul buffer scratch e la valuto con C-j o C-M-q, poi funziona correttamente.
|
|||
|
|
|
|||
|
|
*** TODO Trovare come bypassare/risolvere il problema al Click
|
|||
|
|
Servirebbe fare un eval automatico della funzione dopo l'avvio di emacs. Guardando in
|
|||
|
|
internet ho vvisto un simil hook sull'avvio di emacs che richiama del codice e quindi
|
|||
|
|
sarebbe da usare per richiamare il codice che compila la funzione.
|
|||
|
|
|
|||
|
|
** ???? Hem ???? :ToReview:Disable:
|
|||
|
|
Package per gestire autocompletamenti e abbreviazioni. Simile ma più potente di IDO,
|
|||
|
|
devo approfondire. [[https://github.com/emacs-helm/helm][helm from GitHub]]
|
|||
|
|
|
|||
|
|
** ???? Projectile ???? :ToReview:Disable:
|
|||
|
|
Package per gestire i progetti in base alle directory (tipo i project di notepad++ o di
|
|||
|
|
sublimetext). Merita approfondimenti.
|
|||
|
|
|
|||
|
|
** ???? Dashboard ???? :ToReview:Disable:
|
|||
|
|
Package per visualizzare un albero a sinistra con link ai file di una directory.
|
|||
|
|
|
|||
|
|
visto sul video del corso di emacs di Lukewh [[https://www.youtube.com/watch?v=Bu7nF9hPSts][Video 10]] e come sito di riferimento ha
|
|||
|
|
[[https://github.com/emacs-dashboard/emacs-dashboard][dashboard]]
|
|||
|
|
|
|||
|
|
** ???? Treemacs ???? :ToReview:Disable:
|
|||
|
|
Package per mostrare l'albero del progetto a sinistra come faccio con
|
|||
|
|
notepad++. Gestisce più progetti e più cose, da approfondire.
|
|||
|
|
|
|||
|
|
visto sul video del corso di emacs di Lukewh [[https://www.youtube.com/watch?v=Bu7nF9hPSts][Video 10]] e come sito di riferimento ha
|
|||
|
|
[[https://github.com/Alexander-Miller/treemacs][treemacs]].
|
|||
|
|
|
|||
|
|
|
|||
|
|
* KeyBinding
|
|||
|
|
Qui imposto dei key binding generali.
|
|||
|
|
|
|||
|
|
Per riepilogare tutti i keybinding, riporto anche quelli fatti in altri punti della
|
|||
|
|
configurazione commentandoli e lincandoli al punto in cui sono definiti.
|
|||
|
|
|
|||
|
|
** Assegnami i caratteri non presenti:
|
|||
|
|
Per facilitare l'editazione rimappo alcuni caratteri non presenti:
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
;; Tilde
|
|||
|
|
(global-set-key (kbd "C-ù") (kbd "~"))
|
|||
|
|
;;
|
|||
|
|
;; Riassegnamento del set mark al posto di C-SPC
|
|||
|
|
(global-set-key (kbd "C-ò") 'set-mark-command)
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
** Org-mode
|
|||
|
|
Riepilogo qui i keybinding fatti per org-mode. In realtà sono stati fatti nella
|
|||
|
|
relativa sezione in package. Qui li riepilogo solo per facilitare una revisione e la
|
|||
|
|
creazione di un resume.
|
|||
|
|
#+BEGIN_SRC emacs-lisp
|
|||
|
|
;(global-set-key "\C-cl" 'org-store-link) ;; Link all'editor dei links
|
|||
|
|
;(global-set-key "\C-ca" 'org-agenda) ;; Link normale per aprire l'aggenda.
|
|||
|
|
;(global-set-key "\C-cb" 'org-iswitchb) ;; Link a iswitch
|
|||
|
|
;(global-set-key (kbd "C-M-r") 'org-capture) ;; Link a Capture
|
|||
|
|
|
|||
|
|
;; ;;(global-set-key (kbd "C-c l") 'org-store-link)
|
|||
|
|
;; (global-set-key (kbd "C-c a") 'org-agenda)
|
|||
|
|
;; (global-set-key (kbd "C-c c") 'org-capture)
|
|||
|
|
;; (global-set-key (kbd "<f12>") 'org-agenda)
|
|||
|
|
;; ;;(global-set-key (kbd "<f5>") 'bh/org-todo)
|
|||
|
|
;; ;;(global-set-key (kbd "<S-f5>") 'bh/widen)
|
|||
|
|
;; ;;(global-set-key (kbd "<f7>") 'bh/set-truncate-lines)
|
|||
|
|
;; ;;(global-set-key (kbd "<f8>") 'org-cycle-agenda-files)
|
|||
|
|
;; ;;(global-set-key (kbd "<f9> <f9>") 'bh/show-org-agenda)
|
|||
|
|
;; ;;(global-set-key (kbd "<f9> b") 'bbdb)
|
|||
|
|
;; ;;(global-set-key (kbd "<f9> c") 'calendar)
|
|||
|
|
;; ;;(global-set-key (kbd "<f9> f") 'boxquote-insert-file)
|
|||
|
|
;; ;;(global-set-key (kbd "<f9> g") 'gnus)
|
|||
|
|
;; ;;(global-set-key (kbd "<f9> h") 'bh/hide-other)
|
|||
|
|
;; ;;(global-set-key (kbd "<f9> n") 'bh/toggle-next-task-display)
|
|||
|
|
;; ;;(global-set-key (kbd "<f9> I") 'bh/punch-in)
|
|||
|
|
;; ;;(global-set-key (kbd "<f9> O") 'bh/punch-out)
|
|||
|
|
;; ;;(global-set-key (kbd "<f9> o") 'bh/make-org-scratch)
|
|||
|
|
;; ;;(global-set-key (kbd "<f9> r") 'boxquote-region)
|
|||
|
|
;; ;;(global-set-key (kbd "<f9> s") 'bh/switch-to-scratch)
|
|||
|
|
;; ;;(global-set-key (kbd "<f9> t") 'bh/insert-inactive-timestamp)
|
|||
|
|
;; ;;(global-set-key (kbd "<f9> T") 'bh/toggle-insert-inactive-timestamp)
|
|||
|
|
;; ;;(global-set-key (kbd "<f9> v") 'visible-mode)
|
|||
|
|
;; ;;(global-set-key (kbd "<f9> l") 'org-toggle-link-display)
|
|||
|
|
;; ;;(global-set-key (kbd "<f9> SPC") 'bh/clock-in-last-task)
|
|||
|
|
;; ;;(global-set-key (kbd "C-<f9>") 'previous-buffer)
|
|||
|
|
;; ;;(global-set-key (kbd "M-<f9>") 'org-toggle-inline-images)
|
|||
|
|
;; ;;(global-set-key (kbd "C-x n r") 'narrow-to-region)
|
|||
|
|
;; ;;(global-set-key (kbd "C-<f10>") 'next-buffer)
|
|||
|
|
;; (global-set-key (kbd "<f11>") 'org-clock-goto)
|
|||
|
|
;; (global-set-key (kbd "C-<f11>") 'org-clock-in)
|
|||
|
|
;; ;;(global-set-key (kbd "C-<f12>") 'bh/save-then-publish)
|
|||
|
|
#+END_SRC
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
* Upgrade
|
|||
|
|
;; * Upgrade
|
|||
|
|
;;
|
|||
|
|
;; ** Correzione Refil:
|
|||
|
|
;; Il refil non funziona più, non mi permette di cambiare file, per ovviare, ho visto il
|
|||
|
|
;; sito [[https://blog.aaronbieber.com/2017/03/19/organizing-notes-with-refile.html][Organizing Notes With Refile]] che mi dà questa ocnfigurazione:
|
|||
|
|
;; #+begin_src emacs-lisp
|
|||
|
|
;; ;; I want to be able to move a node to any of my agenda files,
|
|||
|
|
;; ;; and I also want to consider nodes up to three levels deep.
|
|||
|
|
;; (setq org-refile-targets '((org-agenda-files :maxlevel . 3)))
|
|||
|
|
;; ;; Refile to the Top Level
|
|||
|
|
;; (setq org-refile-use-outline-path 'file)
|
|||
|
|
;; ;; But, if you use Helm, which you really should, you will notice that as soon
|
|||
|
|
;; ;; as you set this option, your target list contains only one filename. Typing
|
|||
|
|
;; ;; to complete may allow you to find another filename within your agenda files,
|
|||
|
|
;; ;; but you will only ever see a filename; no other headings ever appear!
|
|||
|
|
;; ;; Why is that?!
|
|||
|
|
;; ;; It took a bit of searching to find this solution. This is because the
|
|||
|
|
;; ;; default behavior for Refile is to allow you to do a step-by-step completion
|
|||
|
|
;; ;; of this path, but if you’re using Helm, Helm is overriding the completing
|
|||
|
|
;; ;; read to make it into a narrowing list (that we have all come to love).
|
|||
|
|
;; ;; So what you need to do is tell Org that you don’t want to complete in steps;
|
|||
|
|
;; ;; you want Org to generate all of the possible completions and present them at
|
|||
|
|
;; ;; once. Helm then lets you narrow to the one you want.
|
|||
|
|
;; (setq org-outline-path-complete-in-steps nil)
|
|||
|
|
;; ;; Creating New Parents
|
|||
|
|
;; (setq org-refile-allow-creating-parent-nodes 'confirm)
|
|||
|
|
;; #+end_src
|
|||
|
|
;; Altro sito interessante, che ho trovato dopo: [[https://yiming.dev/blog/2018/03/02/my-org-refile-workflow/][My org-refile workflow]]
|
|||
|
|
;;
|
|||
|
|
;; ** Inserito ox-twbs: exporting to HTML with a Twitter Bootstrap theme
|
|||
|
|
;; Da [[https://github.com/marsmining/ox-twbs][GITHub]] ricavato l'esporter per esportare i file org, come documenti HTML compatibili
|
|||
|
|
;; con il [[http://getbootstrap.com/][Twitter Bootstrap]].
|
|||
|
|
;; #+BEGIN_SRC emacs-lisp
|
|||
|
|
;; (use-package ox-twbs
|
|||
|
|
;; :ensure t)
|
|||
|
|
;; #+END_SRC
|