diff --git a/.config/htop/htoprc b/.config/htop/htoprc index a1c6722..285dac4 100644 --- a/.config/htop/htoprc +++ b/.config/htop/htoprc @@ -1,6 +1,6 @@ # Beware! This file is rewritten by htop when settings are changed in the interface. # The parser is also very primitive, and not human-friendly. -fields=0 48 17 18 38 39 2 46 47 49 1 +fields=0 48 17 18 38 39 2 46 47 49 1 0 sort_key=46 sort_direction=1 hide_threads=0 diff --git a/.emacs.d/core.el b/.emacs.d/core.el index 813e57c..45eb9fc 100644 --- a/.emacs.d/core.el +++ b/.emacs.d/core.el @@ -318,7 +318,8 @@ (define-key c-mode-base-map "\C-m" 'c-context-line-break) (unless is-fb-environment (set-fill-column 120)) - (local-set-key "}" 'indent-on-closing-bracket)) + ;; (local-set-key "}" 'indent-on-closing-bracket) + ) (add-hook 'c-mode-common-hook 'my-c-common-hook) @@ -619,22 +620,28 @@ :modes python-mode) (add-to-list 'flycheck-checkers 'python-fb-flake8) -(when is-fb-environment - (add-hook 'python-mode-hook - (lambda () - (flycheck-select-checker `python-fb-flake8))) - ) - (global-flycheck-mode) ;; ================================================================= ;; Python Support ;; ================================================================= (autoload 'python-mode "python-mode" "Python editing mode." t) +(autoload 'blacken-mode "blacken" "Automatically run black before saving." t) (add-to-list 'auto-mode-alist '("\\.py$" . python-mode)) (add-to-list 'interpreter-mode-alist '("python" . python-mode)) +(defun my-python-mode-hook () + "My hook for `python-mode`." + (when is-fb-environment + (flycheck-select-checker `python-fb-flake8)) + (unless (and (buffer-file-name) + (string-match-p "TARGETS" (buffer-file-name))) + (blacken-mode))) + +(add-hook 'python-mode-hook 'my-python-mode-hook) + + ;; ================================================================= ;; JavaScript Support ;; ================================================================= @@ -779,68 +786,68 @@ ;; Some build stuff; I swiped this from handmade-hero. Good for ;; unibuild setups. ;; ================================================================= -(when (featurep 'w32) - (setq doty-makescript "build.bat")) +;; (when (featurep 'w32) +;; (setq doty-makescript "build.bat")) -(when (featurep 'cocoa) - (setq doty-makescript "./build.macosx")) +;; (when (featurep 'cocoa) +;; (setq doty-makescript "./build.macosx")) -(when (featurep 'x) - (setq doty-makescript "./build.linux")) +;; (when (featurep 'x) +;; (setq doty-makescript "./build.linux")) -(setq compilation-directory-locked nil) -(setq compilation-context-lines 0) -(setq compilation-error-regexp-alist - (cons '("^\\([0-9]+>\\)?\\(\\(?:[a-zA-Z]:\\)?[^:(\t\n]+\\)(\\([0-9]+\\)) : \\(?:fatal error\\|warnin\\(g\\)\\) C[0-9]+:" 2 3 nil (4)) - compilation-error-regexp-alist)) +;; (setq compilation-directory-locked nil) +;; (setq compilation-context-lines 0) +;; (setq compilation-error-regexp-alist +;; (cons '("^\\([0-9]+>\\)?\\(\\(?:[a-zA-Z]:\\)?[^:(\t\n]+\\)(\\([0-9]+\\)) : \\(?:fatal error\\|warnin\\(g\\)\\) C[0-9]+:" 2 3 nil (4)) +;; compilation-error-regexp-alist)) -(defun find-project-directory-recursive () - "Recursively search for a makefile." - (interactive) - (if (file-exists-p doty-makescript) t - (cd "../") - (find-project-directory-recursive))) +;; (defun find-project-directory-recursive () +;; "Recursively search for a makefile." +;; (interactive) +;; (if (file-exists-p doty-makescript) t +;; (cd "../") +;; (find-project-directory-recursive))) -(defun lock-compilation-directory () - "The compilation process should NOT hunt for a makefile." - (interactive) - (setq compilation-directory-locked t) - (message "Compilation directory is locked.")) +;; (defun lock-compilation-directory () +;; "The compilation process should NOT hunt for a makefile." +;; (interactive) +;; (setq compilation-directory-locked t) +;; (message "Compilation directory is locked.")) -(defun unlock-compilation-directory () - "The compilation process SHOULD hunt for a makefile." - (interactive) - (setq compilation-directory-locked nil) - (message "Compilation directory is roaming.")) +;; (defun unlock-compilation-directory () +;; "The compilation process SHOULD hunt for a makefile." +;; (interactive) +;; (setq compilation-directory-locked nil) +;; (message "Compilation directory is roaming.")) -(defun find-project-directory () - "Find the project directory." - (interactive) - (setq find-project-from-directory default-directory) - (switch-to-buffer-other-window "*compilation*") - (if compilation-directory-locked (cd last-compilation-directory) - (cd find-project-from-directory) - (find-project-directory-recursive) - (setq last-compilation-directory default-directory))) +;; (defun find-project-directory () +;; "Find the project directory." +;; (interactive) +;; (setq find-project-from-directory default-directory) +;; (switch-to-buffer-other-window "*compilation*") +;; (if compilation-directory-locked (cd last-compilation-directory) +;; (cd find-project-from-directory) +;; (find-project-directory-recursive) +;; (setq last-compilation-directory default-directory))) -(defun make-without-asking () - "Make the current build." - (interactive) - (if (find-project-directory) (compile doty-makescript)) - (other-window 1)) -(define-key global-map "\C-c\C-m" 'make-without-asking) +;; (defun make-without-asking () +;; "Make the current build." +;; (interactive) +;; (if (find-project-directory) (compile doty-makescript)) +;; (other-window 1)) +;; (define-key global-map "\C-c\C-m" 'make-without-asking) -(defun set-vs-environment () - "Load the VS environment variables into the current Emacs process." - (interactive) - (dolist - (ev (split-string - (shell-command-to-string "cmd /c \" \"%ProgramFiles(x86)%\\Microsoft Visual Studio 14.0\\VC\\vcvarsall.bat\" x64 && set \"") - "[\n]+")) - (letrec ((spev (split-string ev "=")) - (vn (car spev)) - (vv (cadr spev))) - (setenv vn vv)))) +;; (defun set-vs-environment () +;; "Load the VS environment variables into the current Emacs process." +;; (interactive) +;; (dolist +;; (ev (split-string +;; (shell-command-to-string "cmd /c \" \"%ProgramFiles(x86)%\\Microsoft Visual Studio 14.0\\VC\\vcvarsall.bat\" x64 && set \"") +;; "[\n]+")) +;; (letrec ((spev (split-string ev "=")) +;; (vn (car spev)) +;; (vv (cadr spev))) +;; (setenv vn vv)))) ;; ================================================================= diff --git a/.emacs.d/custom.el b/.emacs.d/custom.el index f846985..5d1d59e 100644 --- a/.emacs.d/custom.el +++ b/.emacs.d/custom.el @@ -50,7 +50,7 @@ ((sequence "TODO" "|" "DONE" "ABANDONED" "DEFERRED")))) '(package-selected-packages (quote - (fsharp-mode lsp-ui company-lsp cquery mustache-mode clang-format projectile dash-functional mocha add-node-modules-path rjsx-mode xref-js2 js2-refactor company omnisharp geiser cider clojure-mode graphviz-dot-mode multi-term xterm-color thrift markdown-mode tuareg merlin ag use-package flycheck dockerfile-mode js2-mode web-mode zencoding-mode tss switch-window python-mode paredit magit lua-mode go-mode go-autocomplete exec-path-from-shell csharp-mode color-theme-solarized color-theme-monokai auto-complete auto-complete-nxml flymake flyspell json-mode popup ruby-mode company-jedi tide ahg elm-mode monky))) + (wgrep fsharp-mode company-lsp cquery mustache-mode clang-format projectile dash-functional mocha add-node-modules-path rjsx-mode xref-js2 js2-refactor company omnisharp geiser cider clojure-mode graphviz-dot-mode multi-term xterm-color thrift markdown-mode tuareg merlin ag use-package flycheck dockerfile-mode js2-mode web-mode zencoding-mode tss switch-window python-mode paredit magit lua-mode go-mode go-autocomplete exec-path-from-shell csharp-mode color-theme-solarized color-theme-monokai auto-complete auto-complete-nxml flymake flyspell json-mode popup ruby-mode company-jedi tide ahg elm-mode monky))) '(reb-re-syntax (quote string)) '(rmail-mail-new-frame t) '(safe-local-variable-values diff --git a/.tmux.conf b/.tmux.conf index d993166..2686020 100644 --- a/.tmux.conf +++ b/.tmux.conf @@ -6,7 +6,7 @@ bind-key C-b last-window set -g base-index 1 # Allows for faster key repetition -# set -s escape-time 0 +#set -s escape-time 0 # Set status bar set -g status-bg black @@ -14,9 +14,6 @@ set -g status-fg white set -g status-left "" set -g status-right "#[fg=green]#H" -# COLORS -set -g default-terminal "screen-256color" - # Rather than constraining window size to the maximum size of any client # connected to the *session*, constrain window size to the maximum size of any # client connected to *that window*. Much more reasonable. @@ -27,14 +24,25 @@ setw -g aggressive-resize on bind-key a send-prefix # Fix control keys through putty +# (It looks like on some versions of tmux this needs to be setw not set.) set -g xterm-keys on +setw -g xterm-keys on + +# Colors? +set -g default-terminal "screen-256color" # Activity monitoring -# setw -g monitor-activity on -# set -g visual-activity on +#setw -g monitor-activity on +#set -g visual-activity on # Example of using a shell command in the status line -# set -g status-right "#[fg=yellow]#(uptime | cut -d ',' -f 2-)" +# set -g status-right "#[fg=yellow]#(date)" # Highlight active window set-window-option -g window-status-current-bg red + +# set-window-option -g mouse on +set -g history-limit 30000 + +# fish! +set-option -g default-shell /bin/fish \ No newline at end of file diff --git a/site-lisp/blacken.el b/site-lisp/blacken.el new file mode 100644 index 0000000..5120cab --- /dev/null +++ b/site-lisp/blacken.el @@ -0,0 +1,124 @@ +;;; blacken.el --- Reformat python buffers using the "black" formatter + +;; Copyright (C) 2018 Artem Malyshev + +;; Author: Artem Malyshev +;; Homepage: https://github.com/proofit404/blacken +;; Version: 0.0.1 +;; Package-Requires: ((emacs "25.2")) + +;; This file is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published +;; by the Free Software Foundation; either version 3, or (at your +;; option) any later version. +;; +;; This file is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. +;; +;; For a full copy of the GNU General Public License +;; see . + +;;; Commentary: +;; +;; Blacken uses black to format a Python buffer. It can be called +;; explicitly on a certain buffer, but more conveniently, a minor-mode +;; 'blacken-mode' is provided that turns on automatically running +;; black on a buffer before saving. +;; +;; Installation: +;; +;; Add blacken.el to your load-path. +;; +;; To automatically format all Python buffers before saving, add the +;; function blacken-mode to python-mode-hook: +;; +;; (add-hook 'python-mode-hook 'blacken-mode) +;; +;;; Code: + + +(defgroup blacken nil + "Reformat Python code with \"black\"." + :group 'python) + +(defcustom blacken-executable "black" + "Name of the executable to run." + :type 'string) + +(defcustom blacken-line-length nil + "Line length to enforce." + :type 'number + :safe 'numberp) + +(defun blacken-call-bin (input-buffer output-buffer error-buffer) + "Call process black. + +Send INPUT-BUFFER content to the process stdin. Saving the +output to OUTPUT-BUFFER. Saving process stderr to ERROR-BUFFER. +Return black process the exit code." + (with-current-buffer input-buffer + (let ((process (make-process :name "blacken" + :command `(,blacken-executable ,@(blacken-call-args)) + :buffer output-buffer + :stderr error-buffer + :noquery t + :sentinel (lambda (process event))))) + (set-process-query-on-exit-flag (get-buffer-process error-buffer) nil) + (set-process-sentinel (get-buffer-process error-buffer) (lambda (process event))) + (save-restriction + (widen) + (process-send-region process (point-min) (point-max))) + (process-send-eof process) + (accept-process-output process nil nil t) + (while (process-live-p process) + (accept-process-output process nil nil t)) + (process-exit-status process)))) + +(defun blacken-call-args () + "Build black process call arguments." + (append + (when blacken-line-length + (list "--line-length" (number-to-string blacken-line-length))) + '("-"))) + +;;;###autoload +(defun blacken-buffer (&optional display) + "Try to blacken the current buffer. + +Show black output, if black exit abnormally and DISPLAY is t." + (interactive (list t)) + (let* ((original-buffer (current-buffer)) + (original-point (point)) + (original-window-pos (window-start)) + (tmpbuf (get-buffer-create "*blacken*")) + (errbuf (get-buffer-create "*blacken-error*"))) + ;; This buffer can be left after previous black invocation. It + ;; can contain error message of the previous run. + (dolist (buf (list tmpbuf errbuf)) + (with-current-buffer buf + (erase-buffer))) + (condition-case err + (if (not (zerop (blacken-call-bin original-buffer tmpbuf errbuf))) + (error "Black failed, see %s buffer for details" (buffer-name errbuf)) + (with-current-buffer tmpbuf + (copy-to-buffer original-buffer (point-min) (point-max))) + (mapc 'kill-buffer (list tmpbuf errbuf)) + (goto-char original-point) + (set-window-start (selected-window) original-window-pos)) + (error (message "%s" (error-message-string err)) + (when display + (pop-to-buffer errbuf)))))) + +;;;###autoload +(define-minor-mode blacken-mode + "Automatically run black before saving." + :lighter " Black" + (if blacken-mode + (add-hook 'before-save-hook 'blacken-buffer nil t) + (remove-hook 'before-save-hook 'blacken-buffer t))) + +(provide 'blacken) + +;;; blacken.el ends here