Add pop-os-specific Emacs configuration file
This commit is contained in:
parent
dbbbd5b820
commit
109c5ec939
2 changed files with 118 additions and 0 deletions
|
@ -96,6 +96,7 @@
|
||||||
(configurations
|
(configurations
|
||||||
(list
|
(list
|
||||||
(local-file "../services/emacs/init.el")
|
(local-file "../services/emacs/init.el")
|
||||||
|
(local-file "pop-os/emacs.el")
|
||||||
(mixed-text-file
|
(mixed-text-file
|
||||||
"init.el"
|
"init.el"
|
||||||
"(with-eval-after-load 'project (require 'oni-project))\n"
|
"(with-eval-after-load 'project (require 'oni-project))\n"
|
||||||
|
|
117
oni/home/config/pop-os/emacs.el
Normal file
117
oni/home/config/pop-os/emacs.el
Normal file
|
@ -0,0 +1,117 @@
|
||||||
|
(defun snowball-reformat-chanced-file ()
|
||||||
|
"Run the current buffer through Pint."
|
||||||
|
(interactive)
|
||||||
|
(let ((format-file-name (concat "fmt-" (file-name-nondirectory (buffer-file-name)))))
|
||||||
|
(unwind-protect
|
||||||
|
(progn
|
||||||
|
(write-region (point-min) (point-max) format-file-name)
|
||||||
|
(shell-command
|
||||||
|
(format "%s %s"
|
||||||
|
(expand-file-name "../chanced-scripts/format" (project-root (project-current)))
|
||||||
|
(file-relative-name format-file-name (project-root (project-current))))
|
||||||
|
nil nil)
|
||||||
|
(let ((temp-buffer (find-file-noselect format-file-name)))
|
||||||
|
(unwind-protect
|
||||||
|
(replace-buffer-contents temp-buffer)
|
||||||
|
(kill-buffer temp-buffer))))
|
||||||
|
(delete-file format-file-name))))
|
||||||
|
|
||||||
|
(defun tomwpunt:enable-directory-local-modes ()
|
||||||
|
"Enable hooks and modes that are bound to specific directory."
|
||||||
|
(cond
|
||||||
|
((string-suffix-p "src/social-api/" (or (and-let* ((project (project-current)))
|
||||||
|
(project-root project))
|
||||||
|
""))
|
||||||
|
(local-set-key (kbd "C-c c") #'artisan-transient)
|
||||||
|
(when (equal major-mode 'php-mode)
|
||||||
|
(add-hook 'before-save-hook 'snowball-reformat-chanced-file nil t)))))
|
||||||
|
|
||||||
|
(add-hook 'find-file-hook 'tomwpunt:enable-directory-local-modes)
|
||||||
|
|
||||||
|
(transient-define-prefix artisan-transient ()
|
||||||
|
"A transient to run artisan commands."
|
||||||
|
["Punt"
|
||||||
|
["Composer"
|
||||||
|
("pci" "Install" artisan-punt-composer-install)]
|
||||||
|
["Artisan"
|
||||||
|
("pac" "Run Command" artisan-punt-run-command)
|
||||||
|
("pam" "Migrate" artisan-punt-migrate)
|
||||||
|
("pat" "Test" artisan-punt-test)]]
|
||||||
|
["Chanced"
|
||||||
|
["Composer"
|
||||||
|
("cci" "Install" artisan-chanced-composer-install)]
|
||||||
|
["Artisan"
|
||||||
|
("cac" "Run Command" artisan-chanced-run-command)
|
||||||
|
("cam" "Migrate" artisan-chanced-migrate)
|
||||||
|
("cat" "Test" artisan-chanced-test)]])
|
||||||
|
|
||||||
|
(defun artisan-punt-composer-install ()
|
||||||
|
(interactive)
|
||||||
|
(let ((default-directory (expand-file-name "punt" (project-root (project-current)))))
|
||||||
|
(async-shell-command "docker exec -it punt-backend composer install")))
|
||||||
|
|
||||||
|
(defun artisan-chanced-composer-install ()
|
||||||
|
(interactive)
|
||||||
|
(let ((default-directory (expand-file-name "chanced" (project-root (project-current)))))
|
||||||
|
(async-shell-command "docker exec -it chanced-backend composer install")))
|
||||||
|
|
||||||
|
(defun artisan-punt-run-command (command)
|
||||||
|
(interactive
|
||||||
|
(list
|
||||||
|
(read-string "Command: ")))
|
||||||
|
(let ((default-directory (expand-file-name "punt" (project-root (project-current)))))
|
||||||
|
(async-shell-command (format "docker exec -it punt-backend php artisan %s" command))))
|
||||||
|
|
||||||
|
(defun artisan-chanced-run-command (command)
|
||||||
|
(interactive
|
||||||
|
(list
|
||||||
|
(read-string "Command: ")))
|
||||||
|
(let ((default-directory (expand-file-name "chanced" (project-root (project-current)))))
|
||||||
|
(async-shell-command (format "docker exec -it chanced-backend php artisan %s" command))))
|
||||||
|
|
||||||
|
(defun artisan-punt-migrate ()
|
||||||
|
(interactive)
|
||||||
|
(let ((default-directory (expand-file-name "punt" (project-root (project-current)))))
|
||||||
|
(async-shell-command "docker exec -it punt-backend php artisan migrate")))
|
||||||
|
|
||||||
|
(defun artisan-chanced-migrate ()
|
||||||
|
(interactive)
|
||||||
|
(let ((default-directory (expand-file-name "chanced" (project-root (project-current)))))
|
||||||
|
(async-shell-command "docker exec -it chanced-backend php artisan migrate")))
|
||||||
|
|
||||||
|
(defun artisan-punt-test (pick)
|
||||||
|
(interactive "P")
|
||||||
|
(artisan--test-internal pick "punt" "chanced"))
|
||||||
|
|
||||||
|
(defun artisan-chanced-test (pick)
|
||||||
|
(interactive "P")
|
||||||
|
(artisan--test-internal pick "chanced" "punt"))
|
||||||
|
|
||||||
|
(defvar artisan--test-last-command nil
|
||||||
|
"The last testing commnand that was run in the test buffer.
|
||||||
|
This variable should always be buffer local and only set in test
|
||||||
|
buffers.")
|
||||||
|
(make-variable-buffer-local 'artisan--test-last-command)
|
||||||
|
|
||||||
|
(defun artisan--test-internal (pick name ignore)
|
||||||
|
(let* ((default-directory (expand-file-name name (project-root (project-current))))
|
||||||
|
(buffer-name (format "*%s Tests*" (capitalize name)))
|
||||||
|
(buffer (get-buffer-create buffer-name))
|
||||||
|
(files (cons '("all" . "")
|
||||||
|
(mapcar (lambda (dir) (cons (file-name-nondirectory dir) dir))
|
||||||
|
(directory-files-recursively "../" (rx "Test.php") nil (lambda (subdir) (not (or (string-suffix-p "vendor" subdir) (string-suffix-p ignore subdir))))))))
|
||||||
|
(command (with-current-buffer buffer
|
||||||
|
(or (and (not pick) artisan--test-last-command)
|
||||||
|
(format "../../chanced-scripts/test %s %s"
|
||||||
|
name (map-elt files (completing-read "File: " files nil t))))))
|
||||||
|
(compilation-scroll-output t))
|
||||||
|
(cl-letf (((symbol-function 'compilation-buffer-name)
|
||||||
|
(lambda (&rest args) buffer-name)))
|
||||||
|
(compile command))
|
||||||
|
(with-current-buffer buffer
|
||||||
|
(setq artisan--test-last-command command)
|
||||||
|
(local-set-key (kbd "g")
|
||||||
|
(lambda ()
|
||||||
|
(interactive)
|
||||||
|
(artisan--test-internal nil name ignore)))
|
||||||
|
(local-set-key (kbd "q") #'bury-buffer))))
|
Loading…
Reference in a new issue