在切换和显示缓冲区时,是否可以通过每个emacs帧获取相关缓冲区的子集
我的意思是
请告诉我是否有用于Xorg/Linux平台的OSD 屏幕显示程序或技术,它可以以比pango更丰富的方式呈现XML,至少支持align属性和多个span或div元素,因此它可以显示多个列.
到目前为止我检查了什么:
gnome-osd-client呈现XML,但gnome-osd-client提供非常简单的XML pango
osd_cat但它不带任何XML.
navit有一些使用osd的OSM数据XML,但难以理解.
如果没有这样的osd程序,请告诉我
具有不同后端支持的HTML渲染器可以编程为使用OSD显示.
来自在后端使用osd的其他现有包(如navit)的相关源可用于呈现此类XML.
我的问题是我实际上使用了pango,但它不够灵活,无法满足我在多列中显示XML的需求.
我想运行任何作为参数给出的程序,通过shell然后希望将shell保留为交互式shell以便稍后使用.
#!/bin/bash
bash -i <<EOF
$@
exec <> /dev/tty
EOF
Run Code Online (Sandbox Code Playgroud)
但它不适用于zsh
#!/bin/bash
zsh -i <<EOF
$@
exec <> /dev/tty
EOF
Run Code Online (Sandbox Code Playgroud)
如果有人知道更多改进的方法,请告诉我.
我已经看到一个答案:Lisp如何让你重新定义语言本身? Stack Overflow问题(由Noah Lavine回答):
宏并不是对语言的完全重新定义,至少据我所知(我实际上是一个Schemer;我可能是错的),因为有一个限制.宏只能占用代码的单个子树,并生成一个子树来替换它.因此,你不能编写整个程序转换宏,就像那样酷.
阅读本文之后,我很好奇是否在Lisp或Scheme(或其他语言)中存在"整个程序转换宏".
如果不是那么为什么?
更新
一种用例,例如
在stumpwm代码中,这里的一些函数都在不同的lisp源文件中使用了一个动态/全局defvar变量*screen-list*,它在primitives.lisp中定义,但在screen.lisp,user.lisp,window.lisp中使用.(这里每个文件都有与一个方面或对象相关的函数,类,变量)
现在我想在闭包下定义这些函数,其中 *screen-list*变量可以通过let表单获得,它不应该是动态/全局变量,但是不要将这些函数移动到一个地方(因为我不希望这些函数丢失来自相关文件的位置)这样只有这些函数才能访问这个变量.
以上例如同样适用于标签和flet,因此我们可以进一步使它成为只需要变量,功能将可用于需要它的人.
注意一种方法可能是实现并使用一些宏defun_with_context进行defun,其中第一个参数是上下文,其中let,flet变量definend.但除此之外,Vatine和Gareth Rees回答说,它可以通过读者宏来实现.
Lisp和Scheme中存在所有不错的POOP(基于原型的面向对象编程)框架
我认识一个*Sheeple
但我没有找到任何其他的.
在网页上使用xmlstarlet时,我大部分时间都面临实体引用错误.这使得它无法从网页中提取.
因为html页面不是很好的形成XML(还有一些处理html的选项吗?)我将它们转换为
tidy -asxhtml
Run Code Online (Sandbox Code Playgroud)
到XHTML,其中整齐的声明
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Run Code Online (Sandbox Code Playgroud)
然后用xmlstarlet处理它
curl http://www.xfree86.org/current/index.html | tidy -asxhtml | \
xmlstarlet sel --net -T -t -m hr -v . -
Run Code Online (Sandbox Code Playgroud)
它总是抛出相同的错误
-:13: parser error : Entity 'reg' not defined
<h1>Documentation for XFree86® version 4.8.0</h1>
Run Code Online (Sandbox Code Playgroud)
有人知道如何让xmlsttarlet知道实体引用文件.