From debbugs-submit-bounces@debbugs.gnu.org Sun Nov 27 05:12:37 2022 Received: (at submit) by debbugs.gnu.org; 27 Nov 2022 10:12:37 +0000 Received: from localhost ([127.0.0.1]:42123 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ozEeK-0000RA-V0 for submit@debbugs.gnu.org; Sun, 27 Nov 2022 05:12:37 -0500 Received: from lists.gnu.org ([209.51.188.17]:39898) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ozEeG-0000R4-OV for submit@debbugs.gnu.org; Sun, 27 Nov 2022 05:12:36 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ozEeG-0006iN-7B for bug-gnu-emacs@gnu.org; Sun, 27 Nov 2022 05:12:32 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ozEeE-0007S8-Li for bug-gnu-emacs@gnu.org; Sun, 27 Nov 2022 05:12:30 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=Subject:To:From:Date:mime-version:in-reply-to: references; bh=vR22/pRST1sh/F0AZyI8E2N7BdupC7Q06S2HRqrOHSU=; b=DPQJtlh60M5Jug +usFCp2vB+Q7E6f/zBTdioy0cBr7hciWTEnjWCJpAbzbPN93e2ODeiTpwKCEtZVWlj/8atpKpFtvO 9Hhtwt+8Di5fJBQFxmXmLN3G394XZPJJ2x8eYowX7bCguYf4foGd9f+fX6BZn/2shgcEVzI29Lgmn a/CIb86IMYoHVCph7m3Dq24VOLK6QVGvSxtBLLd7eLMWzUPxmQozzlz8Wsm3ldcWU3/1azZaxfRdN ivjtSs0elDHLjXWNShGSNCplbNCELPDTrNqEq8cYJvrtCjlqiG+Dkovm1cbMILzKa8YgdmJHljLXN DzKUWyn5Dx76IMx/A51A==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ozEeE-00077H-63 for bug-gnu-emacs@gnu.org; Sun, 27 Nov 2022 05:12:30 -0500 Date: Sun, 27 Nov 2022 12:12:57 +0200 Message-Id: <83v8n0puxi.fsf@gnu.org> From: Eli Zaretskii To: bug-gnu-emacs@gnu.org Subject: 29.0.50; treesit-beginning/end-of-defun problems in C/C++ X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) To reproduce, visit any C source file in the Emacs tree, turn on c-ts-mode or c++-ts-mode, go to the middle of some function, and type M-: (treesit-beginning-of-defun) RET or M-: (treesit-end-of-defun) RET This will move point to very strange places, which generally are neither the beginning nor the end of the function. In very simple functions, like this one: void __executable_start (void) { emacs_abort (); } the result is correct. But once the function is even slightly more complicated, for example, like this: static int margin_glyphs_to_reserve (struct window *w, int total_glyphs, int margin) { if (margin > 0) { int width = w->total_cols; double d = max (0, margin); d = min (width / 2 - 1, d); /* Since MARGIN is positive, we cannot possibly have less than one glyph for the marginal area. */ return max (1, (int) ((double) total_glyphs / width * d)); } return 0; } the results are very far off the mark. These two functions are the only ones to move by defuns in treesit-based modes, right? So they should be improved, IMO. In GNU Emacs 29.0.50 (build 2273, i686-pc-mingw32) of 2022-11-27 built on HOME-C4E4A596F7 Repository revision: 80dcd78ff1fce3241043edf1951289eef0bf50c9 Repository branch: master Windowing system distributor 'Microsoft Corp.', version 5.1.2600 System Description: Microsoft Windows XP Service Pack 3 (v5.1.0.2600) Configured using: 'configure -C --prefix=/d/usr --with-wide-int --enable-checking=yes,glyphs 'CFLAGS=-O0 -gdwarf-4 -g3'' Configured features: ACL GIF GMP GNUTLS HARFBUZZ JPEG JSON LCMS2 LIBXML2 MODULES NOTIFY W32NOTIFY PDUMPER PNG RSVG SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER WEBP XPM ZLIB Important settings: value of $LANG: ENU locale-coding-system: cp1255 Major mode: C Minor modes in effect: tooltip-mode: t global-eldoc-mode: t show-paren-mode: t electric-indent-mode: t mouse-wheel-mode: t tool-bar-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t line-number-mode: t indent-tabs-mode: t transient-mark-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t Load-path shadows: None found. Features: (shadow sort mail-extr emacsbug message mailcap yank-media puny dired dired-loaddefs rfc822 mml mml-sec password-cache epa derived epg rfc6068 epg-config gnus-util text-property-search time-date subr-x mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils misearch multi-isearch vc-git diff-mode easy-mmode vc-dispatcher c-ts-mode rx treesit cl-seq cl-loaddefs cl-lib rmc iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel dos-w32 ls-lisp disp-table term/w32-win w32-win w32-vars term/common-win tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment text-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors frame minibuffer nadvice seq simple cl-generic indonesian philippine cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese composite emoji-zwj charscript charprop case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs theme-loaddefs faces cus-face macroexp files window text-properties overlay sha1 md5 base64 format env code-pages mule custom widget keymap hashtable-print-readable backquote threads w32notify w32 lcms2 multi-tty make-network-process emacs) Memory information: ((conses 16 60472 7440) (symbols 48 7296 0) (strings 16 20076 2163) (string-bytes 1 498360) (vectors 16 11107) (vector-slots 8 164960 11733) (floats 8 29 319) (intervals 40 2962 92) (buffers 896 14)) From debbugs-submit-bounces@debbugs.gnu.org Mon Nov 28 05:56:31 2022 Received: (at 59628) by debbugs.gnu.org; 28 Nov 2022 10:56:31 +0000 Received: from localhost ([127.0.0.1]:47868 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ozboN-0000Uz-6d for submit@debbugs.gnu.org; Mon, 28 Nov 2022 05:56:31 -0500 Received: from sonic304-21.consmr.mail.ir2.yahoo.com ([77.238.179.146]:44482) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ozboL-0000Ur-Np for 59628@debbugs.gnu.org; Mon, 28 Nov 2022 05:56:30 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.es; s=s2048; t=1669632981; bh=crjM8xbxxbxG6WZl+2PlVa2yJej2UORWHFXEaIuvtZk=; h=From:To:Cc:Subject:References:Date:In-Reply-To:From:Subject:Reply-To; b=l7I5wWx5vHApuhzS7Hog8E+xxHE34OF9SQVjDUarKObzifpj20BuKpe0AVeuv1k3wDPIW0l6FSDyNxw6PmFwOFSsakLW8wWbSf0/fWOFci+OstnhGeTp31+KnkfrAVsRxvj2IuZmmbUHDmQf7UKK0HYGfczQ7KRDD0EDRcGeinCANIh5dh6QLKXnqhCL/79oZi3JpJaHT06JT8kYc1MBKA3JhRcWUtTcoO/J/atfXTDs4vyoFxPRYHsPLl/9uws/6/73R+IKwHHo/ZY5k7F2IBX6GBiLlBDh8mmF8D7vb5nIZbBjLJuO7GCUvtTJjiFXczxdKZwsJD0iI/iQG9yabw== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1669632981; bh=iPlRWmGFtKNTIVTIaPaz8rWLLErQVhsBAf7ijOII+Vw=; h=X-Sonic-MF:From:To:Subject:Date:From:Subject; b=FJdH6Ud2bY2x+trwsJg47T46MYV+cpP49eHwp2mPQxXriBsqkCLs0H5gY50F4RClmov5rq3e4T22KC1SipbC99D2OncYISj4UPHlxM5wQ5MoYDhKSyabCSGbnfW1I2/cRC6jD6htlO35esrgLo5kKLfv1HQQfMH3jAk/u8JGH16OcmyYZdXU11rYklQZzWa7zFdV4ildLY7ddrtFjDeMxqhywgc90prb4WOh+OpYvdLKMJ4CV/10Xlne7dZLWw85eTi+3eqe+S2rP86vFoEQcLc5be/zDfDI5bUmOAA9eS1JYNRBGPUVxsdR5NKJHZw/SggixpJ5hdhrgfeSt+hI1A== X-YMail-OSG: QOUSDZQVM1mhXmRzOnOcpginUzAJhocPcPo4n6fTMQFEUeZrigkt.bVPd4vQDrY hd9lMtNYpCmhzlOIBtqXT30DWgKx_F5WscyC8o_jgdHL38B_pStzE0J2s11E5m2bFB4zYydSedBo FGDcs2czVdM3wu0d5h9t9iiCuiboxdLgQFAnnAqfNl1Md8t5fZxNCv_6T8ZyZZFNl8ux5HTdfYkY KNDz1NGkqzc5xWz1gUrPpMOdJhw5AiymumdWFa1BieSL_.Vo7A2zRPQdqENWg6a9J35oUpF94Mg5 FO4In1DeTa5wjmq5JJpZMqQS4zMoJD2GNb171Whk3QmzWOTwQPgXdy_NdM4JmOWHwVQTSRPBk37I 66fSdlCOdABS8npUZnwwj5g8CqgPbxiUW_Yui7pS6sN0M6ehWvUQ2V1EZPcuWNsGDEYbf2ucDHfa M2wgoPTUZ5.M8HTuODOSclfeGTDINKtmkHvK4UFTtgW.kmVH3DeHYUztSz.aFn_AA97JuPtuzaRf gPlwUS7DI7RJT0jTuNuN6uAbFbWoqlTHRtQF0J9rHAE9vf7MeGFKw61rW5ORBmdkChDv_NsEYr.x l6gjfO5BvWrOfajMRisDPKvuRP8xfd5npGkdsOtF2rjcwXQ8tS6Z5Lm4Ol_Uj3CkaELXBC4BTzvQ i412WTgpUqGUc5cmknIA6T4E6UulvItzsot6GbQ6L8_oKVb_QT6jsaYMX2JQVpFRhDD6HDTGCRMI ZhqIbdx9qjTDd5.Jc0OjvudmWFa8587HMX.Wv_B2efIF2gQXRrsiTZwxrK5eb.qvCM6Hmp8Vvn1u eItRKP.n2Jce79CgDJrbhoHZXZ1dieQfGZt1feqtc821XlYdGnam2MzSXM9zPEXvut1Bzckw3jEP 1D_yYdT98BsfFkl9C3DEzWcglObzRnkBF5k6N4uZch1jtbT3y8swTPgEp.Zo7TL_uD7_K5mzPtfm zdnKXrYl._o5u5vcP37Zuw5mUUwiqiMEYGPAKN2SWo6CXQ6KSqWM4j.y25s06OFmm7sZn.2PRRMi s8lFO_ofi2mjZD_pZxIKb5rfDU86w_oO3SJukjZwwAhyuLHp3z24qd6jvsUMQ247TH9XCwhIChtv NZIl7T1Ioj5q_owB3AjVkU8S4a5fYgZDvVlyd3cEzM7MtGDF_JZOnKsUDGAdQ59DX6h1Z_PPDO0L khUbU27QQMjMgASAs_bQcTfhHj.olJYTtn0_0ny64nwAjBaKDvv.PRW1RKsrUtZSIPcryr1WEBFZ o7DIB0e7gOGDb5S8cJV4Cv.EKUQ6rM1ddY8Rpcq1nneNQ.0bEjt6CzNSdN.JIqXStuoEV0CYJM7z j8iYs3pvr.KriOKxBvmcnWMosbsooVSR1P4YeRXTCxazIGzh_fYSKIzL25MsAe584xjYTRzZpb8z J3edpEZIQcP1RAJ1.UlF1IjMUb4XOdFDPerGyXxH.rEAu1OjC84pFdbKrP.cIXUCiKDgvAOmCWOG hFnxAA4woDM4rAgAJz27Esrk_Ymtr9MgMteqt5XQZEHHOxnocLB_Gwtw39aZCiuLuci2NIyv6ukp 3xWgG51Lj2GbSqh_H0fgXt1IcxwWfGCBHeh7cH2Likb3225NVrdZqCjdo7hvcFsTLS37bdkBJEpN Y69kjchOfnR1BxurwJAPR6NNhHulnu8WR1T1EQnYSN4S6K4ml6cKCXTSA0lCcAwfeBPVn1Rpj1d. 8KGdQK9cdmVMwebZamvbqMrgZfDNXM0ks7nS3t.kubm2MRIk63Eo4scEAauseCA6K73zmz.UOGvt kQJfvOxvAILHLBGEuv4BOuWwsLwJdGhsO0N1kLbkCLg52ydD3fmvSIjkDrhnWvIBVjh0xJ7ry50b TY6TJGMfT3LLfdTe_7dVk7nJIsbkpUQdrD_qvRPWhmlJRBn6OYtigw9ZKswAjKROThLXfj4s5TcN xqE6hKXdoZpalU_R1qVujIW57RqeQr9iaBgXgJ91rTn6yzYLX3GupuimdkS7IatGA6jrEh31rtoi W2W6YZOjG1fcQ3qudHIYVQHiPs7ardcYTg.1KxdwETBAefcdAdkLwAk7r06y0BXJF6JN_dFcNqeF 5yrfDfw0LI6UEtxOl2cUTzEsQ9zgeC3SP4ViwHm79hPPXjogcC.aa64I1pTOdzv4vU9Z.kdu8wrb A6nhwZbFPVAyVlKh5IuD_4MakIIHZWJUBDoLTgGHX9LgpA_qsvZQ8egFEZwOLakwJLzIT0tVk87q 83UHCnasP3b8vmqYbwLic7yiGZ_x.1k3hBYE5 X-Sonic-MF: Received: from sonic.gate.mail.ne1.yahoo.com by sonic304.consmr.mail.ir2.yahoo.com with HTTP; Mon, 28 Nov 2022 10:56:21 +0000 Received: by hermes--production-ir2-74cf6dc4df-nhpqd (Yahoo Inc. Hermes SMTP Server) with ESMTPA ID f911801ee38f2b27e8b6b3062d7b2b63; Mon, 28 Nov 2022 10:56:16 +0000 (UTC) From: =?utf-8?Q?Daniel_Mart=C3=ADn?= To: Eli Zaretskii Subject: Re: bug#59628: 29.0.50; treesit-beginning/end-of-defun problems in C/C++ References: <83v8n0puxi.fsf@gnu.org> Date: Mon, 28 Nov 2022 11:56:14 +0100 In-Reply-To: <83v8n0puxi.fsf@gnu.org> (Eli Zaretskii's message of "Sun, 27 Nov 2022 12:12:57 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.2 (darwin) MIME-Version: 1.0 Content-Type: text/plain X-Mailer: WebService/1.1.20863 mail.backend.jedi.jws.acl:role.jedi.acl.token.atz.jws.hermes.yahoo Content-Length: 1577 X-Spam-Score: 0.2 (/) X-Debbugs-Envelope-To: 59628 Cc: 59628@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.8 (/) Eli Zaretskii writes: > To reproduce, visit any C source file in the Emacs tree, turn on c-ts-mode > or c++-ts-mode, go to the middle of some function, and type > > M-: (treesit-beginning-of-defun) RET > or > M-: (treesit-end-of-defun) RET > > This will move point to very strange places, which generally are neither the > beginning nor the end of the function. In very simple functions, like this > one: > > void > __executable_start (void) > { > emacs_abort (); > } > > the result is correct. But once the function is even slightly more > complicated, for example, like this: > > static int > margin_glyphs_to_reserve (struct window *w, int total_glyphs, int margin) > { > if (margin > 0) > { > int width = w->total_cols; > double d = max (0, margin); > d = min (width / 2 - 1, d); > /* Since MARGIN is positive, we cannot possibly have less than > one glyph for the marginal area. */ > return max (1, (int) ((double) total_glyphs / width * d)); > } > return 0; > } > > the results are very far off the mark. > > These two functions are the only ones to move by defuns in treesit-based > modes, right? So they should be improved, IMO. > If I type M-: (setq treesit-defun-type-regexp "function_definition") RET treesit-beginning-of-defun and treesit-end-of-defun do the right thing. That begs the question: Is it really necessary to have a Tree-sitter regexp variable to match defun nodes? If yes, should it already have a sensible default value so things work out of the box in most major modes? From debbugs-submit-bounces@debbugs.gnu.org Mon Nov 28 17:08:29 2022 Received: (at 59628) by debbugs.gnu.org; 28 Nov 2022 22:08:29 +0000 Received: from localhost ([127.0.0.1]:51191 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ozmIe-00032L-Qn for submit@debbugs.gnu.org; Mon, 28 Nov 2022 17:08:29 -0500 Received: from mail-pl1-f170.google.com ([209.85.214.170]:33538) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ozmIc-00032F-53 for 59628@debbugs.gnu.org; Mon, 28 Nov 2022 17:08:26 -0500 Received: by mail-pl1-f170.google.com with SMTP id 4so11589562pli.0 for <59628@debbugs.gnu.org>; Mon, 28 Nov 2022 14:08:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=to:cc:date:message-id:subject:mime-version :content-transfer-encoding:from:from:to:cc:subject:date:message-id :reply-to; bh=XIjoXYeNesjPqq/m/y523voYf+k12HOUz4IMxYsuVOU=; b=CopZ8ROYVODQJoGe0ohmD23ZVmDszkaT6SSqnSmbxtPWQNgp3t41CJXIyPAPqOnkW3 9PrsWKwYS1YxZqA2SIvaysLU/f9dpFvjuT1AHKf5EVUgkKjBlwQqjQQOh0afkfSaro8F D/JzMNN8ws2Gze+EWNZEJiJqfjK5RQp75yAjei5u5pThE8dCuN1o1LkqsxXjHyCLfc1D Os76J+7PveVmNEiVQPyD1EqBz6PcRmXZTdtzglIIQuolA6pQHY0qUnPf4dlA3beCDmdP CXgRLT2LjNqIfo0ApcrAuOVODU3UJM21Y3hmzUMefCyViwcQHVdulyiCT2GOUDY10sjY x33Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=to:cc:date:message-id:subject:mime-version :content-transfer-encoding:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=XIjoXYeNesjPqq/m/y523voYf+k12HOUz4IMxYsuVOU=; b=gDooozPcI7EmlA+wkU+npLVh5JqkFaaUSx3hUGH65bHqtoGlRyNPvy50yEX8Y8wuGK Nw+Zu4Y8qeoMvR4EssJCJfloLGj/+e74win7xFO/554opR6YzrlpABDiXfDLCTvYtLGo Fmn5QVaqxytjIu5cKGLtsMS4dDe3xlaSGHPhoqxdTIfyHWYqfG9/cbEvyEznPuI79cV5 0ksy58kvcKAFQ/YKiz8wTeLiZZHBumTaKRvs9q4ju0PX8oePSc1UnSOe+/kZMNAmbvTJ +luUZL/mirWJFrscoMhWFDym9vVo8vKb7hDWbF5Oh0Q3AqXotEFNrJtWo2009eLco2a+ iCUg== X-Gm-Message-State: ANoB5pmb8eCxO0oAvxRQ5sshSzPGqSpfgqnCjNFZwbLiioOewv5CvsaR XjiWRw8DBInSLI/OLHy/2Os= X-Google-Smtp-Source: AA0mqf4TmvfiCdwVqE9XrxYdT3Z//B1Xs9hIBkYml6JADSYoRDPswnDpLOoKOjEW8arDg/M4/ynB3w== X-Received: by 2002:a17:90a:307:b0:213:dce7:e1fe with SMTP id 7-20020a17090a030700b00213dce7e1femr63480024pje.110.1669673300213; Mon, 28 Nov 2022 14:08:20 -0800 (PST) Received: from smtpclient.apple (cpe-172-117-161-177.socal.res.rr.com. [172.117.161.177]) by smtp.gmail.com with ESMTPSA id b13-20020a170903228d00b00186b7443082sm9348910plh.195.2022.11.28.14.08.19 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 28 Nov 2022 14:08:19 -0800 (PST) From: Yuan Fu Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.120.41.1.1\)) Subject: Re: bug#59628: 29.0.50; treesit-beginning/end-of-defun problems in C/C++ Message-Id: <10635EBA-B74E-49BD-BDD6-34B0C901A335@gmail.com> Date: Mon, 28 Nov 2022 14:08:18 -0800 To: =?utf-8?Q?Daniel_Mart=C3=ADn?= X-Mailer: Apple Mail (2.3696.120.41.1.1) X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 59628 Cc: Eli Zaretskii , 59628@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Daniel Mart=C3=ADn writes: > Eli Zaretskii writes: > >> To reproduce, visit any C source file in the Emacs tree, turn on = c-ts-mode >> or c++-ts-mode, go to the middle of some function, and type >> >> M-: (treesit-beginning-of-defun) RET >> or >> M-: (treesit-end-of-defun) RET >> >> This will move point to very strange places, which generally are = neither the >> beginning nor the end of the function. In very simple functions, = like this >> one: >> >> void >> __executable_start (void) >> { >> emacs_abort (); >> } >> >> the result is correct. But once the function is even slightly more >> complicated, for example, like this: >> >> static int >> margin_glyphs_to_reserve (struct window *w, int total_glyphs, int = margin) >> { >> if (margin > 0) >> { >> int width =3D w->total_cols; >> double d =3D max (0, margin); >> d =3D min (width / 2 - 1, d); >> /* Since MARGIN is positive, we cannot possibly have less than >> one glyph for the marginal area. */ >> return max (1, (int) ((double) total_glyphs / width * d)); >> } >> return 0; >> } >> >> the results are very far off the mark. >> >> These two functions are the only ones to move by defuns in = treesit-based >> modes, right? So they should be improved, IMO. Yeah, I=E2=80=99ll need to look at C grammar and fix = treesit-defun-type-regexp. > > If I type > > M-: (setq treesit-defun-type-regexp "function_definition") RET > > treesit-beginning-of-defun and treesit-end-of-defun do the right = thing. > That begs the question: Is it really necessary to have a Tree-sitter > regexp variable to match defun nodes? If yes, should it already have = a > sensible default value so things work out of the box in most major > modes? Different languages have different grammars that give different names to function definitions and class definitions. So it is necessary to have a regexp variable. Finding such a regexp isn=E2=80=99t too hard, so I = don=E2=80=99t think we need a default value. If we do have a default, it would be often = wrong, given differences between language grammars. From debbugs-submit-bounces@debbugs.gnu.org Mon Nov 28 19:13:14 2022 Received: (at 59628) by debbugs.gnu.org; 29 Nov 2022 00:13:14 +0000 Received: from localhost ([127.0.0.1]:51846 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ozoFN-0000Rd-SQ for submit@debbugs.gnu.org; Mon, 28 Nov 2022 19:13:14 -0500 Received: from sonic314-20.consmr.mail.ir2.yahoo.com ([77.238.177.146]:43964) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ozoFM-0000RE-5L for 59628@debbugs.gnu.org; Mon, 28 Nov 2022 19:13:12 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.es; s=s2048; t=1669680785; bh=cCaYOLPVkdPsbOWFZyFHy8v7kVmL9R1GPfns7ZTdP/Q=; h=From:To:Cc:Subject:References:Date:In-Reply-To:From:Subject:Reply-To; b=R0nhSU24OpmuHi0ccf+gstqR2y2HmLtpBffHzrHPdxWxnT6Ta2cXvxihzjtdcHWv3/t915LlIh6Cd2fJQtoy0UyftSUmVQD8nEQi7GB84AncCwOO2DO7bZ90mWZIuj2Yr4eaAcIgVmr6u6kIZ58+NfWCmhMw7IQpEJ2PCJwOqVwdM0QRdXjTsqjECg/3Z3u2gZmQzfXglaGZnh6igwxABLCXc1h1hnurquuPOC639ZI9Mu7JI817Qm5uaKBJHrKwsEyMGBzsyOZTsS2n/a8MxamsMQOyHKQxyKNVIKhR9A6HMIMFCcYsk3QJrcEC7fU510lvEKb7ULryF3cD7gXT0g== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1669680785; bh=vYBdrfwQ5TUNo7FDRts37kCUaNlANRIqRyssrB1YAC1=; h=X-Sonic-MF:From:To:Subject:Date:From:Subject; b=kjxDneU6d419WaTKQs7y5k8Gm9uK5eKwQ8GdaFMn/DIx/fcy5i7l+67pYrFCsxLNCkwbw/t6fYyTh1nMcFzTCY4er2gfOvGmKL8qDjV8Bs5G6BWjONntbHOqiVrJwlYDx3a1qvNQ1TRomc1rkP917aENdbtvaegXzywBXUGEBTtGkDSuU/lBflW/wXNwNdiBfz8x0WPrZfzhUBiKL4kh0LsyvJ9LPHEjAQ958mXOB3kJAk+QBPulivbcUFOSbYRNArZ14o7uDq7PzbKiQXze1+4oCT6M+a4M1SuxHDqnHoAhwPSVm23YE3kBpLDeLRX7Be7NWX0zGrr/ZSJu0VUYrA== X-YMail-OSG: QTgxpNoVM1kvLzJHD0zPDHxImXlZ7mdvY6QDFIdrTPIUe7GU67NyqjOLTz07SF0 1jPCHVq7CqKYzJgydHB1qovv7TbkihNQY7m0zsB9MBIstPtFoDuxEKQvNWMHWR0y9mLJ0y4J0FXd gxVokLEiLRhVCQ_agSPNTgjtWFJVrDLi5OGpG3LG7RWenNV_e5lWnyUvsyhjkCeHMNiTTJJhFcF6 fWLHDZ8BSy6tBmOrB8Fo1lUoCxkCzlmI55n7cTZywZY4ZngbMtDpjLnUmCpLwJkoSvYLAbLD57CD D..o6Wb6QzwxE38YYDXzYTebVOdUT33M_VogE2sW2MpX13zema0.otxjIRI7JcyKIrCdaqXOTclx qpvuqptZ8KFdCNkbh8KL0RlI5d8qsOexNnQjp9PYXXOUtS_RlD_kF0Jk7RQ5nW9PFqXd9LGt7niZ SwVYXGORsHOFkumBI5NeUwuEHlFH3GX6PHU.7fOnBzx2jDOrksBz_OLntvlvIeTbnUjPBGvWbYe6 Y9FlWhV_4Hdtk1ulSl2.MBrSLq9pLQyzBkN.gebvH4166Ia8Z8rVVDfCEaCvdJhM5roM_R_jr7Or vG1PPsNyquGUYtoT.pveQiIrxOJuhT0lzywExyOI.HGfwFhCK1GGngDk24qyr9D2SWTTrzxqlUV2 sgFf6nK7ZMUMnS1EHPgQhSal6MSJlCeXlfWwkcIYBAi6.FeAQXwVS_iTnAN0041F9b.1dov2G5tr Tr_xV3mordKVe0DqZozVxRmml1PkOaY0_.uFryROIDoqLKrsPELI5Zks3nMkUcN82vPawydXOr8l Oo8oJUZt0l93mz9MfQuqoaBI5dfSwQU5jg9uIW3r1uzYOkRTcRb8wmymOzwp0UwnO7oh5o4htEEs Egdagc1gYqLFFhjb5Kgfoc_w1beUCZiFEhjG.h0LgVkNFKO3Te7Zm_ACPasiaSAVlbxhU2CkBonM nI1KAXsUJPDBMuhduUNDiGVQQQKGf.45inq4mh8SsJZbrHdLsPKiithVAi9zx65usAjtt3e_L52a 55k9iX..G5lpybZwYcQCJfcG3kSPLpIZI2OloMd7_id10LkszC24QDjY09BhJLLzJy3gzm7wnqxf GoRdJJLk3WKhBGbfyNaHIb8ZBtdW7X6SlkQA.kBBGcqwdvaq8Ww8XFZkXLVDrrOJc9IM.4axSozB Czo9RbtIDTHftUIJIpBnrvSnoKKqTAHE1NmWLEj9fapRu7uXmMksw_U_iNecXNeVl_YVAdN5bIKo rrJf1eOGW91Ct8CQjkLFf9difIyxlKznVntvzJcS186Wsd0Fd2n4UOrEooOHaUwC9ZvmDw9JzBjj hFqlKj60F4siKz8oyD6tH8E4W5d23dNyWgRcA2IPEGt64ULmj3tBfFnR5QtdQ5Pa1ZFinyloFGz4 jgu9GhRWyBK66cCEPyaH0Ctxav1dji6e4LpaTPYIyY0mocyiG63yQ.aL1zjTSA8RIFP3ZK9PiXdU ubpgvKgGlmDQsKhaUcvhHJV1A0q1rYMAPc8RPmOiaDvlIDfPwL8_MZxemmCSU4.ea36XInXOpF9b Nh7IP0wPV2ha6pID.jhlMQT1awfq2ASnkNtT64jI9EcSvRqo7rmqlAc4Q5RBYJsCpedgWSEd69y4 ZWSfUM9n7LD5BiQqEnyYikhypW.wO3G_6HX7.v0qeg2wEsm61yikdMiw7N.8_qdMqPry2wfrOZ68 Pmhxfx7ZkqNQfe4qFNyvaH0CqZxAVkAf6v78ZUJpR74ssvaJB2w6Enz0eoeNZTbdEhTDe92bX9rM PCh_DyquRTwUw50kioVOZKA_Kt2kEXaAgDXS.V.vcCETKnn5TT_rGgNNF_q7G2H2TZFRZP1Tlm2j ZBHAXg_5Uop2Mb6JQUnnKmbARlOhdiq4i5o73BPYgdUnUQOdihJ0HhGmjKI3jJ703Ww_58Cfj053 XGgJTtglB30_nwVHZfdmlCuiJRvNk3X6zWZQKxIYztm_iqZDlO1ELM3UiCcIr_vlivjuWLsckkSE HPPUj7xIpgqTiWsAV2l4kRFFO8ZCc2Znjrxcra0gNEaEA9aF6OunB6pb8X09zguKab7KZGC1fz1W S3FsKh2bUOB8RgQJvQdAH2bkVsCe5lAfLyiXQ4WvE68fJEDxMvSEQGJd8E8vEw6vn0UVMq7DjI8T KOJW4sYjj78Hm0lTFuvLG.YmsB9yU3La3kgcZMcMIDfieHF6cnRtEvT_n6QImmOpqS8DFZU0m3ar du6b9LzI0z0KnRxfGVU9IPFXfJ8sY616nLSXD3lV_pNYm X-Sonic-MF: Received: from sonic.gate.mail.ne1.yahoo.com by sonic314.consmr.mail.ir2.yahoo.com with HTTP; Tue, 29 Nov 2022 00:13:05 +0000 Received: by hermes--production-ir2-74cf6dc4df-nkhvs (Yahoo Inc. Hermes SMTP Server) with ESMTPA ID 1b84cae331ccd746744f4174fb3bb4ec; Tue, 29 Nov 2022 00:13:00 +0000 (UTC) From: =?utf-8?Q?Daniel_Mart=C3=ADn?= To: Yuan Fu Subject: Re: bug#59628: 29.0.50; treesit-beginning/end-of-defun problems in C/C++ References: <83v8n0puxi.fsf@gnu.org> <10635EBA-B74E-49BD-BDD6-34B0C901A335@gmail.com> Date: Tue, 29 Nov 2022 01:12:59 +0100 In-Reply-To: <10635EBA-B74E-49BD-BDD6-34B0C901A335@gmail.com> (Yuan Fu's message of "Mon, 28 Nov 2022 14:08:18 -0800") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.2 (darwin) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Mailer: WebService/1.1.20863 mail.backend.jedi.jws.acl:role.jedi.acl.token.atz.jws.hermes.yahoo Content-Length: 765 X-Spam-Score: 0.2 (/) X-Debbugs-Envelope-To: 59628 Cc: Eli Zaretskii , 59628@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.8 (/) Yuan Fu writes: > > Different languages have different grammars that give different names to > function definitions and class definitions. So it is necessary to have a > regexp variable. Finding such a regexp isn=E2=80=99t too hard, so I don= =E2=80=99t think > we need a default value. If we do have a default, it would be often wrong, > given differences between language grammars. I see that each major mode sets the value of that buffer-local variable. c-ts-mode sets it to "\\(?:definition\\|specifier\\)" but, is that correct? In C code, treesit-explore-mode shows function definition nodes as "function_definition", so I think the regexp is matching more nodes than expected, causing C-M-a C-M-e to move to weird places in the buffer. From debbugs-submit-bounces@debbugs.gnu.org Wed Nov 30 18:07:59 2022 Received: (at 59628) by debbugs.gnu.org; 30 Nov 2022 23:07:59 +0000 Received: from localhost ([127.0.0.1]:35655 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p0WBL-00058G-9B for submit@debbugs.gnu.org; Wed, 30 Nov 2022 18:07:59 -0500 Received: from mail-pg1-f169.google.com ([209.85.215.169]:35414) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p0WBG-000589-Bf for 59628@debbugs.gnu.org; Wed, 30 Nov 2022 18:07:58 -0500 Received: by mail-pg1-f169.google.com with SMTP id f3so99772pgc.2 for <59628@debbugs.gnu.org>; Wed, 30 Nov 2022 15:07:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=to:cc:date:message-id:subject:mime-version :content-transfer-encoding:from:from:to:cc:subject:date:message-id :reply-to; bh=7IusTvvCZsLA1Zp9IH8P0kAfQlkeNFlsDaFCtHdvJrY=; b=ARx7/j/815BEINWTKLOVynZaJOGP5+ObrQanfTuu/JxbM7PTl+h9P8+AUbtiroVT7x wfOGe/WWfb17mnviSBq6WhUFlW1uBem5KDcd90Z9DZYdjLz2UDA/Od3LsFQ+n6pNu4Fw LrsVG5DhRKOhpYBJOrZm0iHuvhDQAEJM/LXMJp2h+pSVpwl3ecjgkKQ47NLmWASRs8M/ Q6ITWk8xPZOmibDFF2I5F115c/ufvNkWIqVACfHsaymhsabBRafZa7bgFJj0r1VKnAdP f8EtjXhIZoWXQxzNBNTEvXQZT62gXP8dVNQS+l2TWpdUB7WWj3s4sM/cX6WQj6iaG0up mbHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=to:cc:date:message-id:subject:mime-version :content-transfer-encoding:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=7IusTvvCZsLA1Zp9IH8P0kAfQlkeNFlsDaFCtHdvJrY=; b=EvzOKzqZOS6aU0cEhNLKo1pXEVKl4mPeCOCC19+m6nW6xlJVm5hJhUP0phfcUALpSu nhGTbbWIpcQVUvZH8idWlBQ6yaPiSx/Ckh/31fT5MXdFArHxZiGSrHgkrttNw/tYCXpN DSHlZdAVcHSnjChuh2FkT7nUBOu0Y6jZ90mQkmzGMmd22NngHWFBBobHKWvRS6sEIrnm f0e9CKmQLlIi3JyV1kVI8nGqQ+jnZXaQoDo/xDFtAdqOd8yH3wIkvxGPtUiVEkEsC6rl k6CYFzON8RBCDvuw4VIzrtvQjXxSMq8GkwE4QmLnbewEQv5tdKFonJDJJvj360EFGhcW +7Jw== X-Gm-Message-State: ANoB5pmyuau3po0AYAo3Roj9D1iBYHliA848niWmPNut1P586zsLkoMr 8Avd7eeDpFf6Ft0dx3mFHAM= X-Google-Smtp-Source: AA0mqf4PuwgVuFiYUi4NgWiIfg7kM7htzv7isk+k24Ccv0aqms6KabPoKnZQIE4QuTX1LWBBAqJOKA== X-Received: by 2002:aa7:8595:0:b0:574:3ccd:a468 with SMTP id w21-20020aa78595000000b005743ccda468mr39538782pfn.61.1669849668129; Wed, 30 Nov 2022 15:07:48 -0800 (PST) Received: from smtpclient.apple (cpe-172-117-161-177.socal.res.rr.com. [172.117.161.177]) by smtp.gmail.com with ESMTPSA id t15-20020a170902e84f00b00188c9c11559sm2080749plg.1.2022.11.30.15.07.46 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 30 Nov 2022 15:07:47 -0800 (PST) From: Yuan Fu Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.120.41.1.1\)) Subject: Re: bug#59628: 29.0.50; treesit-beginning/end-of-defun problems in C/C++ Message-Id: <0A2994D9-54DC-48EC-8705-46893A962442@gmail.com> Date: Wed, 30 Nov 2022 15:07:45 -0800 To: =?utf-8?Q?Daniel_Mart=C3=ADn?= X-Mailer: Apple Mail (2.3696.120.41.1.1) X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 59628 Cc: eliz@gnu.org, 59628@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Daniel Mart=C3=ADn writes: > Yuan Fu writes: > >> >> Different languages have different grammars that give different names = to >> function definitions and class definitions. So it is necessary to = have a >> regexp variable. Finding such a regexp isn=E2=80=99t too hard, so I = don=E2=80=99t think >> we need a default value. If we do have a default, it would be often = wrong, >> given differences between language grammars. > > I see that each major mode sets the value of that buffer-local = variable. > c-ts-mode sets it to "\\(?:definition\\|specifier\\)" but, is that > correct? In C code, treesit-explore-mode shows function definition > nodes as "function_definition", so I think the regexp is matching more > nodes than expected, causing C-M-a C-M-e to move to weird places in = the > buffer. Right, I=E2=80=99ve fixed the value in 599369bf3a3. Yuan From debbugs-submit-bounces@debbugs.gnu.org Thu Dec 01 03:09:37 2022 Received: (at 59628-done) by debbugs.gnu.org; 1 Dec 2022 08:09:37 +0000 Received: from localhost ([127.0.0.1]:38148 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p0edV-0006A8-5H for submit@debbugs.gnu.org; Thu, 01 Dec 2022 03:09:37 -0500 Received: from eggs.gnu.org ([209.51.188.92]:54418) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p0edS-0006A2-Tf for 59628-done@debbugs.gnu.org; Thu, 01 Dec 2022 03:09:35 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p0edN-00082B-7Z; Thu, 01 Dec 2022 03:09:29 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=2UF9TR978vNAvyqtS0WWra67Qt/Lj+OIz89r4Bre0YY=; b=McwVdUPxFxAKTm9SBLMk K6ULLcy03i4xEbQy7zEq/8jwcz4IrlbtxtIZ6MofHsLre9mRrazs4/NwY8OuKDZY61Sd8Mg5x4TrU KT+wcBKEV4sbSqOPZjD9tdSY3K3AX82pUZXCbGBp0Xg9yF57N7VPkEZZL90ziTNcW5lhQfGV8ajS2 TUnDwH71wSnl3vnkY3VvdzMpR8egN0oCcW+2s43zRwWf190FYwzukibo8q9T6dUhxnYQIyf0GZIgG OFB4UELjoBxfVQHgT4wDIU42F2NtxSwiIIdvNvNru5gNzJ8BGAvwHl96qKjA0X5OAMU6/1bomVKEV wPyG8lG7bRo0og==; Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p0ed6-0004Rc-D6; Thu, 01 Dec 2022 03:09:26 -0500 Date: Thu, 01 Dec 2022 10:08:43 +0200 Message-Id: <83cz93im0k.fsf@gnu.org> From: Eli Zaretskii To: Yuan Fu In-Reply-To: <0A2994D9-54DC-48EC-8705-46893A962442@gmail.com> (message from Yuan Fu on Wed, 30 Nov 2022 15:07:45 -0800) Subject: Re: bug#59628: 29.0.50; treesit-beginning/end-of-defun problems in C/C++ References: <0A2994D9-54DC-48EC-8705-46893A962442@gmail.com> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 59628-done Cc: 59628-done@debbugs.gnu.org, mardani29@yahoo.es X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Yuan Fu > Date: Wed, 30 Nov 2022 15:07:45 -0800 > Cc: eliz@gnu.org, > 59628@debbugs.gnu.org > > > Daniel Martín writes: > > > Yuan Fu writes: > > > >> > >> Different languages have different grammars that give different names to > >> function definitions and class definitions. So it is necessary to have a > >> regexp variable. Finding such a regexp isn’t too hard, so I don’t think > >> we need a default value. If we do have a default, it would be often wrong, > >> given differences between language grammars. > > > > I see that each major mode sets the value of that buffer-local variable. > > c-ts-mode sets it to "\\(?:definition\\|specifier\\)" but, is that > > correct? In C code, treesit-explore-mode shows function definition > > nodes as "function_definition", so I think the regexp is matching more > > nodes than expected, causing C-M-a C-M-e to move to weird places in the > > buffer. > > Right, I’ve fixed the value in 599369bf3a3. Thanks, this seems to work now as expected. So I'm closing the bug. From unknown Sat Aug 16 20:56:09 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Thu, 29 Dec 2022 12:24:07 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator