aboutsummaryrefslogtreecommitdiffstats
path: root/doc/misc
diff options
context:
space:
mode:
authorPaul Eggert2017-10-20 22:44:13 -0700
committerPaul Eggert2017-10-20 22:44:13 -0700
commit3155cb1585da7235145d76791feaf6170d8be0f1 (patch)
tree19b655867f27bb630b182f4bdb00a2e2d5ee6427 /doc/misc
parentcb29f41624e5163a0aea4bfc98591e683807a2f8 (diff)
parent11bd8aa24b347f75e674528dd1a94b0a4037105e (diff)
downloademacs-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.texi75
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
365As you might have guessed, Flymake's annotations are implemented as 370As you might have guessed, Flymake's annotations are implemented as
366overlays (@pxref{Overlays,,, elisp, The Emacs Lisp Reference Manual}). 371overlays (@pxref{Overlays,,, elisp, The Emacs Lisp Reference Manual}).
367Along with the properties that you specify for the specific type of 372Along with the properties that you specify for the specific type of
368diagnostic, Flymake adds the property @code{flymake-text} to these 373diagnostic, Flymake adds the property @code{flymake-diagnostic} to
369overlays, and sets it to the message string that the backend used to 374these overlays, and sets it to the object that the backend created
370describe the diagnostic. 375with @code{flymake-make-diagnostic}.
371 376
372Since overlays also support arbitrary keymaps, you can use this 377Since overlays also support arbitrary keymaps, you can use this along
373property @code{flymake-text} to create interactive annotations, such 378with the functions @code{flymake-diagnostics} and
374as in the following example of binding a @kbd{mouse-3} event (middle 379@code{flymake-diagnostic-text} (@pxref{Flymake utility functions}) to
375mouse button click) to an Internet search for the text of a 380create interactive annotations, such as in the following example of
376@code{:warning} or @code{:error}. 381binding a @code{mouse-3} event (middle mouse button click) to an
382Internet 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
513of the problem detected in this region. 517of the problem detected in this region.
514@end deffn 518@end deffn
515 519
520@cindex access diagnostic object
521These 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
526Additionally, the function @code{flymake-diagnostics} will collect
527such objects in the region you specify.
528
529@cindex collect diagnostic objects
530@deffn Function flymake-diagnostics beg end
531Get a list of Flymake diagnostics in the region determined by
532@var{beg} and @var{end}. If neither @var{beg} or @var{end} is
533supplied, use the whole buffer, otherwise if @var{beg} is
534non-@code{nil} and @var{end} is @code{nil}, consider only diagnostics
535at @var{beg}.
536@end deffn
537
516@cindex buffer position from line and column number 538@cindex buffer position from line and column number
517It is often the case with external syntax tools that a diagnostic's 539It is often the case with external syntax tools that a diagnostic's
518position is reported in terms of a line number, and sometimes a column 540position 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
520can use the following function: 542can 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
523Compute @var{buffer}'s region (@var{beg} . @var{end}) corresponding to 545Compute @var{buffer}'s region (@var{beg} . @var{end}) corresponding
524@var{line} and @var{col}. If @var{col} is nil, return a region just 546to @var{line} and @var{col}. If @var{col} is @code{nil}, return a
525for @var{line}. Return nil if the region is invalid. 547region just for @var{line}. Return @code{nil} if the region is
548invalid.
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.