Add new file
This commit is contained in:
@@ -0,0 +1,157 @@
|
|||||||
|
;; GETTING STARTED
|
||||||
|
|
||||||
|
;; INITIALIZE MELPA PACKAGES
|
||||||
|
;; Keep this on top
|
||||||
|
;; https://melpa.org/#/getting-started
|
||||||
|
(require 'package)
|
||||||
|
(let* ((no-ssl (and (memq system-type '(windows-nt ms-dos))
|
||||||
|
(not (gnutls-available-p))))
|
||||||
|
(url (concat (if no-ssl "http" "https") "://melpa.org/packages/")))
|
||||||
|
(add-to-list 'package-archives (cons "melpa" url) t))
|
||||||
|
(when (< emacs-major-version 24)
|
||||||
|
;; For important compatibility libraries like cl-lib
|
||||||
|
(add-to-list 'package-archives '("gnu" . "http://elpa.gnu.org/packages/")))
|
||||||
|
(package-initialize)
|
||||||
|
|
||||||
|
;; setting the default directory for extra packages
|
||||||
|
(add-to-list 'load-path "~/.emacs.d/lisp/")
|
||||||
|
|
||||||
|
;; SOME BASIC PREFERENCES
|
||||||
|
;; turns off the menu at top
|
||||||
|
(menu-bar-mode -1)
|
||||||
|
;; enable longlines-mode for text files
|
||||||
|
(add-hook 'text-mode-hook 'visual-line-mode)
|
||||||
|
;; load word-count tools, use "wc" command to get instant count
|
||||||
|
(load "wc-mode")
|
||||||
|
;; but normally don't initialize because it's too CPU-intensive on large files
|
||||||
|
;; (add-hook 'text-mode-hook 'wc-mode)
|
||||||
|
;; enable apsell as default spell checker
|
||||||
|
(setq-default ispell-program-name "aspell")
|
||||||
|
;; set window margins
|
||||||
|
;; (a bit buggy on multiple-window startup, but resolves)
|
||||||
|
(add-hook 'window-configuration-change-hook
|
||||||
|
(lambda ()
|
||||||
|
(set-window-margins (car
|
||||||
|
(get-buffer-window-list
|
||||||
|
(current-buffer) nil t)) 2 2)))
|
||||||
|
;; Set markdown-mode as default for markdown files
|
||||||
|
;; (can always opt out into text-mode)
|
||||||
|
(autoload 'markdown-mode "markdown-mode" "Major mode for editing Markdown files" t)
|
||||||
|
(add-to-list 'auto-mode-alist '("\\.markdown\\'" . markdown-mode))
|
||||||
|
(add-to-list 'auto-mode-alist '("\\.md\\'" . markdown-mode))
|
||||||
|
;; Turn on Flyspell (no need for lazy-mode, it seems; perhaps delete that)
|
||||||
|
;;(require 'flyspell-lazy)
|
||||||
|
;;(flyspell-lazy-mode 1)
|
||||||
|
(dolist (hook '(text-mode-hook))
|
||||||
|
(add-hook hook (lambda ()
|
||||||
|
(flyspell-mode 1)
|
||||||
|
(set-variable 'flyspell-issue-message-flag nil)
|
||||||
|
(flyspell-buffer))))
|
||||||
|
;; 4-space tabs as default
|
||||||
|
(setq-default indent-tabs-mode nil)
|
||||||
|
(setq-default tab-width 4)
|
||||||
|
(setq indent-line-function 'insert-tab)
|
||||||
|
|
||||||
|
;; BACKUP CONTROL
|
||||||
|
;; source: http://is.gd/ag5KOC
|
||||||
|
(setq backup-directory-alist '(("." . "~/.emacs.d/backup"))
|
||||||
|
backup-by-copying t ; Don't delink hardlinks
|
||||||
|
version-control t ; Use version numbers on backups
|
||||||
|
delete-old-versions t ; Automatically delete excess backups
|
||||||
|
kept-new-versions 20 ; how many of the newest versions to keep
|
||||||
|
kept-old-versions 5 ; and how many of the old
|
||||||
|
)
|
||||||
|
|
||||||
|
;; HORIZONTAL WINDOWS
|
||||||
|
;; open horizontal windows as default for multiple files
|
||||||
|
(defun 2-windows-vertical-to-horizontal ()
|
||||||
|
(let ((buffers (mapcar 'window-buffer (window-list))))
|
||||||
|
(when (= 2 (length buffers))
|
||||||
|
(delete-other-windows)
|
||||||
|
(set-window-buffer (split-window-horizontally) (cadr buffers)))))
|
||||||
|
(add-hook 'emacs-startup-hook '2-windows-vertical-to-horizontal)
|
||||||
|
|
||||||
|
;; DICT
|
||||||
|
;; For getting definitions of words
|
||||||
|
(defun dict ()
|
||||||
|
(interactive)
|
||||||
|
(let (word)
|
||||||
|
(setq word (read-string "Define: "))
|
||||||
|
(shell-command (concat "dict " word))))
|
||||||
|
|
||||||
|
;; ASCIIFY
|
||||||
|
;; replace complex curly quotes with ASCII straight ones
|
||||||
|
;; replace em-dash with ---
|
||||||
|
(defun asciify ()
|
||||||
|
(interactive)
|
||||||
|
(setq start (point))
|
||||||
|
(beginning-of-buffer)
|
||||||
|
(while (search-forward "“" nil t) (replace-match "\"" nil t))
|
||||||
|
(beginning-of-buffer)
|
||||||
|
(while (search-forward "”" nil t) (replace-match "\"" nil t))
|
||||||
|
(beginning-of-buffer)
|
||||||
|
(while (search-forward "‘" nil t) (replace-match "\'" nil t))
|
||||||
|
(beginning-of-buffer)
|
||||||
|
(while (search-forward "’" nil t) (replace-match "\'" nil t))
|
||||||
|
(beginning-of-buffer)
|
||||||
|
(while (search-forward "—" nil t) (replace-match "---" nil t))
|
||||||
|
(goto-char start))
|
||||||
|
|
||||||
|
;; PANDOC
|
||||||
|
;; for converting markdown text in buffer to another format and opening it
|
||||||
|
;; file-type argument must be a pandoc-recognized file format
|
||||||
|
;; to specify .csl file for bibliography, use YAML metadata "csl:" command
|
||||||
|
(defun pandoc ()
|
||||||
|
(interactive)
|
||||||
|
(let (file-type file-ext tmp-out-file tmp-out-file out-file current-dir)
|
||||||
|
(setq file-type (read-string "File type (epub, [html], odt, pdf, slides, etc.): "))
|
||||||
|
(setq file-ext file-type)
|
||||||
|
;; set default as html
|
||||||
|
(when (string-equal file-type "")
|
||||||
|
(setq file-type "html")
|
||||||
|
(setq file-ext "html"))
|
||||||
|
;; set up pdf routine
|
||||||
|
(when (string-equal file-type "pdf")
|
||||||
|
(setq file-type "latex --variable fontsize='11pt'"))
|
||||||
|
;; set up slides revealjs routine
|
||||||
|
(when (string-equal file-type "slides")
|
||||||
|
(setq file-ext "html")
|
||||||
|
;; Light approach, which requires web access and readable code (but speaker notes and relative paths don't work):
|
||||||
|
;; (setq file-type "revealjs --variable revealjs-url='http://lab.hakim.se/reveal-js' --standalone"))
|
||||||
|
;; Heavy embedded binary approach (relies on reveal.js/ being in ~/.pandoc/):
|
||||||
|
(setq file-type "revealjs --self-contained --variable revealjs-url='/home/ntnsndr/.revealjs/reveal.js' -V theme=ntn -V controls=false --slide-level=2"))
|
||||||
|
;; proceed
|
||||||
|
(setq tmp-in-file "/tmp/pandoc-in.txt")
|
||||||
|
(setq tmp-out-file (concat "/tmp/pandoc-out." file-ext))
|
||||||
|
(write-region nil nil tmp-in-file)
|
||||||
|
(shell-command (concat
|
||||||
|
"iconv -t utf-8 " tmp-in-file " | " ;; pipe in utf-8 for pandoc
|
||||||
|
"pandoc -s" ;; embed full header in HTML
|
||||||
|
" -f markdown+smart" ;; add curly quotes
|
||||||
|
" --bibliography /home/ntnsndr/Zotero/lib.bib" ;; connect to BibTeX export from Zotero
|
||||||
|
" -t " file-type
|
||||||
|
" -o " tmp-out-file))
|
||||||
|
;; End convert routine
|
||||||
|
(shell-command (concat "xdg-open " tmp-out-file))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
;; ORG/OX-REVEAL
|
||||||
|
;; Revealjs presentations in org-mode [[https://github.com/yjwen/org-reveal]]
|
||||||
|
;; This part was automatically added on install. Don't change:
|
||||||
|
(custom-set-variables
|
||||||
|
;; custom-set-variables was added by Custom.
|
||||||
|
;; If you edit it by hand, you could mess it up, so be careful.
|
||||||
|
;; Your init file should contain only one such instance.
|
||||||
|
;; If there is more than one, they won't work right.
|
||||||
|
'(package-selected-packages (quote (pandoc-mode ox-reveal))))
|
||||||
|
(custom-set-faces
|
||||||
|
;; custom-set-faces was added by Custom.
|
||||||
|
;; If you edit it by hand, you could mess it up, so be careful.
|
||||||
|
;; Your init file should contain only one such instance.
|
||||||
|
;; If there is more than one, they won't work right.
|
||||||
|
)
|
||||||
|
;; Initialize
|
||||||
|
(require 'ox-reveal)
|
||||||
|
(setq org-reveal-root "file:///home/ntnsndr/.revealjs/reveal.js")
|
||||||
|
;; Customization at ~/.revealjs/conf.org
|
||||||
Reference in New Issue
Block a user