首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Emacs Lisp2

Emacs: (windows可以双击emacs图标,Linux可以输入% emacs & ),;; 然后键盘上键入q 跳过系统欢迎信息,;; 先观察Emacs屏幕底部,会给出一堆关于当前工作情况信息...;; 缓冲区也叫做工作区,Emacs打开一个文件,实际只是Emacs构造该文件一个副本,放到缓冲区,;; Emacs对该文件编辑也是针对该副本编辑,唯有保存改动时,Emacs才会把缓冲区内容复制到原文件中去...2 2);; Elisp中表达式可以通过括号来嵌套(+ 2 (+ 1 1));; lisp-interaction-mode模式,我们可以直接计算一个表达式,计算方法是(+ 3 (+ 1 2));...; ^ 把光标放在这里,并且键入Ctrl-j (之后将简写成C-j);; C-j是一个快捷命令,在后台,该快捷键将调用求值命令,并且把计算结果;; 插入到当前缓冲区;; 如果不希望Emacs缓冲区插入计算结果...,我们还可以表达式末尾使用C-x C-e组合键;; C-x C-e意思是: 先按下Ctrl-x 再按下Ctrl-e ;; 这个命令会让Emacs辅助缓冲区,也就是Emacs窗口最底部那行显示计算结果

98240
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Chrome Extension in CLJS —— 搭建开发环境

    前言  磨刀不误砍柴工,本篇将介绍如何搭建Chrome插件ClojureScript开发环境。...> .nreplport 4.启动nRepl,lein repl  这时vim输入:Source map就会看到cljs.core/map定义,若不行则按如下设置: :Connect Protocol...另外一个十分重要信息是,optimizations不为:none项目下文件是无法执行fireplace指令,所以开发Content Scrpts时就十分痛苦了~~~  那有什么其他办法呢?...cljs nrepl供fireplace使用,但在终端我们看到一个clojurerepl,而tslime恰好要用就是这个终端repl。...然后就可以vim把光标移动到相应表达式上按,那么这个表达式就会自动复制粘贴到repl执行了。

    2.1K60

    Emacs Lisp

    ; 第一步首先启动Emacs: (windows可以双击emacs图标,Linux可以输入% emacs & ), ;; 然后键盘上键入q 跳过系统欢迎信息, ;; 先观察Emacs屏幕底部...;; 缓冲区也叫做工作区,Emacs打开一个文件,实际只是Emacs构造该文件一个副本,放到缓冲区, ;; Emacs对该文件编辑也是针对该副本编辑,唯有保存改动时,Emacs才会把缓冲区内容复制到原文件中去...(+ 2 2) ;; Elisp中表达式可以通过括号来嵌套 (+ 2 (+ 1 1)) ;; lisp-interaction-mode模式,我们可以直接计算一个表达式,计算方法是 (+ 3...(+ 1 2)) ;; ^ 把光标放在这里,并且键入Ctrl-j (之后将简写成C-j) ;; C-j是一个快捷命令,在后台,该快捷键将调用求值命令,并且把计算结果 ;; 插入到当前缓冲区 ;...; 如果不希望Emacs缓冲区插入计算结果,我们还可以表达式末尾使用C-x C-e组合键 ;; C-x C-e意思是: 先按下Ctrl-x 再按下Ctrl-e ;; 这个命令会让Emacs辅助缓冲区

    2.3K40

    一名ClojurianEmacs配置

    按照惯例,我~/.emacs.d目录下建立一个lisp目录用于存放所有自定义模块文件,随后init.el中加入下面这句代码,意在把lisp目录加到emacs加载路径列表里。...(add-to-list 'load-path (expand-file-name "lisp" user-emacs-directory)) 看似,接下来就可以每个独立模块文件编写各种功能配置...这种时候,我们就要求助于elisp文档了。emacs按下c-h i获取主话题(topic)菜单,然后点击Elisp进入它操作指南。...换句话说,除非你想编译包含上述代码文件,否则它作用和progn一模一样,顺序地求值包含其中表达式。...最后,需要在init.el文件添加入这么一句(require 'init-clojure-cider),重新启动emacs,找到一个Clojure项目,按下C-c M-j (hack-jack-in)

    2.8K20

    Emacs Lisp

    ; 第一步首先启动Emacs: (windows可以双击emacs图标,Linux可以输入% emacs & ), ;; 然后键盘上键入q 跳过系统欢迎信息, ;; 先观察Emacs屏幕底部...;; 缓冲区也叫做工作区,Emacs打开一个文件,实际只是Emacs构造该文件一个副本,放到缓冲区, ;; Emacs对该文件编辑也是针对该副本编辑,唯有保存改动时,Emacs才会把缓冲区内容复制到原文件中去...(+ 2 2) ;; Elisp中表达式可以通过括号来嵌套 (+ 2 (+ 1 1)) ;; lisp-interaction-mode模式,我们可以直接计算一个表达式,计算方法是 (+ 3...(+ 1 2)) ;; ^ 把光标放在这里,并且键入Ctrl-j (之后将简写成C-j) ;; C-j是一个快捷命令,在后台,该快捷键将调用求值命令,并且把计算结果 ;; 插入到当前缓冲区 ;...; 如果不希望Emacs缓冲区插入计算结果,我们还可以表达式末尾使用C-x C-e组合键 ;; C-x C-e意思是: 先按下Ctrl-x 再按下Ctrl-e ;; 这个命令会让Emacs辅助缓冲区

    2.2K30

    GNU emacs Lisp小结3

    4.push-mark 指定位置设置一个标记,并在标记环中记录原来标记值。 5.goto-char 将位点设置为由参量指定位置。...2.交互表达式“b” 传送给insert-buffer函数参量应是一个存在缓冲区或者这个缓冲区名字。 大写“B”可以允许参量传送不存在缓存区。...buffer (get-buffer buffer)))    ;then-part 5.2.4 函数体or表达式 一个or函数可以有很多参量。...它逐一对每一个参量并返回第一个其值不是nil参量值。 一旦遇到其值不是nil参量之后,or表达式就不再对后续参量求值。...2.and 逐一对每一个参量求值,直到有一个参量值是nil 3.&optional 函数定义中用于指出一个参量是可选参量。

    1.1K30

    Clojure 开发那些事

    作为万里长城第一步,这篇文章首先如何入门 Clojure 语法,紧接着介绍 Clojure 开发环境搭建,然后介绍使用第三方库时一些注意点,最后介绍一下常见测试方法。...使用比较简单,通过 Intellj 插件管理器安装后即可使用,第一次使用时需要设置下快捷键类型 Emacs + Cider 作为一门 Lisp 方言,怎么能没有一个 Emacs mode 呢?...Emacs + Cider 组合相比 Intellj + Cursive 最大优势就是对宏支持,Cider 提供了对宏展开快捷键,但在 Cursive 我没找到,不过宏也是比较高级功能,初学者应用用不到...最后还是建议初学者不要用 Emacs,学习成本太大,而且很容易就把注意力转移到编辑器学习上,等到学习了一段时间后尝试不迟。...nrepl Clojure REPL 可以连接到远程服务器上进程,直接对进程函数或变量进行修改,这是非常便利,对于很多运行时错误可以采用这种方式解决,Emacs 与 Intellj 里面都提供了连接远程

    1.6K20

    Chrome Extension in CLJS —— 搭建开发环境

    前言  磨刀不误砍柴工,本篇将介绍如何搭建Chrome插件ClojureScript开发环境。...> .nreplport 4.启动nRepl,lein repl  这时vim输入:Source map就会看到cljs.core/map定义,若不行则按如下设置: :Connect Protocol...另外一个十分重要信息是,optimizations不为:none项目下文件是无法执行fireplace指令,所以开发Content Scrpts时就十分痛苦了~~~  那有什么其他办法呢?...cljs nrepl供fireplace使用,但在终端我们看到一个clojurerepl,而tslime恰好要用就是这个终端repl。...然后就可以vim把光标移动到相应表达式上按,那么这个表达式就会自动复制粘贴到repl执行了。

    1.7K20

    静态作用域和动态作用域

    所以,对于函数实现者来说他需要担心函数被使用位置会出现重名造成问题,对于函数调用者来说他也要担心这个问题,结果就是 Emacs Lisp 这样语言里,函数实现者往往会使用一个非常长名字来命名变量...它们主要区别在于对函数调用求值方式,前面描述了这个小语言中值表示,但是没说 Closure 是如何表示,我们一个 lambda 表达式求值一个 closure 时候不可以仅仅保留其参数列表和函数体...注意到与前面两种表达式求值不同,现在求值有两个环境,一个是 env,另一个是 capture,其中,env 是程序运行到调用表达式环境,我们在这个环境求出参数值,capture 是 lambda...表达式定义时捕获外部环境,我们在这个环境求 closure body 值,当然,参数绑定形成作用域要被放在 capture 环境开头。...当我们在当前作用域中找不到一个名字时,我们会先查找函数被调用空间。 C++ 模拟动态作用域 上一节讲的是解释器实现两种作用域方式,那如果我们就是想在现有的语言里模拟这个特性呢?

    2.1K10

    JavaScript栈数据结构(Stack )

    导文 JavaScript 可以通过数组实现栈数据结构。栈是一种遵循后进先出(LIFO)原则数据结构,它只允许栈顶进行插入和删除操作。 什么是Stack 类?...注:LIFO:last in first out 图例: 如何创建一个Stack 先将创建一个类来表示栈。...可以选择数组: function Stack() { //保存栈里元素 let items = []; //各种属性和方法声明 } ---- 如何修改Stack值 栈声明方法举例...} 查看 查看栈顶元素 因为栈顶就是最后进入元素,类内部是用数组保存元素,所以访问数组最后一个元素可以用 length - 1。...对表达式求值:使用栈可以方便地对表达式进行求值,例如判断表达式括号是否匹配、转换中缀表达式为后缀表达式等。

    17540

    C语言学习——函数(含递归)

    根据(1)(2)(3)可知,逻辑上一个C语言程序是由函数构成,C语言程序从主函数开始执行,主函数调用其他函数,这些函数可能又调用别的函数,主函数执行完毕代表整个程序结束。...、函数调用 形式参数和实际参数 形式参数:定义函数时函数名后面括号变量名 实际参数:调用函数时函数名后面括号表达式 几点说明: 实参可以是常量、变量或表达式。...返回语句形式: return(表达式);或 return 表达式; 功能:使程序控制从被调用函数返回到调用函数,同时把值带给调用函数 说明: 函数返回值,必须用 return 语句带回。...return 语句只能把一个值传递给调用函数。 函数可有多个return语句,执行哪一个由程序执行情况来定。...,当有多个实参时,实参间用“ ,”分隔 实参表求值顺序,因系统而定(Turbo C 自右向左) 调用无参函数时,实参表列为空,但( )不能省 函数调用方式 按函数程序中出现位置,有三种调用方式

    71110

    【数据结构 | 入门】堆栈与队列(问题引入&实现&算法优化)

    七、队列链式存储实现 一、堆栈引入 计算机如何进行表达式求值 由于表达式符号是有优先级,所以这是难点之一 有以下两个表达式 显然后缀表达式更加简单,不用考虑优先级,演示一个例子...对这种求值策略我们有以下启示 这其实便是这节我们要讲堆栈 二、 堆栈抽象数据类型描述 例如我们叠在一起碗,使用清洗都和堆栈规则 如下图是堆栈变化图 其中...操作 pop操作 五、表达式求值 回到开头,我们再来 看表达式求值问题,为了避免运算符优先级复杂性,我们使用后缀表达式,并使用堆栈来实现,我们把运算符和运算数丢进堆栈,当为运算符时,pop...前两个运算数和运算符运算后再放入栈顶,最后栈顶运算数便是结果 但我们平时所用都是中缀表达式,所以我们如何把中缀表达式转换成后缀表达式,观察一个例子 其中存储运算符号结构便是堆栈..., 当添加一个工作时,Rear 加一,删除一个工作时,Front加一 此时队列末尾无法添加了,但实际前面还空着位置,那该如何处理呢?

    63010

    Swift之 @auto_closure

    但是方法调用,参数值是直接求值,比如我们有个判断一个数是否偶数函数: func isEven(num : Int) -> Bool { return num % 2 == 0; } 当我们调用...好吧,相信苹果Swift官方Blog在下一篇文章应该会有相应机制来判断当前环境,这里意思是没用宏来实现表达式延迟求值。),是怎么实现呢?...即便我们非Debug情况下编译也是一样,那怎么样条件执行呢,像上面的使用宏方式,当条件满足时候才对表达式求值?...@auto_closure功能非常强大和实用,有了它,我们就可以根据具体条件来对一个表达式求值,甚至多次求值。...最后,正如宏C地位一样,@auto_closure功能也是非常强大,但同样应该小心使用,因为调用者并不知道参数计算被影响(推迟)了。

    42920

    Python 自动化指南(繁琐工作自动化)第二版:二、流程控制

    因为这是块最后一行,所以执行返回到while循环开始,并重新求值条件。如果name值不等于字符串'your name',则条件为True,执行再次进入while子句。...用sys.exit()函数提前结束程序 最后一个要介绍流程控制概念是如何终止程序。如果程序执行到指令底部,程序总是终止。...然而,您可以通过调用sys.exit()函数使程序最后一条指令之前终止或退出。因为这个函数sys模块,你必须在你程序使用它之前导入sys。...一旦执行到达末尾,它就跳回到主程序循环开始,开始另一个游戏。 总结 通过使用求值为True或False(也称为条件)表达式,您可以编写决定执行什么代码和跳过什么代码程序。...当某个条件求值为True时,你也可以一个循环中反复执行代码。如果你需要退出一个循环或者跳回到循环开始,那么break和continue语句是很有用。 这些流程控制语句将让您编写更智能程序。

    2.3K50

    【数据结构】你知道波兰表达式和逆波兰表达式吗?我才知道原来栈表达式求值还能这样使用……

    今天内容我们将介绍栈另一种应用——表达式求值应用。...今天内容,我们将会介绍如何通过栈不需要考虑操作符优先级情况下来完成无歧义表达式求值。这时可能有朋友就有疑问了,这个栈还能再表达式求值中使用?并且不需要考虑操作符优先级?...表达式求值是程序设计语言编译中一个最基本问题,它实现是栈引用一个典型范例。...,对于前缀表达式演示例子给出前缀表达式:"*/-+abcde"我们可以通过一个存放操作符栈即可实现表达式求值求值基本逻辑如下所示: 表达式从左往右进行扫描; 遇到操作符时入栈,遇到第一个操作数时操作符出栈...今天内容到这里全部介绍了,在下一篇内容,我们将详细介绍如何通过代码实现表达式之间相互转换,大家记得关注哦!喜欢博主作品朋友还希望你能够点赞、收藏加评论,最后感谢各位支持,咱们下一篇再见!!

    6810

    Emacs 之光成长历程

    与大多数用户不同,嘉宾接触 Emacs 不久即开始尝试攒写自己配置,并陆陆续续发布了几个比较实用包,比如 valign[1],嘉宾是如何做到?...更令人好奇是,嘉宾如何在短期内熟悉 Emacs 源码并为之贡献多个 patch,相信通过嘉宾学习、贡献经历,可以给听众打开 Emacs 源码神秘面纱,让更多用户参与到 Emacs 贡献一个多小时分享...[2] • 00:23:58 源码贡献经历 • 00:27:32 源码贡献流程介绍 • 00:38:15 如何读懂 Emacs 源码 • 00:57:59 嘉宾一个 Emacs patch • 01...[5] • 对 Emacs 仓库提交记录[6] • 28 版本新增 shortdoc[7],解决手册冗长,提供简洁示例代码 •正则表达式两处文档: • 只介绍如何写正则 34.3 Regular...,句号后两个空格 • 注释用是 C 风格 /* */ ,而不是 C++ // • 函数名后面跟一个空格,再是括号 •读 Emacs 源码技巧 • lisp.h[12] 里面有 C 如何调用 ELisp

    40610

    手把手教你半个小时用python语言编程出你一个程序

    最后一次交互,我们看到表达式"32"产生一个字符串,而不是一个数字。在这种情况下,Python实际上是存储字符“3”和“2”,而不是数字32表示。如果你现在不太明白,不要太担心。...下面是一些来自chaos.py和convert.py复杂表达式例子: 空格表达式没有作用。最后一个表达式如果写成9/5*celsius+32,结果完全相同。...默认情况下,显示值之间放置一个空格字符。作为示例,下面print语句序列: 产生输出为: 最后一个语句说明了,字符串字面量表达式如何经常在print语句使用,作为标记输出方便方法。...赋值语义是,右侧表达式求值,然后产生值与左侧命名变量相关联。 下面是我们已经看到一些赋值: 最后一个赋值语句展示了如何使用变量的当前值来更新它值。在这个例子,我只是对以前值加1。...第二个例子,odd取前5个奇数值,循环体打印了这些数字平方。 现在,让我们回到这一节开始例子(来自chaos.py)再看一下循环头: 表达式值确定了循环执行次数。

    1.8K50

    第四节(基本程序控制)

    如何使用简单数组 ●如何使用for、while和do... while循环多次执行语句 ●如何嵌套程序控制语句 一.数组:基本概念: 开始学习for语句之前,应该先了解一下数组基本概念。...第5行声明了一个int类型变量count,将用于for循环。 第11行和第12行是for循环。 程序执行到for语句时,首先对初值部分求值本例,初值部分是count = 1。...可以创建一个表达式,用逗号运算符分隔两个子表达式。 按照从左至右顺序,依次对两个子表达式求值,整个表达式值是右边子表达式值。 使用逗号运算符,可以让for语句每个部分都完成多个任务。...利用嵌套for语句,可以完成一些复杂程序设计。下列程序不是一个复杂程序,但是它演示了如何嵌套for语句。...while语句循环条件为真时,执行循环体语句。​​ ​​do...while语句至少执行循环体语句一次,只要循环条件求值结果为真,就不断执行循环体语句。​​

    21110
    领券