diff --git a/.emacs.d/custom.el b/.emacs.d/custom.el index 346cbc8..7e0ab1b 100644 --- a/.emacs.d/custom.el +++ b/.emacs.d/custom.el @@ -22,7 +22,7 @@ '(company-minimum-prefix-length 1) '(css-indent-offset 2) '(custom-safe-themes - '("0568a5426239e65aab5e7c48fa1abde81130a87ddf7f942613bf5e13bf79686b" "d6da24347c813d1635a217d396cf1e3be26484fd4d05be153f3bd2b293d2a0b5" "7b3ce93a17ce4fc6389bba8ecb9fee9a1e4e01027a5f3532cc47d160fe303d5a" "3dbb18bf06f41012d4525e6c64c392d6cfef06a2f8fe1bf7b565c4e020255466" "8db4b03b9ae654d4a57804286eb3e332725c84d7cdab38463cb6b97d5762ad26" default)) + '("6fc03df7304728b1346091dd6737cb0379f348ddc9c307f8b410fba991b3e475" "d0fb0c463d5d61e93f920e0fd1aa4c023bf719874b4d08f7f473b46c4adc0682" "78e6be576f4a526d212d5f9a8798e5706990216e9be10174e3f3b015b8662e27" "4aee8551b53a43a883cb0b7f3255d6859d766b6c5e14bcb01bed572fcbef4328" "4cf3221feff536e2b3385209e9b9dc4c2e0818a69a1cdb4b522756bcdf4e00a4" "0edb121fdd0d3b18d527f64d3e2b57725acb152187eea9826d921736bd6e409e" "6dc02f2784b4a49dd5a0e0fd9910ffd28bb03cfebb127a64f9c575d8e3651440" "31f1723fb10ec4b4d2d79b65bcad0a19e03270fe290a3fc4b95886f18e79ac2f" "feb8e98a8a99d78c837ce35e976ebcc97abbd8806507e8970d934bb7694aa6b3" "0568a5426239e65aab5e7c48fa1abde81130a87ddf7f942613bf5e13bf79686b" "d6da24347c813d1635a217d396cf1e3be26484fd4d05be153f3bd2b293d2a0b5" "7b3ce93a17ce4fc6389bba8ecb9fee9a1e4e01027a5f3532cc47d160fe303d5a" "3dbb18bf06f41012d4525e6c64c392d6cfef06a2f8fe1bf7b565c4e020255466" "8db4b03b9ae654d4a57804286eb3e332725c84d7cdab38463cb6b97d5762ad26" "9f1d0627e756e58e0263fe3f00b16d8f7b2aca0882faacdc20ddd56a95acb7c2" "7397cc72938446348521d8061d3f2e288165f65a2dbb6366bb666224de2629bb" "fd9e60866accaa68c8bede88623478e74b7c6e7c91765b0cdf11ddf04a5ff803" "7afad8f4707c84129e4cb1e5bad4feb0a9f0db02e1cfadb029921a0bde693d1e" "82d2cac368ccdec2fcc7573f24c3f79654b78bf133096f9b40c20d97ec1d8016" "06f0b439b62164c6f8f84fdda32b62fb50b6d00e8b01c2208e55543a6337433a" default)) '(fast-lock-cache-directories '("~/flc-cache")) '(fast-lock-minimum-size nil) '(fill-column 77) @@ -58,7 +58,7 @@ '(org-odd-levels-only t) '(org-todo-keywords '((sequence "TODO" "|" "DONE" "ABANDONED" "DEFERRED"))) '(package-selected-packages - '(typescript-mode modus-themes tree-sitter flycheck-rust eglot ink-mode prettier-js zig-mode esup gnu-elpa-keyring-update lsp-hack hack-mode rust-mode filladapt lsp-ui yaml-mode 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 tss switch-window python-mode paredit magit lua-mode go-mode go-autocomplete exec-path-from-shell csharp-mode color-theme-monokai auto-complete auto-complete-nxml flymake flyspell json-mode popup ruby-mode company-jedi tide elm-mode monky)) + '(howm python-mode color-theme-sanityinc-solarized monokai-theme rust-mode tide typescript-mode modus-themes tree-sitter flycheck-rust eglot ink-mode prettier-js zig-mode esup gnu-elpa-keyring-update lsp-hack hack-mode filladapt lsp-ui yaml-mode 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 tss switch-window paredit magit lua-mode go-mode go-autocomplete exec-path-from-shell csharp-mode color-theme-monokai auto-complete auto-complete-nxml flymake flyspell json-mode popup ruby-mode company-jedi elm-mode monky color-theme-sanityinc-tomorrow)) '(reb-re-syntax 'string) '(rmail-mail-new-frame t) '(safe-local-variable-values diff --git a/.emacs.d/init.el b/.emacs.d/init.el index acab64c..3aeee00 100644 --- a/.emacs.d/init.el +++ b/.emacs.d/init.el @@ -61,7 +61,7 @@ ;; ================================================================= ;; add private lisp directory to load-path. -(add-to-list 'load-path "~/site-lisp") +(add-to-list 'load-path (directory-file-name "~/site-lisp")) ;; ================================================================= ;; FB STUFF @@ -355,15 +355,7 @@ (eq major-mode 'c-mode)) (eglot-signal-didChangeConfiguration server))) -;; (use-package lsp-mode :ensure -;; :init (setq lsp-pyls-server-command "pyls-language-server") -;; :commands (lsp lsp-mode lsp-deferred) -;; :hook (python-mode . lsp-deferred) -;; :config -;; (use-package company-lsp -;; :config (add-to-list 'company-backends 'company-lsp)) -;; (use-package lsp-ui -;; :config (add-hook 'lsp-mode-hook 'lsp-ui-mode))) + (use-package eglot :ensure :commands (eglot-ensure eglot) :hook @@ -375,13 +367,24 @@ (let ((cpp-executable (or my-cppls-fbcode-executable my-clangd-executable))) (when cpp-executable - (add-to-list 'eglot-server-programs `((c++-mode c-mode) . (,cpp-executable))))) + (add-to-list 'eglot-server-programs + `((c++-mode c-mode) . (,cpp-executable))))) (let ((py-executable (or my-pyls-language-server-executable my-pylsp-executable my-pyls-executable))) (when py-executable - (add-to-list 'eglot-server-programs `(python-mode . (,py-executable))))) + (add-to-list 'eglot-server-programs + `(python-mode . (,py-executable))))) + + ;; 2022-04-28 Configuration for Deno. + (defclass eglot-deno (eglot-lsp-server) () + :documentation "A custom class for deno lsp.") + (cl-defmethod eglot-initialization-options ((server eglot-deno)) + (list :enable t :lint t)) + (add-to-list 'eglot-server-programs + '((js-mode typescript-mode) . (eglot-deno "deno" "lsp"))) + ;; -- (add-hook 'eglot-managed-mode-hook 'my-disable-flycheck-on-eglot) (remove-hook 'eglot-connect-hook 'eglot-signal-didChangeConfiguration) @@ -459,9 +462,12 @@ )))) (defun clang-format-cpp-buffer () - "Format a buffer with clang-format but only if it's C or C++." + "Format a buffer with clang-format but only if it's C or C++. + +Or, uh, Objective C, I guess." (when (or (eq major-mode 'c++-mode) - (eq major-mode 'c-mode)) + (eq major-mode 'c-mode) + (eq major-mode 'objc-mode)) (clang-format-buffer))) (defun my-c-mode-hook () @@ -472,6 +478,7 @@ (add-hook 'c-mode-hook 'my-c-mode-hook) (add-hook 'c++-mode-hook 'my-c-mode-hook) (add-hook 'java-mode-hook 'my-c-mode-hook) +(add-hook 'objc-mode-hook 'my-c-mode-hook) (defconst jd-more-keywords '(;; These are keywords in Microsoft C/C++ @@ -705,12 +712,6 @@ ;; ================================================================= ;; 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 @@ -719,9 +720,15 @@ (string-match-p "TARGETS" (buffer-file-name))) (blacken-mode))) -(add-hook 'python-mode-hook 'my-python-mode-hook) +(use-package python-mode :ensure + :mode "\\.py\\'" + :config + (add-to-list 'interpreter-mode-alist '("python" . python-mode)) + (add-hook 'python-mode-hook 'my-python-mode-hook)) +(autoload 'blacken-mode "blacken" "Automatically run black before saving." t) + ;; ================================================================= ;; JavaScript Support @@ -841,7 +848,23 @@ ;; ================================================================= ;; Typescript-Mode ;; ================================================================= -(use-package typescript-mode :ensure t) +(defun ts/is-deno-project () + "Return non-nil if this is a deno project, otherwise nil." + (locate-dominating-file (buffer-file-name) ".deno")) + +(defun ts/enable-eglot-or-tide () + "Enable eglot if this is a deno project, otherwise enable tide." + (if (ts/is-deno-project) + (eglot-ensure) + + ;; Not a deno project; just enable tide and the normal + (eldoc-mode) + (tide-setup) + (tide-hl-identifier-mode))) + +(use-package typescript-mode :ensure t + :config + (add-hook 'typescript-mode-hook 'ts/enable-eglot-or-tide)) (use-package add-node-modules-path :ensure t :hook typescript-mode) @@ -849,10 +872,7 @@ (use-package prettier-js :ensure t :hook (typescript-mode . prettier-js-mode)) -(use-package tide :ensure t - :hook ((typescript-mode . eldoc-mode) - (typescript-mode . tide-setup) - (typescript-mode . tide-hl-identifier-mode))) +(use-package tide :ensure t) ;; ================================================================= ;; Archive mode for appx @@ -1038,8 +1058,15 @@ ;; ================================================================ ;; Pico-8 ;; ================================================================ +(defun my-pico8-hook () + "My hook for pico-8 mode." + ;; Pico-8 has a small indent. + (setq lua-indent-level 2) + (set-fill-column 32)) + (use-package pico8-mode - :mode (("\\.p8\\'" . pico8-mode))) + :mode (("\\.p8\\'" . pico8-mode)) + :config (add-hook 'pico8-mode-hook 'my-pico8-hook)) ;; ================================================================ ;; Ink @@ -1060,5 +1087,52 @@ :config (add-hook 'ink-mode-hook 'my-ink-mode-hook)) +;; ================================================================= +;; Note taking +;; ================================================================= +;; howm http://howm.osdn.jp/ +;; Based on http://dotyl.ink/l/kc56hcn64e + +(defvar my-dropbox-dir + (expand-file-name + (cond + ((file-directory-p "~/Dropbox (Personal)") "~/Dropbox (Personal)") + ((file-directory-p "~/Dropbox") "~/Dropbox") + ((file-directory-p "/mnt/c/Users/john/Dropbox") "/mnt/c/Users/john/Dropbox"))) + "Where is my dropbox?") + +(use-package howm :ensure + :init + ;; Directory configuration + ;; + ;; (This is in :init because apparently you need to set this stuff before + ;; you load howm?) + (setq howm-home-directory (expand-file-name "notes/howm" my-dropbox-dir)) + (setq howm-directory howm-home-directory) + (make-directory howm-directory t) + (setq howm-keyword-file (expand-file-name ".howm-keys" howm-home-directory)) + (setq howm-history-file (expand-file-name ".howm-history" howm-home-directory)) + (setq howm-file-name-format "%Y/%m/%Y-%m-%d-%H%M%S.md") + + ;; Use ripgrep as grep + (setq howm-view-use-grep t) + (setq howm-view-grep-command "rg") + (setq howm-view-grep-option "-nH --no-heading --color never") + (setq howm-view-grep-extended-option nil) + (setq howm-view-grep-fixed-option "-F") + (setq howm-view-grep-expr-option nil) + (setq howm-view-grep-file-stdin-option nil) + + :config + ;; un-bind control-h from the howm thing + (define-key howm-menu-mode-map "\C-h" nil) + (define-key riffle-summary-mode-map "\C-h" nil) + (define-key howm-view-contents-mode-map "\C-h" nil) + + ;; Rename buffers to their title + (add-hook 'howm-mode-hook 'howm-mode-set-buffer-name) + (add-hook 'after-save-hook 'howm-mode-set-buffer-name) + ) + ;;; init.el ends here diff --git a/.emacs.d/network-security.data b/.emacs.d/network-security.data index ecf4eef..6bc1597 100644 --- a/.emacs.d/network-security.data +++ b/.emacs.d/network-security.data @@ -1,5 +1,7 @@ ( - (:id "sha1:24c7a1e6369fef1e50de1deb1a9e5bbc68f80c8b" :fingerprint "sha1:26:26:88:6a:58:94:85:2f:98:ce:97:a0:0d:93:75:63:0a:9e:44:b5" :host "orgmode.org:443" :conditions (:insecure :unknown-ca :invalid)) + (:id "sha1:6d4eb958390599243ba9f5035cb671fa8dd6a93a" :fingerprints ("sha1:56:41:11:79:62:b9:85:66:f8:9e:e4:3b:39:2d:5f:a6:a5:c7:e9:2d" "sha1:7b:75:42:b2:7f:94:3e:67:6a:fe:e1:3f:af:ae:df:58:6e:aa:f1:54") :host "elpa.gnu.org:443" :conditions (:expired :invalid :same-cert)) + (:id "sha1:24c7a1e6369fef1e50de1deb1a9e5bbc68f80c8b" :fingerprints ("sha1:cf:5a:90:ac:6f:03:dd:c2:55:9b:d7:bf:0e:f1:bc:73:4b:99:60:ce" "sha1:ae:78:68:42:66:8d:8b:fe:7d:76:cf:cc:bd:d3:c7:9f:32:b8:01:58") :host "orgmode.org:443" :conditions (:expired :invalid :same-cert)) + (:id "sha1:85b31c268009209a8d3c5387033b219264f7e62b" :fingerprints ("sha1:0c:bd:68:cb:c0:01:e2:ad:93:0d:b9:3b:77:09:2e:47:9c:de:6b:28" "sha1:de:74:ee:90:bf:b8:e5:20:54:66:5b:bc:6f:6b:d5:75:a8:f7:db:cb") :host "melpa.org:443" :conditions (:expired :invalid :same-cert)) (:id "sha1:60f141fb7e2767fbc9d5f309850c9db8bfaadb86" :fingerprint "sha1:f3:eb:c5:20:3c:f3:c8:79:46:3b:2d:d4:b7:c2:12:09:54:0e:d9:3b" :host "github-production-release-asset-2e65be.s3.amazonaws.com:443" :conditions (:insecure :unknown-ca :invalid)) (:id "sha1:379522f41fcdf5d279b33c30780e7512c9348430" :fingerprint "sha1:d4:ee:9d:2a:67:12:b3:61:4c:27:2d:15:8b:04:fc:c8:ca:08:a0:b6" :host "github.com:443" :conditions (:insecure :unknown-ca :invalid)) (:id "sha1:85457c729378cc93c732b6a3941c8e4f9c2e60f3" :fingerprint "sha1:ab:a6:d7:6a:b3:d3:63:fa:19:0d:65:41:60:23:6e:ef:d3:2a:46:dc" :host "marmalade-repo.org:443" :conditions (:unknown-ca :invalid)) diff --git a/bin/fossil b/bin/fossil index b599555..0e04126 100755 Binary files a/bin/fossil and b/bin/fossil differ diff --git a/vscode/settings.json b/vscode/settings.json index c544fac..57e5ab0 100644 --- a/vscode/settings.json +++ b/vscode/settings.json @@ -1,71 +1,78 @@ { - "breadcrumbs.enabled": true, - "editor.rulers": [ - 80 - ], - "editor.formatOnSave": true, - "editor.formatOnPaste": true, - "editor.minimap.enabled": false, - "editor.minimap.maxColumn": 80, - "git.enableSmartCommit": true, - "clang-format.fallbackStyle": "llvm", - "fb.remote-connections.hosts": [ - { - "hostname": "our.doty.sb.facebook.com", - "folders": [ - "/data/users/doty/configerator/", - "/data/users/doty/configerator-dsi/", - "/data/users/doty/configerator-hg/", - "/data/users/doty/configerator-puma/", - "/data/users/doty/databee/", - "/data/users/doty/dataswarm-git/", - "/data/users/doty/dataswarm-hg/", - "/data/users/doty/fbsource/", - "/data/users/doty/jepsen/", - "/data/users/doty/mysql-schemas/", - "/data/users/doty/opsfiles-hg/", - "/data/users/doty/www-hg/" - ] - } - ], - "editor.fontFamily": "Fira Code, Input Mono Narrow, Consolas, Menlo, Monaco, 'Courier New', monospace", - "editor.fontSize": 14, - "editor.fontLigatures": true, - "editor.formatOnSaveTimeout": 1500, - "window.zoomLevel": 1, - "terminal.integrated.shell.windows": "C:\\WINDOWS\\System32\\cmd.exe", - "C_Cpp.clang_format_fallbackStyle": "llvm", - "latex-workshop.view.pdf.viewer": "tab", - "glitch.token": "687fb628-3a2e-4405-9bfb-49fc51068fbb", - "calva.paredit.defaultKeyMap": "original", - "interactive-smartlog.pull": "arc pull", - "interactive-smartlog.fetch": "jf get", - "[json]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "[javascript]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "[typescript]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "[cpp]": { - "editor.defaultFormatter": "ms-vscode.cpptools" - }, - "pyls.BuckFormatOnSave": true, - "pyls.formatAlreadyFormattedFilesOnSave": true, - "fb.ms-remote-connections.hosts": [ - { - "hostname": "our.doty.sb.facebook.com", - "folders": [] - } - ], - "terminal.integrated.shell.linux": "/usr/bin/fish", - "workbench.colorTheme": "Monokai", - "editor.suggestSelection": "first", - "files.associations": { - "*.gadget": "thrift" - }, - "fb.doctor.kerberos-keychain": true, - "editor.suggest.snippetsPreventQuickSuggestions": false + "breadcrumbs.enabled": true, + "editor.rulers": [80], + "editor.formatOnSave": true, + "editor.formatOnPaste": true, + "editor.minimap.enabled": false, + "editor.minimap.maxColumn": 80, + "git.enableSmartCommit": true, + "clang-format.fallbackStyle": "llvm", + "fb.remote-connections.hosts": [ + { + "hostname": "our.doty.sb.facebook.com", + "folders": [ + "/data/users/doty/configerator/", + "/data/users/doty/configerator-dsi/", + "/data/users/doty/configerator-hg/", + "/data/users/doty/configerator-puma/", + "/data/users/doty/databee/", + "/data/users/doty/dataswarm-git/", + "/data/users/doty/dataswarm-hg/", + "/data/users/doty/fbsource/", + "/data/users/doty/jepsen/", + "/data/users/doty/mysql-schemas/", + "/data/users/doty/opsfiles-hg/", + "/data/users/doty/www-hg/" + ] + } + ], + "editor.fontFamily": "Fira Code, Input Mono Narrow, Consolas, Menlo, Monaco, 'Courier New', monospace", + "editor.fontSize": 14, + "editor.fontLigatures": true, + "editor.formatOnSaveTimeout": 1500, + "terminal.integrated.shell.windows": "C:\\WINDOWS\\System32\\cmd.exe", + "C_Cpp.clang_format_fallbackStyle": "llvm", + "latex-workshop.view.pdf.viewer": "tab", + "glitch.token": "687fb628-3a2e-4405-9bfb-49fc51068fbb", + "calva.paredit.defaultKeyMap": "original", + "interactive-smartlog.pull": "arc pull", + "interactive-smartlog.fetch": "jf get", + "[json]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[javascript]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[typescript]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[cpp]": { + "editor.defaultFormatter": "nuclide.cpp" + }, + "pyls.BuckFormatOnSave": true, + "pyls.formatAlreadyFormattedFilesOnSave": true, + "fb.ms-remote-connections.hosts": [ + { + "hostname": "our.doty.sb.facebook.com", + "folders": [] + } + ], + "terminal.integrated.shell.linux": "/usr/bin/fish", + "workbench.colorTheme": "Monokai", + "editor.suggestSelection": "first", + "files.associations": { + "*.gadget": "thrift" + }, + "fb.doctor.kerberos-keychain": true, + "editor.suggest.snippetsPreventQuickSuggestions": false, + "security.workspace.trust.untrustedFiles": "open", + "git.autofetch": true, + "fb.ms-remote-connections.odtypes": [ + { + "type": "ondemand_fbcode", + "flavor": "default", + "folders": [] + } + ], + "hg.jumpToNextConflictOnSave": "Jump On Save And Open ISL When Done" }