flymakeそしてフライスペル(flyspell)の両方のための一つのキーを使用して

StackOverflow https://stackoverflow.com/questions/1873803

  •  18-09-2019
  •  | 
  •  

質問

私は自分のPythonコードをチェックして、私の文字列やコメントを確認するためにフライスペル(flyspell)するpyflakesでflymakeを使用しています。私は次のエラーに行く一つの機能を持つようにしたい、または現在のエラーの場合、エラーに関する情報を表示します。どのように私はこの関数を書くのでしょうか?

役に立ちましたか?

解決

このコードは、次のエラーにジャンプします、そしてそれはフライスペル(flyspell)エラーだならば、それはflymakeエラーだ場合、それのための情報が表示され、それはあなたのためにそれを修正する機能を提供します。あなたは、自動補正をしたくない場合は、'my-flyspell-messageを呼び出し、'flyspell-auto-correct-wordを呼び出すその前の行を削除する行をアンコメント - とあなただけのスペルミスしている単語についてのメッセージが表示されます。

最初の行は、キーバインド C-CのN にこれを結合します。結合キーの詳細については、情報ページを参照してくださいキーバインディングはします。

(global-set-key (kbd "C-c n") 'my-display-error-or-next-error)
(defun my-display-error-or-next-error ()
  "display information for current error, or go to next one"
  (interactive)
  (when (or (not (my-at-flymake-error))
            (not (my-at-flyspell-error)))
    ;; jump to error if not at one
    (my-goto-next-error))

  (cond ((my-at-flymake-error)
         ;; if at flymake error, display menu
         (flymake-display-err-menu-for-current-line))
        ((my-at-flyspell-error)
         ;; if at flyspell error, fix it
         (call-interactively 'flyspell-auto-correct-word)
         ;; or, uncomment the next line to just get a message
         ;; (my-flyspell-message)
         )))

(defun my-at-flyspell-error ()
  "return non-nill if at flyspell error"
  (some 'flyspell-overlay-p (overlays-at (point))))

(defun my-at-flymake-error ()
  "return non-nil if at flymake error"
  (let* ((line-no             (flymake-current-line-no))
         (line-err-info-list  (nth 0 (flymake-find-err-info flymake-err-info line-no))))
    line-err-info-list))

(defun my-goto-next-error ()
  "jump to next flyspell or flymake error"
  (interactive)
  (let* ((p (point))
         (spell-next-error-function '(lambda ()
                                 (forward-word) (forward-char)
                                 (flyspell-goto-next-error)))
         (spell-pos (save-excursion
                      (funcall spell-next-error-function)
                      (point)))
         (make-pos (save-excursion
                     (flymake-goto-next-error)
                     (point))))
    (cond ((or (and (< p make-pos) (< p spell-pos))
               (and (> p make-pos) (> p spell-pos)))
           (funcall (if (< make-pos spell-pos)
                        'flymake-goto-next-error
                      spell-next-error-function)))
          ((< p make-pos)
           (flymake-goto-next-error))

          ((< p spell-pos)
           (funcall spell-next-error-function)))))

(defun my-flyspell-message ()
  (interactive)
  (let ((word (thing-at-point 'word)))
    (set-text-properties 0 (length word) nil word)
    (message "Missspelled word: %s" word)))
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top