github.com/tiagovtristao/plz@v13.4.0+incompatible/tools/misc/please-mode.el (about)

     1  ; Definition of Please mode for Emacs.
     2  ; Inherits from python-mode for formatting but uses lsp-mode for
     3  ; autocompletion etc.
     4  ;
     5  ; Add this to .emacs to make this load automatically.
     6  ; (add-to-list 'auto-mode-alist '("/BUILD\\'" . please-mode))
     7  ; (add-to-list 'auto-mode-alist '("/BUILD.plz\\'" . please-mode))
     8  
     9  (require 'lsp-mode)
    10  (require 'lsp-imenu)
    11  (add-hook 'lsp-after-open-hook 'lsp-enable-imenu)
    12  (use-package lsp-ui
    13    :ensure t
    14    :config
    15    (setq lsp-ui-sideline-ignore-duplicate t)
    16    (add-hook 'lsp-mode-hook 'lsp-ui-mode))
    17  
    18  (lsp-define-stdio-client
    19   please-mode
    20   "Please"
    21   (lambda () default-directory) ; TODO(peterebden): what should we do here?
    22   '("plz" "tool" "langserver"))
    23  
    24  (define-derived-mode please-mode python-mode "Please mode")
    25  
    26  (add-hook 'please-mode-hook
    27            (lambda ()
    28             (please-mode-enable)))
    29  
    30  (defun please-mode-fmt-on-save ()
    31    (interactive)
    32    (when (eq major-mode 'please-mode) (lsp-format-buffer)))
    33  
    34  (add-hook 'before-save-hook 'please-mode-fmt-on-save)
    35  
    36  (provide 'please-mode)