diff options
| author | Paul Eggert | 2017-10-20 22:44:13 -0700 |
|---|---|---|
| committer | Paul Eggert | 2017-10-20 22:44:13 -0700 |
| commit | 3155cb1585da7235145d76791feaf6170d8be0f1 (patch) | |
| tree | 19b655867f27bb630b182f4bdb00a2e2d5ee6427 /doc/misc | |
| parent | cb29f41624e5163a0aea4bfc98591e683807a2f8 (diff) | |
| parent | 11bd8aa24b347f75e674528dd1a94b0a4037105e (diff) | |
| download | emacs-3155cb1585da7235145d76791feaf6170d8be0f1.tar.gz emacs-3155cb1585da7235145d76791feaf6170d8be0f1.zip | |
Merge from origin/emacs-26
11bd8aa24b Fix flymake's loading of subr-x
b500e06f4d Fix Bug#28896
d815de017b Skip a Flymake test for old gcc versions
fd3d8610b2 Make :align-to account for display-line-numbers
831eafc8ae Augment Flymake API for third-party extensions
ddd547fada Improve treatment of Fortran's "class default"
234b1e3864 Flymake backends must check proc obsoleteness in source bu...
3ea6a4d4ba Skip an rsync test in tramp-tests.el
25f83fa7c5 ; Indentation fixes
4d578d432d On Windows default a frame's border width to zero (Bug#28873)
6f1dea5c74 Spelling fixes
b8433b0954 Use pop-to-buffer-same-window instead of switch-to-buffer
2f7163fb72 Fix the MSDOS build.
2551d28fe8 Fix line number display after 'widen'
dc8812829b Remove resizable attribute on macOS undecorated frames (bu...
b970a4a52a Fix handling of `border-width' in `frameset--restore-frame...
445e92658f Mention how to send CC to > 1 address in a bug report
8ca6fa585a Improve format-time-string doc
2e1b3522b8 Improve documentation of 'line-number-display-width'
5b6e59cfdb Implement vc-default-dir-extra-headers for vc-rcs
22adeca42a In NEWS give advice on use of `switch-to-buffer' (Bug#28645)
2c3e6f1ddc Dont update primary selection with winner-undo
b38724ab67 Work around ImageMagick bug 825
20cc68e871 Document rectangle-preview option more (Bug#27974)
a0b7b301dd Do not reject https://gnu.org in commit messages
fb4200a875 Fix Edebug spec for cl-defun (bug#24255)
db68cefe72 Fix errors in kmacro.el post-command-hook
c63b344c3d Fix range-error in image-dired.el
081d2187c4 Fix 'line-number-display-width' in hscrolled windows
16e85456e7 Fix error in tramp-smb-handle-insert-directory
613db8d35c Don't reject PBM header whitespace unnecessarily
3205b12a78 Fix regression in display of PPM images
1ca9ae7069 Require subr-x when compiling nnimap.el
de60992053 Fix ert-test finding by symbol (Bug#28849)
51615a8082 Don't remember old debugger window (Bug#17882)
5980de3727 Disable python native completion on w32 (Bug#28580)
616b4c5956 Let select-frame-by-name choose any frame when called from...
8eb3c01dbd * lisp/dired-aux.el (dired-create-directory): Doc fix.
325dfdae13 Avoid compilation warnings in optimized builds
f79382819c ; * src/composite.c (Fclear_composition_cache): Fix last c...
f95cd5cd70 Improve customization of arabic-shaper-ZWNJ-handling.
a7f154688d Improve customization type of 'mouse-drag-and-drop-region'
864734d112 ; Prefer https: to http: in GNU URLs
3c78960a47 Encourage https: in commit messages
def9715282 ; Cleanup of etc/NEWS
4e59ecc646 Fix wording in Elisp manual's child frames section (Bug#28...
eda9f5018c Another fix for C mode fontification of w32 source files
05aadd8990 Fix fontification of ALIGN_STACK functions
aa0c38f358 Make sure thread stack is properly aligned on MS-Windows
d7038020aa Do not under-align pseudovectors
ff33053012 Fix indentation bug in multi-line CSS selectors
8968be822e ; * etc/NEWS: Grammar and spelling fixes
716b84034d gnutls_mac_get_nonce_size has been added in gnutls 3.3
55e313f7be ; * CONTRIBUTE: More suggestions for using US English.
622c675648 * CONTRIBUTE: Suggest American English.
# Conflicts:
# etc/NEWS
# msdos/sed2v2.inp
Diffstat (limited to 'doc/misc')
| -rw-r--r-- | doc/misc/flymake.texi | 75 |
1 files changed, 49 insertions, 26 deletions
diff --git a/doc/misc/flymake.texi b/doc/misc/flymake.texi index 05d879d8f4b..b0a56492bcd 100644 --- a/doc/misc/flymake.texi +++ b/doc/misc/flymake.texi | |||
| @@ -361,34 +361,38 @@ priority but without an overlay face. | |||
| 361 | (flymake-category . flymake-note)))) | 361 | (flymake-category . flymake-note)))) |
| 362 | @end example | 362 | @end example |
| 363 | 363 | ||
| 364 | @vindex flymake-text | 364 | @vindex flymake-diagnostics |
| 365 | @vindex flymake-diagnostic-backend | ||
| 366 | @vindex flymake-diagnostic-buffer | ||
| 367 | @vindex flymake-diagnostic-text | ||
| 368 | @vindex flymake-diagnostic-beg | ||
| 369 | @vindex flymake-diagnostic-end | ||
| 365 | As you might have guessed, Flymake's annotations are implemented as | 370 | As you might have guessed, Flymake's annotations are implemented as |
| 366 | overlays (@pxref{Overlays,,, elisp, The Emacs Lisp Reference Manual}). | 371 | overlays (@pxref{Overlays,,, elisp, The Emacs Lisp Reference Manual}). |
| 367 | Along with the properties that you specify for the specific type of | 372 | Along with the properties that you specify for the specific type of |
| 368 | diagnostic, Flymake adds the property @code{flymake-text} to these | 373 | diagnostic, Flymake adds the property @code{flymake-diagnostic} to |
| 369 | overlays, and sets it to the message string that the backend used to | 374 | these overlays, and sets it to the object that the backend created |
| 370 | describe the diagnostic. | 375 | with @code{flymake-make-diagnostic}. |
| 371 | 376 | ||
| 372 | Since overlays also support arbitrary keymaps, you can use this | 377 | Since overlays also support arbitrary keymaps, you can use this along |
| 373 | property @code{flymake-text} to create interactive annotations, such | 378 | with the functions @code{flymake-diagnostics} and |
| 374 | as in the following example of binding a @kbd{mouse-3} event (middle | 379 | @code{flymake-diagnostic-text} (@pxref{Flymake utility functions}) to |
| 375 | mouse button click) to an Internet search for the text of a | 380 | create interactive annotations, such as in the following example of |
| 376 | @code{:warning} or @code{:error}. | 381 | binding a @code{mouse-3} event (middle mouse button click) to an |
| 382 | Internet search for the text of a @code{:warning} or @code{:error}. | ||
| 377 | 383 | ||
| 378 | @example | 384 | @example |
| 379 | (defun my-search-for-message (event) | 385 | (defun my-search-for-message (event) |
| 380 | (interactive "e") | 386 | (interactive "e") |
| 381 | (let ((ovs (overlays-at (posn-point (event-start event)))) | 387 | (let* ((diags (flymake-diagnostics (posn-point (event-start event)))) |
| 382 | ov) | 388 | (topmost-diag (car diags))) |
| 383 | ;; loop until flymake overlay we clicked on is recovered | 389 | (eww-browse-url |
| 384 | (while (not (overlay-get (setq ov (pop ovs)) 'flymake-text))) | 390 | (concat |
| 385 | (when ov | 391 | "https://duckduckgo.com/?q=" |
| 386 | (eww-browse-url | 392 | (replace-regexp-in-string " " |
| 387 | (concat "https://duckduckgo.com/?q=" | 393 | "+" |
| 388 | (replace-regexp-in-string " " | 394 | (flymake-diagnostic-text topmost-diag))) |
| 389 | "+" | 395 | t))) |
| 390 | (overlay-get ov 'flymake-text))) | ||
| 391 | t)))) | ||
| 392 | 396 | ||
| 393 | (dolist (type '(:warning :error)) | 397 | (dolist (type '(:warning :error)) |
| 394 | (let ((a (assoc type flymake-diagnostic-types-alist))) | 398 | (let ((a (assoc type flymake-diagnostic-types-alist))) |
| @@ -513,6 +517,24 @@ Make a Flymake diagnostic for @var{buffer}'s region from @var{beg} to | |||
| 513 | of the problem detected in this region. | 517 | of the problem detected in this region. |
| 514 | @end deffn | 518 | @end deffn |
| 515 | 519 | ||
| 520 | @cindex access diagnostic object | ||
| 521 | These objects' properties can be accessed with the functions | ||
| 522 | @code{flymake-diagnostic-backend}, @code{flymake-diagnostic-buffer}, | ||
| 523 | @code{flymake-diagnostic-text}, @code{flymake-diagnostic-beg}, | ||
| 524 | @code{flymake-diagnostic-end} and @code{flymake-diagnostic-type}. | ||
| 525 | |||
| 526 | Additionally, the function @code{flymake-diagnostics} will collect | ||
| 527 | such objects in the region you specify. | ||
| 528 | |||
| 529 | @cindex collect diagnostic objects | ||
| 530 | @deffn Function flymake-diagnostics beg end | ||
| 531 | Get a list of Flymake diagnostics in the region determined by | ||
| 532 | @var{beg} and @var{end}. If neither @var{beg} or @var{end} is | ||
| 533 | supplied, use the whole buffer, otherwise if @var{beg} is | ||
| 534 | non-@code{nil} and @var{end} is @code{nil}, consider only diagnostics | ||
| 535 | at @var{beg}. | ||
| 536 | @end deffn | ||
| 537 | |||
| 516 | @cindex buffer position from line and column number | 538 | @cindex buffer position from line and column number |
| 517 | It is often the case with external syntax tools that a diagnostic's | 539 | It is often the case with external syntax tools that a diagnostic's |
| 518 | position is reported in terms of a line number, and sometimes a column | 540 | position is reported in terms of a line number, and sometimes a column |
| @@ -520,9 +542,10 @@ number. To convert this information into a buffer position, backends | |||
| 520 | can use the following function: | 542 | can use the following function: |
| 521 | 543 | ||
| 522 | @deffn Function flymake-diag-region buffer line &optional col | 544 | @deffn Function flymake-diag-region buffer line &optional col |
| 523 | Compute @var{buffer}'s region (@var{beg} . @var{end}) corresponding to | 545 | Compute @var{buffer}'s region (@var{beg} . @var{end}) corresponding |
| 524 | @var{line} and @var{col}. If @var{col} is nil, return a region just | 546 | to @var{line} and @var{col}. If @var{col} is @code{nil}, return a |
| 525 | for @var{line}. Return nil if the region is invalid. | 547 | region just for @var{line}. Return @code{nil} if the region is |
| 548 | invalid. | ||
| 526 | @end deffn | 549 | @end deffn |
| 527 | 550 | ||
| 528 | @cindex add a log message | 551 | @cindex add a log message |
| @@ -560,7 +583,7 @@ Binding,,, elisp, The Emacs Lisp Reference Manual}) to be active. | |||
| 560 | 583 | ||
| 561 | (defun ruby-flymake (report-fn &rest _args) | 584 | (defun ruby-flymake (report-fn &rest _args) |
| 562 | ;; Not having a ruby interpreter is a serious problem which should cause | 585 | ;; Not having a ruby interpreter is a serious problem which should cause |
| 563 | ;; the backend to disable itself, so an @code{error} is signalled. | 586 | ;; the backend to disable itself, so an @code{error} is signaled. |
| 564 | ;; | 587 | ;; |
| 565 | (unless (executable-find | 588 | (unless (executable-find |
| 566 | "ruby") (error "Cannot find a suitable ruby")) | 589 | "ruby") (error "Cannot find a suitable ruby")) |
| @@ -600,7 +623,7 @@ Binding,,, elisp, The Emacs Lisp Reference Manual}) to be active. | |||
| 600 | ;; `ruby--flymake-proc', which indicates that | 623 | ;; `ruby--flymake-proc', which indicates that |
| 601 | ;; `proc' is not an obsolete process. | 624 | ;; `proc' is not an obsolete process. |
| 602 | ;; | 625 | ;; |
| 603 | (if (eq proc ruby--flymake-proc) | 626 | (if (with-current-buffer source (eq proc ruby--flymake-proc)) |
| 604 | (with-current-buffer (process-buffer proc) | 627 | (with-current-buffer (process-buffer proc) |
| 605 | (goto-char (point-min)) | 628 | (goto-char (point-min)) |
| 606 | ;; Parse the output buffer for diagnostic's | 629 | ;; Parse the output buffer for diagnostic's |
| @@ -625,7 +648,7 @@ Binding,,, elisp, The Emacs Lisp Reference Manual}) to be active. | |||
| 625 | msg) | 648 | msg) |
| 626 | into diags | 649 | into diags |
| 627 | finally (funcall report-fn diags))) | 650 | finally (funcall report-fn diags))) |
| 628 | (flymake-log :warning "Cancelling obsolete check %s" | 651 | (flymake-log :warning "Canceling obsolete check %s" |
| 629 | proc)) | 652 | proc)) |
| 630 | ;; Cleanup the temporary buffer used to hold the | 653 | ;; Cleanup the temporary buffer used to hold the |
| 631 | ;; check's output. | 654 | ;; check's output. |