From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Reza Nikoopour Newsgroups: gmane.emacs.devel Subject: Help with Fontification Date: Tue, 2 Nov 2021 21:00:40 -0700 Message-ID: Mime-Version: 1.0 Content-Type: multipart/related; boundary="000000000000bbabbc05cfda74c3" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="13440"; mail-complaints-to="usenet@ciao.gmane.io" To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Wed Nov 03 05:01:53 2021 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mi7TF-0003Ms-P7 for ged-emacs-devel@m.gmane-mx.org; Wed, 03 Nov 2021 05:01:53 +0100 Original-Received: from localhost ([::1]:35816 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mi7TE-0004FO-E1 for ged-emacs-devel@m.gmane-mx.org; Wed, 03 Nov 2021 00:01:52 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:45722) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mi7SN-0003My-Mh for emacs-devel@gnu.org; Wed, 03 Nov 2021 00:00:59 -0400 Original-Received: from mail-lf1-x130.google.com ([2a00:1450:4864:20::130]:33624) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mi7SL-0007Ic-AM for emacs-devel@gnu.org; Wed, 03 Nov 2021 00:00:59 -0400 Original-Received: by mail-lf1-x130.google.com with SMTP id bu18so2703842lfb.0 for ; Tue, 02 Nov 2021 21:00:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:from:date:message-id:subject:to; bh=EVWXmTz4hw9vdOvGQIFhHOHiOGn1wHfotZcmzgUbBbA=; b=DBH+qEjSXU49oACord24feucb2P+AKK2//KjMM7eEHo6EW0bW3Zp3v234+qKe7LZEB Jvp0tg7c9OTy2GtJVrjDwjB5wNcPzK6SOY6Pg16h7YRaXVi0pgpnmUzpcPEd/0T2+1/F gP1P0InKoKpbqrQE5KQ1CBSKSJwM6kcF2g0Diwove3q/wOv/C2NrNw5OqU7d+GmfL18J 4FL0dfHy6Rox+M9peFw1JJVq5skQHktuon6JE0An4W9lSGlaW8xbTNqCyvKOieAkfOUm m4iu1GbihbFTSeVVZZ5NdtW/DT/+/CyEuwpHo8VlXgj4VKeO3AHvjm5miKMM/DJVKxH5 RWfA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=EVWXmTz4hw9vdOvGQIFhHOHiOGn1wHfotZcmzgUbBbA=; b=Xxddxzwyh2eqiK6smO9u1KBbX2QGEmfSHr0D7PYbPVYhTUNP5IVObsswClPbNFAH4n U4SEfHYITnvZ7UkSAsrwqmXWGH+dou5/XAbZYYVKi9HJzJypcADsopAg5sT7bAv7IwSl /wqdguAFHwRAz9Le6mckes+jga7AMG71Q7xUwuprK7LecBIit44DoJsmskrypIYhwJlE R5d1Af8IhVDBIO5cjMvIEnK5FOMGAO4mv90CyeRJ6htg65CYQwhx/Ou7oI+mfQO5mixe GwTshsC+JYt9W808FlSiEIU771GTd6n3JcJJdC78D6NfmacrRgRlPHP3tKnIFypjsrAA owDg== X-Gm-Message-State: AOAM531Qq6VJsCLp3Sj8MBIt7t2e3UXVf7iNRodN3Ef1HmHGMKnCuK8G Ywerv2Wj2bVtMabcYuPKow4ANFCh/w38xeBbFDZoFnMHbXU= X-Google-Smtp-Source: ABdhPJxViLZtKdwpTNLfWSV2sxpQttbY5wXSyA0x1D5ykRnO2/0Dd5OByJXL43eqPJMv7kotaIb/6FUzQhkGvaMtIUA= X-Received: by 2002:ac2:5d4b:: with SMTP id w11mr37561543lfd.676.1635912051821; Tue, 02 Nov 2021 21:00:51 -0700 (PDT) Received-SPF: pass client-ip=2a00:1450:4864:20::130; envelope-from=rnikoopour@gmail.com; helo=mail-lf1-x130.google.com X-Spam_score_int: 4 X-Spam_score: 0.4 X-Spam_bar: / X-Spam_report: (0.4 / 5.0 requ) BAYES_05=-0.5, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_IMAGE_ONLY_16=1.092, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:278560 Archived-At: --000000000000bbabbc05cfda74c3 Content-Type: multipart/alternative; boundary="000000000000bbabba05cfda74c2" --000000000000bbabba05cfda74c2 Content-Type: text/plain; charset="UTF-8" Hello All, I'm working on refactoring terraform mode and I've stumbled across a fontification issue I cannot figure out how to solve. [image: image.png] A resource can be broken down into the three parts: The keyword "resource", the resource type (green in the image), and the resource name (pink in the image). The resource name and type are string literals so I used the override flag for the regex when setting font-lock-defaults: (defvar terraform-font-lock-keywords ;; other code (,terraform--block-builtins-with-type-and-name--type-highlight-regexp 2 'terraform--resource-type t) (,terraform--block-builtins-with-type-and-name--name-highlight-regexp 3 'terraform--resource-name t))) (define-derived-mode terraform-mode prog-mode "Terraform" ;; other code (setq font-lock-defaults '((terraform-font-lock-keywords)))) However, this is causing the issue above where the search based highlighting is overriding the comment highlighting. Is there a way to only have search based fontification only override strings but keep comments unaltered? Cheers, Reza --000000000000bbabba05cfda74c2 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hello All,

I'm working on refa= ctoring terraform mode and I've stumbled across
a fontification iss= ue I cannot figure out how to solve.=C2=A0=C2=A0

<= img src=3D"cid:ii_kviz1s7j0" alt=3D"image.png" width=3D"238" height=3D"143"= >

A resource can be broken down into the three= parts:
The keyword "resource", the resource type (green in th= e image), and the resource
name (pink in the image).

The resource= name and type are string literals so I
used the override flag for the r= egex when setting font-lock-defaults:
(defvar t= erraform-font-lock-keywords
=C2=A0 ;; other code
=C2=A0 (,terraform--= block-builtins-with-type-and-name--type-highlight-regexp 2 'terraform--= resource-type t)
=C2=A0 (,terraform--block-builtins-with-type-and-name--= name-highlight-regexp 3 'terraform--resource-name t)))

(define-d= erived-mode terraform-mode prog-mode "Terraform"
=C2=A0 ;; oth= er code
=C2=A0 (setq font-lock-defaults '((terraform-font-lock-keywo= rds))))


However, this is causing the issue above where the se= arch based highlighting is
overriding the comment highlighting.

I= s there a way to only have search based fontification only override strings= but
keep comments unaltered?

Cheers,
Reza
--000000000000bbabba05cfda74c2-- --000000000000bbabbc05cfda74c3 Content-Type: image/png; name="image.png" Content-Disposition: inline; filename="image.png" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: ii_kviz1s7j0 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 7vTUBGVkpOrG36ydzO3mG0yodcAruBjmYog8tXNMF0LMfWFdz5yap96eNgHvjm3DNL1rXMC+bXKQ HI443bShbgTnx2BsNh3wCu7QQKcAMC83Sxe+yooS2rVjlFKcyeL/uZkp6rznVS4tKaSZAzspPs6u m3azdTK3l28sodYBXXDj4uy0tDhHB/dtNwye1qsc6kpyfqz4rAPuOqALbldHs7C2ZaWFhsHlDRju HcuKxv2xljqwAtzoaBstHj9EC7PTBOfTWhbOebNysw4EpgMrwE1MdFBLcy3l5mQytLwnmXUgTHVg Bbh8BwzsDsj9xv22njrA4IbpHXU9lYDLMt9Nh8FlcHk4bEIdYHBNKDS2kOazkJAZ/EclxflUXVUe 9AM4DO59BNdWmkKxHbkUlbK8UcWSnSCurTnuD2fYKlPJPlREEZb19fIbrZ/RG8lQbQMdHhyj0sxs YeWbisvEdUtJuZvV39rURue37SZHrPfHSI2WuZp4Ruu3mjxl3C0VJWInIrYGLy3OkytleeOS/H+1 Rwb3PoKbMFtHqc+NUkzDsgc/bqRYXMeNlbgpsmNftQiPjLO5ha9W2KuNb7R+RvP92oVHie5+RcCK NE8eWBDX12aOuLXrjaWHRHhxhv6uPaPlrTae0fqtNl/Ex9ZhbCHOy8umqKgot/YGkh+Dy+B6VSIG V//GEghoswd3if38gaTVS8PgmhHcSANzPCNx/LQ9XMC1Rlm83lz0lDrQsLW0uAD3yMLekLXDK7hZ mWm0f8828WxtT3cLHZ7bI/Yv4+mf2NgYpQKpLqd42AAvkjt1YlY8HYQwz87DEAEP2uPhe+yDxpNF 9XVbVsQrLMglPIR/+uSsiItHCz0fVmhqrKa905OEXV6yHOSPMM+NI0bbgXwa6qsIr+lB/bB7DE87 uTzaYrS9sl6+jkbBkENle18BOS93kev6MCUttZI1x/3lBta8REqYr6eUK33kujlCzkd7KWGmlqIS VHmhPrZyFyU/2K770+ZptH6+2qj9zygYcqh8Y/YofXz9Fv3t5XfooyvXqbOiSpE38v30jj303uUn KMuZooRPNLaKsOE69f1omDN/59FndH/tZZVKWqP107bJ6Pncoan1AbeoME/sV8YbLk6dmKHJ8X7x dgsA6kxedp7gQXsoOR7t2751mPAoH84BcGKCQ+mQ+Pg4kQeg7e9tp/a2BgE7ni7SNhzwYfJ+4uhB 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 --000000000000bbabbc05cfda74c3--