Browse Source

Added neat custom function to save buffer modifying functions to file

master
Raphael Roberts 6 years ago
parent
commit
55b9f2f798
  1. 52
      python-conf.el

52
python-conf.el

@ -19,8 +19,48 @@
(setcar venv-partition-name (1+ (apply 'max (mapcar #'car venv-conflicts)))))
(rlbr/join-venv-with-number venv-partition-name)))
;; We'll save using file-precious-flag, so avoid destroying
;; symlinks. (If we're not already visiting the buffer, this is
;; handled by find-file-visit-truename, above.)
(defun rlbr/save-buffer-func-to-file (visit-file func args)
"Rip off of custom-save-all"
(let* ((filename visit-file)
(recentf-exclude (if recentf-mode
(append
`(,(concat "\\`" (regexp-quote (recentf-expand-file-name visit-file)) "\\'")
,(concat "\\`" (regexp-quote (file-truename (recentf-expand-file-name visit-file))) "\\'"))
recentf-exclude)))
(old-buffer (find-buffer-visiting filename))
old-buffer-name)
(with-current-buffer
(let ((find-file-visit-truename t))
(or old-buffer
(let ((delay-mode-hooks t))
(find-file-noselect filename))))
(when old-buffer
(setq old-buffer-name
(buffer-file-name))
(set-visited-file-name
(file-chase-links filename)))
(unless (eq major-mode
'emacs-lisp-mode)
(delay-mode-hooks
(emacs-lisp-mode)))
(let ((inhibit-read-only t)
(print-length nil)
(print-level nil))
(apply func args))
(let ((file-precious-flag t))
(save-buffer))
(if old-buffer
(progn
(set-visited-file-name
old-buffer-name)
(set-buffer-modified-p nil))
(kill-buffer (current-buffer))))))
(defun rlbr/setup-python-venv-dirlocals (&optional library-root)
"Setup .dir-locals file inf library root and tell vc system to ignore .dir-locals file"
"Setup .dir-locals file in library root and tell vc system to ignore .dir-locals file"
(let* ((library-root (if library-root
library-root
(elpy-library-root)))
@ -29,14 +69,8 @@
".dir-locals.el"))
(venv-name (rlbr/get-venv-name
library-root)))
(message default-directory)
(find-file dir-locals-path)
(add-dir-local-variable
'python-mode
'pyvenv-workon
venv-name)
(save-buffer)
(kill-buffer)))
(rlbr/save-buffer-func-to-file dir-locals-path 'add-dir-local-variable
`(python-mode pyvenv-workon ,venv-name))))
(defun rlbr/init-python-venv-in-library-root (&optional library-root)
"If no venv is specified in the library root .dir-locals file, prompt to either create one or use default"

Loading…
Cancel
Save