unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Sam Steingold <sds@gnu.org>
To: emacs-devel@gnu.org
Subject: Re: Refactoring flymake.el
Date: Thu, 17 Aug 2017 14:08:24 -0400	[thread overview]
Message-ID: <lzwp62xe1z.fsf@gnu.org> (raw)
In-Reply-To: 87378q2r62.fsf@lolita

Hi João,

One thing about flymake that inconveniences me is that I cannot disable
it for some specific files.
I have a bunch of "scratch.py" files that I use as poor man's notebooks.
To disable flymake on them, I made this chanfe to flymake.el today:

--8<---------------cut here---------------start------------->8---
diff --git a/lisp/progmodes/flymake.el b/lisp/progmodes/flymake.el
index ed34d9aaa5..edb87c92b3 100644
--- a/lisp/progmodes/flymake.el
+++ b/lisp/progmodes/flymake.el
@@ -133,6 +133,13 @@ flymake-master-file-count-limit
   :group 'flymake
   :type 'integer)
 
+(defcustom flymake-disallowed-file-name-regexp nil
+  "File names matching this regexp will not be checked.
+This overrides `flymake-allowed-file-name-masks'."
+  :group 'flymake
+  :type 'string
+  :version "26.1")
+
 (defcustom flymake-allowed-file-name-masks
   '(("\\.\\(?:c\\(?:pp\\|xx\\|\\+\\+\\)?\\|CC\\)\\'" flymake-simple-make-init)
     ("\\.xml\\'" flymake-xml-init)
@@ -228,14 +235,16 @@ flymake-get-file-name-mode-and-masks
   "Return the corresponding entry from `flymake-allowed-file-name-masks'."
   (unless (stringp file-name)
     (error "Invalid file-name"))
-  (let ((fnm flymake-allowed-file-name-masks)
-	(mode-and-masks nil))
-    (while (and (not mode-and-masks) fnm)
-      (if (string-match (car (car fnm)) file-name)
-	  (setq mode-and-masks (cdr (car fnm))))
-      (setq fnm (cdr fnm)))
-    (flymake-log 3 "file %s, init=%s" file-name (car mode-and-masks))
-    mode-and-masks))
+  (unless (and flymake-disallowed-file-name-regexp
+               (string-match flymake-disallowed-file-name-regexp file-name))
+    (let ((fnm flymake-allowed-file-name-masks)
+	  (mode-and-masks nil))
+      (while (and (not mode-and-masks) fnm)
+        (let ((item (pop fnm)))
+          (when (string-match (car item) file-name)
+	    (setq mode-and-masks (cdr item)))))
+      (flymake-log 3 "file %s, init=%s" file-name (car mode-and-masks))
+      mode-and-masks)))
 
 (defun flymake-can-syntax-check-file (file-name)
   "Determine whether we can syntax check FILE-NAME.
--8<---------------cut here---------------end--------------->8---

and set `flymake-disallowed-file-name-regexp` to "scratch".
it seems to be working, so I was thinking about pushing it.
Do you think there is a better approach?

Thanks.

-- 
Sam Steingold (http://sds.podval.org/) on darwin Ns 10.3.1504
http://steingoldpsychology.com http://www.childpsy.net
http://islamexposedonline.com http://iris.org.il http://no2bds.org
In the race between idiot-proof software and idiots, the idiots are winning.




  parent reply	other threads:[~2017-08-17 18:08 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-17 14:40 Refactoring flymake.el João Távora
2017-08-17 16:57 ` John Wiegley
2017-08-17 18:08 ` Sam Steingold [this message]
2017-08-17 22:32   ` Stefan Monnier
2017-08-18 14:51     ` Sam Steingold
2017-08-18 15:11       ` Dmitry Gutov
2017-08-18 16:13         ` Sam Steingold
2017-08-18 16:25           ` Dmitry Gutov
2017-08-18 17:59             ` Sam Steingold
2017-08-18 18:52               ` Noam Postavsky
2017-08-18 19:38                 ` Sam Steingold
2017-08-18 16:26           ` Clément Pit-Claudel
2017-08-18 20:32       ` Stefan Monnier
2017-08-18 13:04 ` Dmitry Gutov
2017-08-18 19:20   ` João Távora
2017-08-19  1:59 ` Leo Liu
2017-08-21 12:50 ` Refactoring flymake.el - jumped the gun João Távora
2017-08-23  3:30   ` Stefan Monnier

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=lzwp62xe1z.fsf@gnu.org \
    --to=sds@gnu.org \
    --cc=emacs-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).