|
From: | Maxime Devos |
Subject: | Re: [PATCH] add language/wisp to Guile? |
Date: | Sat, 25 Feb 2023 11:42:18 +0100 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.7.0 |
On 25-02-2023 01:15, Matt Wette wrote:
On 2/24/23 3:51 PM, Maxime Devos wrote:On 25-02-2023 00:48, Maxime Devos wrote:(**) For compatibility with Racket, it's not like we couldn't implement both "#lang" and "-*- stuff: language -*-".TBC, I mean ‘only support #lang' for values of 'lang' that Racket supports’, or alternatively ‘support #lang for compatibility, but recommend -*- ... -*- in the Guile manual.’.The point of this is to tell the compiler what language it needs to parse,if not the default (Scheme). Using `#lang pascal' or `#!lang pascal' allowsthe compiler to figure this out in the first few characters read. Using`-*- lang: pascal -*-' might require the compiler to read a lot of text (not knowing if what text is comment or not) to determine if language has been specified.For the `-*-' based design, is there a maximum number of characters to be read before deciding?
Guile already searches for '-*- ... -*-' lines, as mentioned in a previous message:
(*) The port encoding detection supports "-*- coding: whatever -*-",presumably that functionality could be reused.
As such, it shouldn't incur an overly large cost to support '-*- something: modula -*-' too.
On the character limit: according to Emacs documentation, there is a line limit: the '-*- ... -*-' must be on the first line. (See: ‘(emacs)Specifying File Variables’.) This seems the same situation like '#lang' to me; not ‘a lot of text’.
A more explicit character limit of 'first few hundred bytes' is mentioned in see the documentation of 'file-encoding':
-- Scheme Procedure: file-encoding port -- C Function: scm_file_encoding (port) Attempt to scan the **first few hundred bytes** from the PORT for hints about its character encoding. Return a string containing the encoding name or ‘#f’ if the encoding cannot be determined. The port is rewound. Currently, the only supported method is to look for an Emacs-like character coding declaration (*note how Emacs recognizes file encoding: (emacs)Recognize Coding.). The coding declaration is of the form ‘coding: XXXXX’ and must appear in a Scheme comment. Additional heuristics may be added in the future. Greetings, Maxime.
OpenPGP_0x49E3EE22191725EE.asc
Description: OpenPGP public key
OpenPGP_signature
Description: OpenPGP digital signature
[Prev in Thread] | Current Thread | [Next in Thread] |