Skip to content
Snippets Groups Projects
Commit 670e3c61 authored by Pierre Balaye's avatar Pierre Balaye
Browse files

smartparens layer defined

parent 3b90cc58
No related branches found
No related tags found
No related merge requests found
...@@ -5,4 +5,5 @@ mefs_indent_message "Directory tree creation..." ...@@ -5,4 +5,5 @@ mefs_indent_message "Directory tree creation..."
mkdir -p $mefs_EMACSDIR/sources mkdir -p $mefs_EMACSDIR/sources
mkdir -p $mefs_EMACSDIR/flavors/ mkdir -p $mefs_EMACSDIR/flavors/
ln -sf $mefs_THISREPODIR/configs $mefs_EMACSDIR/ ln -sf $mefs_THISREPODIR/configs $mefs_EMACSDIR/
ln -sf $mefs_THISREPODIR/layers $mefs_EMACSDIR/
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
;; csv ;; csv
;; -------- Applications ;; -------- Applications
;; org org
;; gnus ;; gnus
;; fasd ;; fasd
lsp lsp
......
(defun dotspacemacs/user-config-specific () (defun dotspacemacs/user-config-specific ()
(ulys/config/org)
(ulys/config/ess)
)
; ESS config
(defun ulys/config/ess ()
(ulys/conf/ess-devtools-save-silentely)
(add-hook 'ess-mode-hook
(lambda ()
(define-key ess-mode-map (kbd ";") 'ess-insert-assign)
(define-key ess-mode-map (kbd "C-;") 'ulys/conf/ess-insert-magrittr-pipe)
(define-key ess-mode-map (kbd "C-:")
'ulys/conf/ess-insert-right-assign-operator)
(define-key ess-mode-map (kbd "C-x C-j")
'ess-eval-line-invisibly-and-step)
(define-key ess-mode-map (kbd "C-`") 'ulys/conf/ess-backquote-from-dollar)
(define-key ess-mode-map (kbd "C-~") 'ulys/conf/ess-backquote-delete-df$)
)))
(defun ulys/conf/ess-insert-magrittr-pipe ()
"Insert magrittr pipe at i.e. \"%>%\"."
(interactive)
(insert "\n %>% "))
(defun ulys/conf/ess-insert-right-assign-operator ()
"Insert \"->\"."
(interactive)
(insert " -> "))
(defun ulys/conf/ess-devtools-save-silentely ()
(setq ess-save-silently t))
(defun ulys/conf/ess-backquote-from-dollar ()
"Surround with backquotes form last $ till point."
(interactive)
(insert "`")
(setq initial-position (point))
(evil-find-char-to-backward 1 (string-to-char "$"))
(insert "`")
(goto-char (+ 1 initial-position)))
(defun ulys/conf/ess-backquote-delete-df$ ()
(interactive)
(ulys/conf/ess-backquote-from-dollar)
(evil-find-char-to-backward 1 (string-to-char "$"))
(setq dollar-position (point))
(evil-backward-WORD-begin)
(evil-sp-delete (point) dollar-position)
(evil-find-char 1 (string-to-char "`"))
(evil-forward-char)
)
;; Org config
(defun ulys/config/org ()
(ulys/config/org/misc)
(ulys/config/org/babel)
(ulys/config/org-calendar)
;; (ulys/config/org-minted)
;; (ulys/config/org-odt-export-latexml)
;; (ulys/config/org-capture)
;; (ulys/config/org-file-apps)
)
(defun ulys/config/org/misc ()
(setq org-list-allow-alphabetical t)
(setq org-hide-emphasis-markers t)
;; <sTAB => src block
(require 'org-tempo)
)
(defun ulys/config/org/babel () (defun ulys/config/org/babel ()
;; FIXME julia bug - hack I have opened issue #13597 (setq org-src-window-setup 'current-window)
;; FIXME julia bug - hack - have opened issue #13597
(setq inferior-julia-program-name "julia") (setq inferior-julia-program-name "julia")
(custom-set-variables (custom-set-variables
...@@ -15,5 +80,152 @@ ...@@ -15,5 +80,152 @@
(sql . t) (sql . t)
))) )))
'(org-confirm-babel-evaluate nil))) '(org-confirm-babel-evaluate nil)))
(ulys/config/org/babel) (defun ulys/org-insert-csv-as-table (filename)
) "Insert a csv file into the current buffer at point, and convert it to an org table."
(interactive (list (ido-read-file-name "csv file: ")))
(let* ((start (point))
(end (+ start (nth 1 (insert-file-contents filename)))))
(org-table-convert-region start end)))
(defun ulys/config/org-capture ()
(setq org-default-notes-file "~/Nextcloud/org/tasks.org" )
(setq org-capture-templates
'(("t" "Thesis-related Task" entry
(file "~/Nextcloud/org/thesis.org")
"** TODO %?" :empty-lines 1)
("u" "Teaching-related Task" entry
(file "~/Nextcloud/org/teaching.org")
"** TODO %?" :empty-lines 1)
("h" "Hospital-related Task" entry
(file "~/Nextcloud/org/hospital.org")
"** TODO %?" :empty-lines 1))))
(defun ulys/config/org-file-apps ()
(defun ulys/org-pdf-app (file-path link-without-schema)
"Open pdf file using pdf-tools and go to the specified page."
(let* ((page (if (not (string-match "\\.pdf::\\([0-9]+\\)\\'"
link-without-schema))
1
(string-to-number (match-string 1 link-without-schema)))))
(find-file-other-window file-path)
(pdf-view-goto-page page)))
(setq org-file-apps
'((auto-mode . emacs)
("\\.x?html?\\'" . "firefox %s")
("\\.pdf\\(::[0-9]+\\)?\\'" . whatacold/org-pdf-app)
("\\.gif\\'" . "eog \"%s\"")
("\\.mp4\\'" . "vlc \"%s\"")
("\\.mkv" . "vlc \"%s\""))))
(defun ulys/config/org-calendar ()
(setq calendar-week-start-day 1))
(defun ulys/org//capture-helper-capture-with-yank-method (method arg)
;; helper 1/2
(defun wrap-into-results-example (capture)
(concat
"#+RESULTS:\n"
"#+ATTR_LATEX: :options frame=lines\n"
"#+BEGIN_SRC R :eval no :tangle no\n"
capture
"\n#+END_SRC\n"))
;; helper 2/2
(defun choose-process (arg)
(if (or arg ;; user asks for selection
(not (boundp 'R-process-target)) ;; target not set
;; or target is not set to an active process:
(not (process-live-p (get-buffer-process
R-process-target))))
(setq R-process-target
(completing-read
"Choose R process: "
(seq-map (lambda (el) (buffer-name (process-buffer el)))
(process-list))))))
;; main
(choose-process arg)
(insert (wrap-into-results-example
(funcall method R-process-target))))
(defun ulys/org/tibble-capture (arg)
"Let the user choose a R process, then kill last tibble output
in the process and insert it in current buffer in a org
#+RESULTS: format."
(interactive "P")
;; helper 1/3
(defun extract-nrows-from-tibble-first-line (line)
"Extract the number N in the pattern: # A tibble N x M"
(let* (( line-without-commas (replace-regexp-in-string "," "" line))
( x-position (string-match " x" line-without-commas))
( nrow-start-at (length "# A tibble ")))
(string-to-number
(substring line-without-commas nrow-start-at x-position))))
;; helper 3/3
(defun yank-last-tibble-from-buffer (buffer)
(interactive)
(save-current-buffer
(set-buffer buffer)
(search-backward "tibble")
(beginning-of-line)
(let* ((tibble-beg (point))
(nrow (extract-nrows-from-tibble-first-line (thing-at-point 'line t)))
(tibble-end (progn
(message "nrow: %d" nrow)
(re-search-forward (concat "^" (number-to-string (min 10 nrow))))
(while (search-forward "#" nil t)) ;; t means no error
(end-of-line)
(point))))
(buffer-substring tibble-beg tibble-end))))
;; main
(ulys/org//capture-helper-capture-with-yank-method 'yank-last-tibble-from-buffer arg))
(defun ulys/org/glimpse-capture (arg)
"Let the user choose a R process, then kill last glimpse output
in the process and insert it in current buffer in a org
#+RESULTS: format."
(interactive "P")
;; helper 1
(defun extract-nb-vars-from-glimpse-second-line (line)
"Extract the number N in the pattern: Variables: N"
(let (( nb-vars-start-at (length "Varialbes: "))
( nb-vars-end-at (length line)))
(string-to-number
(substring line nb-vars-start-at nb-vars-end-at))))
;; helper 2
(defun suppress_$_in_front_of_lines (lines)
(replace-regexp-in-string "^\$ " "" lines))
;; helper 3
(defun yank-last-glimpse-from-buffer (buffer)
(interactive)
(save-current-buffer
(set-buffer buffer)
(search-backward "Observations: ")
(beginning-of-line)
(let* ((glimpse-beg (point))
(nrow (progn
(forward-line)
(extract-nb-vars-from-glimpse-second-line
(thing-at-point 'line t))))
(glimpse-end (progn
(forward-line nrow)
(end-of-line)
(point))))
(suppress_$_in_front_of_lines
(buffer-substring glimpse-beg glimpse-end) ))))
;; main
(ulys/org//capture-helper-capture-with-yank-method 'yank-last-glimpse-from-buffer arg))
(defun ulys/config/org-minted ()
(setq org-latex-listings 'minted
org-latex-packages-alist '(("" "minted"))
org-latex-pdf-process
'("pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f"
"pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f"
"pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f")))
(defun ulys/config/org-odt-export-latexml ()
(setq org-latex-to-mathml-convert-command"latexmlmath \"%i\" --presentationmathml=%o"))
...@@ -41,6 +41,7 @@ This function should only modify configuration layer settings." ...@@ -41,6 +41,7 @@ This function should only modify configuration layer settings."
;; List of additional paths where to look for configuration layers. ;; List of additional paths where to look for configuration layers.
;; Paths must have a trailing slash (i.e. `~/.mycontribs/') ;; Paths must have a trailing slash (i.e. `~/.mycontribs/')
dotspacemacs-configuration-layer-path '() dotspacemacs-configuration-layer-path '()
;; List of additional packages that will be installed without being ;; List of additional packages that will be installed without being
;; wrapped in a layer. If you need some configuration for these ;; wrapped in a layer. If you need some configuration for these
;; packages, then consider creating a layer. You can also put the ;; packages, then consider creating a layer. You can also put the
...@@ -48,7 +49,8 @@ This function should only modify configuration layer settings." ...@@ -48,7 +49,8 @@ This function should only modify configuration layer settings."
;; To use a local version of a package, use the `:location' property: ;; To use a local version of a package, use the `:location' property:
;; '(your-package :location "~/path/to/your-package/") ;; '(your-package :location "~/path/to/your-package/")
;; Also include the dependencies as they will not be resolved automatically. ;; Also include the dependencies as they will not be resolved automatically.
dotspacemacs-additional-packages '() dotspacemacs-additional-packages '(
)
;; A list of packages that cannot be updated. ;; A list of packages that cannot be updated.
dotspacemacs-frozen-packages '() dotspacemacs-frozen-packages '()
...@@ -75,6 +77,8 @@ This function should only modify configuration layer settings." ...@@ -75,6 +77,8 @@ This function should only modify configuration layer settings."
helm-no-header t) helm-no-header t)
emacs-lisp emacs-lisp
git git
org
smartparens
) )
) )
...@@ -274,11 +278,11 @@ It should only modify the values of Spacemacs settings." ...@@ -274,11 +278,11 @@ It should only modify the values of Spacemacs settings."
;; If non-nil then the last auto saved layouts are resumed automatically upon ;; If non-nil then the last auto saved layouts are resumed automatically upon
;; start. (default nil) ;; start. (default nil)
dotspacemacs-auto-resume-layouts nil dotspacemacs-auto-resume-layouts t
;; If non-nil, auto-generate layout name when creating new layouts. Only has ;; If non-nil, auto-generate layout name when creating new layouts. Only has
;; effect when using the "jump to layout by number" commands. (default nil) ;; effect when using the "jump to layout by number" commands. (default nil)
dotspacemacs-auto-generate-layout-names nil dotspacemacs-auto-generate-layout-names t
;; Size (in MB) above which spacemacs will prompt to open the large file ;; Size (in MB) above which spacemacs will prompt to open the large file
;; literally to avoid performance issues. Opening a file literally means that ;; literally to avoid performance issues. Opening a file literally means that
...@@ -505,6 +509,8 @@ If you are unsure, try setting them in `dotspacemacs/user-config' first." ...@@ -505,6 +509,8 @@ If you are unsure, try setting them in `dotspacemacs/user-config' first."
;; -------------------------------------------------- ;; --------------------------------------------------
;; ------ Configuration common to all versions ------ ;; ------ Configuration common to all versions ------
;; -------------------------------------------------- ;; --------------------------------------------------
(message (concat user-emacs-directory "../../layers/"))
;; (setq-default dotspacemacs-configuration-layer-path '(concat user-emacs-directory "../../layers/"))
;; -------------------------------------------------- ;; --------------------------------------------------
...@@ -541,8 +547,10 @@ before packages are loaded." ...@@ -541,8 +547,10 @@ before packages are loaded."
;; -------------------------------------------------- ;; --------------------------------------------------
;; ------ Configuration common to all versions ------ ;; ------ Configuration common to all versions ------
;; -------------------------------------------------- ;; --------------------------------------------------
(setq undo-tree-auto-save-history t)
(setq hybrid-style-enable-hjkl-bindings t) (ulys/conf/general)
(ulys/conf/dired)
(ulys/conf/kbd)
;; -------------------------------------------------- ;; --------------------------------------------------
;; ----- Configuration specific to this version ----- ;; ----- Configuration specific to this version -----
...@@ -551,5 +559,54 @@ before packages are loaded." ...@@ -551,5 +559,54 @@ before packages are loaded."
(dotspacemacs/user-config-specific) (dotspacemacs/user-config-specific)
) )
; general config
(defun ulys/conf/general ()
(setq undo-tree-auto-save-history t)
(setq vc-follow-symlinks t) ;; To edit .spacemacs without to be prompted each time
(setq hybrid-style-enable-hjkl-bindings t)
(spacemacs/toggle-centered-point-globally-on)
;; add time in powerline
(display-time-mode 1)
;; New frame will open fullscreen
(add-to-list 'default-frame-alist '(fullscreen . fullboth))
)
; dired config
(defun ulys/conf/dired ()
;; helpers
(defun ulys/dired-open-current-dir ()
(interactive)
(spacemacs/dired "."))
(defun ulys/conf/dired/kbd/C-hjkl ()
(evil-define-key '(normal) dired-mode-map (kbd "C-h") 'dired-up-directory)
(evil-define-key '(normal) dired-mode-map (kbd "C-j") 'evil-next-line)
(evil-define-key '(normal) dired-mode-map (kbd "C-k") 'evil-previous-line)
(evil-define-key '(normal) dired-mode-map (kbd "C-l") 'dired-find-alternate-file))
;; Auto-refresh dired on file change
(add-hook 'dired-mode-hook 'auto-revert-mode)
(spacemacs/set-leader-keys "ad" 'ulys/dired-open-current-dir)
;; (hide .~undo-tree~ files)
(setq dired-omit-verbose nil)
(add-hook 'dired-mode-hook (lambda () (dired-omit-mode)))
(ulys/conf/dired/kbd/C-hjkl))
; kbd config
(defun ulys/conf/kbd ()
;; --- others
;; C-h to delete buffer and C-S-h for help
(global-set-key (kbd "C-h") 'spacemacs/kill-this-buffer)
;; Simulates vim increment and decrement number
(define-key evil-normal-state-map (kbd "C-a C-a") 'evil-numbers/inc-at-pt)
(define-key evil-normal-state-map (kbd "C-x C-x") 'evil-numbers/dec-at-pt)
)
;; Do not write anything past this comment. This is where Emacs will ;; Do not write anything past this comment. This is where Emacs will
;; auto-generate custom variable definitions. ;; auto-generate custom variable definitions.
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
;; csv ;; csv
;; -------- Applications ;; -------- Applications
;; org org
;; gnus ;; gnus
;; fasd ;; fasd
lsp lsp
...@@ -50,5 +50,11 @@ ...@@ -50,5 +50,11 @@
;; ------- ;; -------
;; theming ;; theming
)) ))
dotspacemacs-additional-packages
(append dotspacemacs-additional-packages
'(
)
)
) )
) )
(defun dotspacemacs/user-config-specific () (defun dotspacemacs/user-config-specific ()
(defun ulys/config/org/babel () (defun ulys/config/org/babel ()
;; FIXME julia bug - hack I have opened issue #13597 ;; FIXME julia bug - hack I have opened issue #13597
(setq inferior-julia-program-name "julia") (setq inferior-julia-program-name "julia")
...@@ -15,5 +16,9 @@ ...@@ -15,5 +16,9 @@
(sql . t) (sql . t)
))) )))
'(org-confirm-babel-evaluate nil))) '(org-confirm-babel-evaluate nil)))
(ulys/config/org/babel) (ulys/config/org/babel)
(require 'org-tempo)
) )
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment