From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp2 ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms11 with LMTPS id yOW7CftixF4qaQAA0tVLHw (envelope-from ) for ; Tue, 19 May 2020 22:51:39 +0000 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp2 with LMTPS id OEazBftixF7dKgAAB5/wlQ (envelope-from ) for ; Tue, 19 May 2020 22:51:39 +0000 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 96687940A38 for ; Tue, 19 May 2020 22:51:38 +0000 (UTC) Received: from localhost ([::1]:45736 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbB5D-00018A-6h for larch@yhetil.org; Tue, 19 May 2020 18:51:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47940) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jbB4t-00017F-M1 for emacs-orgmode@gnu.org; Tue, 19 May 2020 18:51:15 -0400 Received: from [183.249.132.153] (port=1323 helo=dark.localdomain) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jbB4s-0007uu-Ih for emacs-orgmode@gnu.org; Tue, 19 May 2020 18:51:15 -0400 Received: by dark.localdomain (Postfix, from userid 1000) id DB8EB2416B1; Wed, 20 May 2020 06:51:05 +0800 (HKT) References: <87wo58jch2.fsf@gmail.com> User-agent: mu4e 1.4; emacs 28.0.50 From: stardiviner To: John Kitchin Subject: Re: [Question] why my org-link-set-parameters :face function does not work? In-reply-to: Date: Wed, 20 May 2020 06:51:05 +0800 Message-ID: <87lflnczdy.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 183.249.132.153 (deferred) Received-SPF: softfail client-ip=183.249.132.153; envelope-from=numbchild@gmail.com; helo=dark.localdomain X-detected-operating-system: by eggs.gnu.org: First seen = 2020/05/19 18:51:06 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] X-Spam_score_int: 15 X-Spam_score: 1.5 X-Spam_bar: + X-Spam_report: (1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_ADSP_CUSTOM_MED=0.001, FORGED_GMAIL_RCVD=1, FREEMAIL_FROM=0.001, NML_ADSP_CUSTOM_MED=0.9, RDNS_NONE=0.793, SPF_SOFTFAIL=0.665, URIBL_BLOCKED=0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: emacs-orgmode@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: numbchild@gmail.com Cc: Org Mode Errors-To: emacs-orgmode-bounces+larch=yhetil.org@gnu.org Sender: "Emacs-orgmode" X-Scanner: scn0 Authentication-Results: aspmx1.migadu.com; dkim=none; dmarc=fail reason="SPF not aligned (relaxed), No valid DKIM" header.from=gmail.com (policy=none); spf=pass (aspmx1.migadu.com: domain of emacs-orgmode-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=emacs-orgmode-bounces@gnu.org X-Spam-Score: 2.59 X-TUID: RA1EN0a10809 =2D----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 John Kitchin writes: > The face function only takes the link path, which is a string. you cannot > use org-element-property on it. > > Maybe you want something like this: > > #+begin_src emacs-lisp > (defun org-link-beautify-face (path) > "Set link face colors." > (message "beautifying") > (if (and (not (file-remote-p path)) > (file-exists-p (expand-file-name path))) > 'org-link > 'org-warning)) > > ;;; DEBUG > (org-link-set-parameters > "file" > :face #'org-link-beautify-face) > #+end_src I actually borrowed code from your code example, Because I want to do the f= ollowing: #+begin_src emacs-lisp (defun org-link-beautify-face (link) "Set link face colors." (let ((raw-link (org-element-property :raw-link link)) (type (org-element-property :type link)) (path (org-element-property :path link))) (pcase type ;; ("https" ) ;; ("http" ) ("file" (if (and (not (file-remote-p path)) (file-exists-p (expand-file-name path))) 'org-link 'org-warning))))) (dolist (link-type (mapcar 'car org-link-parameters)) (org-link-set-parameters link-type :face #'org-link-beautify-face)) #+end_src In this way, I can put my code in a union function. I guess the issue is on the let-binding which invoked ~org-element-property= ~. But I can't edebug this function. When I =3DC-u C-M-x=3D set edebug on the func= tion, and toggle ~font-lock-mode~ on Org Mode buffer, this function is not entering e= debug. Don't know how to make Emacs enter this function edebug status. > > John > > ----------------------------------- > Professor John Kitchin > Doherty Hall A207F > Department of Chemical Engineering > Carnegie Mellon University > Pittsburgh, PA 15213 > 412-268-7803 > @johnkitchin > http://kitchingroup.cheme.cmu.edu > > > > On Tue, May 19, 2020 at 9:12 AM stardiviner wrote: > >> -----BEGIN PGP SIGNED MESSAGE----- >> Hash: SHA256 >> >> >> Bellowing is my source code, it does not work. I'm wondering why? >> >> #+begin_src emacs-lisp >> (defun org-link-beautify-face (link) >> "Set link face colors." >> (let ((raw-link (org-element-property :raw-link link)) >> (type (org-element-property :type link)) >> (path (org-element-property :path link))) >> (pcase type >> ;; ("https" ) >> ;; ("http" ) >> ("file" >> (if (and (not (file-remote-p path)) >> (file-exists-p (expand-file-name path))) >> 'org-link 'org-warning))))) >> >> ;;; DEBUG >> (org-link-set-parameters >> "file" >> :face #'org-link-beautify-face) >> #+end_src >> >> - -- >> [ stardiviner ] >> I try to make every word tell the meaning that I want to express. >> >> Blog: https://stardiviner.github.io/ >> IRC(freenode): stardiviner, Matrix: stardiviner >> GPG: F09F650D7D674819892591401B5DF1C95AE89AC3 >> >> -----BEGIN PGP SIGNATURE----- >> >> iQFIBAEBCAAyFiEE8J9lDX1nSBmJJZFAG13xyVromsMFAl7D2xkUHG51bWJjaGls >> ZEBnbWFpbC5jb20ACgkQG13xyVromsMfHAgAjnoQlzdHlcKL/rBVBLlkmMITh7f5 >> 6SxRw9sS1BagIma+APiuy+A4O4fSDLyzUMDg+Sg/C+vNu3QC2BM7ipBYNXtWcX1M >> oPZj8loMrnISTIK51j2+9Pg0iOP1aZSvZqwA0p1mK2aZURBXWl7qDkVxD2oWji5P >> qCBVr9ZFUloGSl7PtZTlOtsCgTCGHvnfvnk7vqxY4beuavQgaRSWUCsVDDO0c/M6 >> 5CSzxobElB3Y68fQ2awuQwRGCzfEvRkGShHp3Raug+EJ5Ew+MYEi6wILfPxYF2WR >> VJjuxAxseBuiIjYjF91xzbR7mSZQsvB1gNttLYb3uQ/jrgj0HOQDo5Jmtg=3D=3D >> =3D4fE9 >> -----END PGP SIGNATURE----- >> >> =2D --=20 [ stardiviner ] I try to make every word tell the meaning that I want to express. Blog: https://stardiviner.github.io/ IRC(freenode): stardiviner, Matrix: stardiviner GPG: F09F650D7D674819892591401B5DF1C95AE89AC3 =20=20=20=20=20=20 =2D----BEGIN PGP SIGNATURE----- iQFIBAEBCAAyFiEE8J9lDX1nSBmJJZFAG13xyVromsMFAl7EYtkUHG51bWJjaGls ZEBnbWFpbC5jb20ACgkQG13xyVromsOnbwf/f5zAf2fh+vUg7ikwtXpzCL+cjeUt vyyHH9R32K5nb0FTqeyL/rjw6AhHRsTR7sFSUkb++Q8uWRJyxT2Kt7bgujRsL/cb bnmArq4HFWw7ysxYjhDSknwzhc4xFzUJpSmnZuNHEItIuV5Ghg/FnEJokcTurop2 jN4dw28ladHMLel2hjhIRQni3ugQwfKOuyBZa8U3SCPENfnK8uPbMoxkONgdmDQu wG3qw8NvMFnD5Vr81qVb/ytGJyMv+34wD/unZ1TK7BaTGsOVvg/l8ssj5h3EsDeX yilYhc2yZmbG9DHiL94L7ggXJFnVD9GY01xreZXz+JLyJdVQy3K+Rmow1w=3D=3D =3DOU9d =2D----END PGP SIGNATURE-----