emacs 定制进缩风格

纵览

emacs 文档中描述,进缩风格实现只需要两步:第一步,根据内容与上下文找到对应的进缩风格的类别;第二步,依据进缩风格决定的表达式锚点的进缩偏移。下面我们对 cc-mode 风格定制加以说明。

进缩风格的类别

比如在 C 代码中,使用 C-c . 然后再使用两次 tab ,就可以出现多个内置风格供选择,每种风格对进缩偏移做了或多或少的设定,不尽相同,才表现出了不同的进缩风格。

进缩偏移

进缩偏移,就是对变量进行设定产生的。有两个十分重要的变量

c-basic-offsetc-offsets-alist

是前者的详细,是一个普通的整数值;后者的详细说明在这里,这是一个关联列表,存储了语法符号与偏移量的键值对,使用

c-set-offset

对其中的元素进行修改,下面给出了如下修改这些语法符号相关联的偏移量的方式,

  (setq c-basic-offset 4)
  (c-set-offset ‘substatement-open 0)
  (c-set-offset ‘arglist-intro ‘+)
  (c-set-offset ‘arglist-cont-nonempty ‘+)
  (c-set-offset ‘statement-case-intro ‘+)
  (c-set-offset ‘case-label 0)
  (c-set-offset ‘statement-case-open 0)

关于其中的“+”,在此处有很详细的说明,无非就是对 c-basic-offset 变量的值进行加减乘除,也就一个“+”,就代表偏移1倍 c-basic-offset ,在此处就是 4 。另外,语法符号名称众多,我们没有必要统统掌握,如果需要进缩某条给定的语句,但是我们不知道其语法符号的名称,在相关行上使用 C-c C-s 就可以知道其语法符号的名称,再做相应修改即可。

风格举例

  (setq c-basic-offset 4)
  (c-set-offset ‘substatement-open 0)
  (c-set-offset ‘statement-case-intro ‘+)
  (c-set-offset ‘case-label 0)
  (c-set-offset ‘statement-case-open 0)

上面的风格可以达到如下的效果,

    switch (a)
    {
    case 1:
        break;
    default:
        break;
    }

完整的代码如下

(defun my-c-mode-hook ()
  (setq c-basic-offset 4)
  (c-set-offset ‘substatement-open 0)
  (c-set-offset ‘statement-case-intro ‘+)
  (c-set-offset ‘case-label 0)
  (c-set-offset ‘statement-case-open 0))
(add-hook ‘c-mode-common-hook ‘my-c-mode-hook)

定义自己的风格名称

我们肯定有这样的需求,在不同的项目中使用不同的编码风格,还得 emacs 中的内置风格不能满足需求,可以自定义多种不同的风格,推荐使用这里的方式,简而言之就是采用修改内置风格的方式自定义,省时省力,

(defun my-c-mode-hook ()
  (c-add-style "ownstyle" ‘(
                "k&r"
                (c-basic-offset . 4))))
(add-hook ‘c-mode-common-hook ‘my-c-mode-hook)

只是把 k&r 中的基本进缩量修改为 4 ,其他的样式与 k&r 风格一致。这样重启 emacs ,打开 C 文件,使用 C-c . TAB TAB 就可以看见 ownstyle 了。

emacs 定制进缩风格,布布扣,bubuko.com

时间: 2024-10-12 15:30:49

emacs 定制进缩风格的相关文章

手把手教你学会 Emacs 定制

Table of Contents 1 前言 2 配置Emacs 2.1 设置界面 2.2 全屏以及最大化 2.3 设置周边 2.4 显示时间设置 2.5 设置日历 2.6 设置符合个人的操作习惯 2.7 其它小功能 2.8 绑定键设置 2.9 C/C++/JAVA编程模式 1 前言 说实话,emacs的迷人之处就是具有非常强的自主配置能力,你可以完全根据自己的个人习惯来设置它.就像我在下面罗列的那些lisp代码,你可以 尽情的改变F1,F2..等等键所对应的功能,也可以在编辑C/C++/jav

android开发游记:SpringView 下拉刷新的高效解决方案,定制你自己风格的拖拽页面

关于下拉刷新/上拉加载更多的解决方案网上已经有很多了,浏览了目前主流的下拉控件比如PullToRefresh库等,第一:大多数实现库都难以进行动画和样式的自定义.第二:不能很好的兼容多种滚动控件,它们都对listView.RecyclerView等进行了不同程度的重新实现,你在项目中就得使用库提供的PullToRefreshListView.PullToRefreshRecyclerView等来代替源生的listView.RecyclerView等,这样的方式其实并不好,随着android版本的

Emacs 16进制模式

http://blog.163.com/lan_ne/blog/static/1926701702012112272840545/ ALT+X hexl-mode   进入16进制模式 在这一模式,直接输入时还是输入按键的值,如输入3在光标位置出现3的ascii码33 想要输入16进制数,需用 ALT+X hexl-insert-hex-char 命令 或者 CTRL+ALT+X 命令 然后输入16进制数回车 比如输入40,就代表0x40. 退出模式命令 ALX+X hexl-mode-exit

Android开发学习之 定制界面风格

统一的用户界面是可以使得应用程序更友好.要做到用户界面的统一,我们就必须用到风格(style)和主题(theme).OPhone系统提供了很多系统默认的风格和主题,但是很多情况下,这些不能满足我们的需要.例如我们不可能总是希望背景色是系统规定的,我们也不希望字体大小一成不变.当然我们可以在每个空间里面进行修改,但是如果放到风格里面去做,可以更容易的做到用户界面统一.如果有朋友还不清楚什么是风格什么是主题,你可以在Andoird的Dev Guide文档里面找到详细的解释,这篇文章要描述的是开发者怎

Android开发:怎样定制界面风格

统一的用户界面是可以使得应用程序更友好.要做到用户界面的统一,我们就必须用到风格(style)和主题(theme).OPhone系统提供了很多系统默认的风格和主题,但是很多情况下,这些不能满足我们的需要.例如我们不可能总是希望背景色是系统规定的,我们也不希望字体大小一成不变.当然我们可以在每个空间里面进行修改,但是如果放到风格里面去做,可以更容易的做到用户界面统一.如果有朋友还不清楚什么是风格什么是主题,你可以在Andoird的Dev Guide文档里面找到详细的解释,这篇文章要描述的是开发者怎

自定义Angular指令与jQuery实现的Bootstrap风格数据双向绑定的单选&多选下拉框

先说点闲话,熟悉Angular的猿们会喜欢这个插件的. 00.本末倒置 不得不承认我是一个喜欢本末倒置的人,学生时代就喜欢先把晚交的作业先做,留着马上就要交的作业不做,然后慢悠悠做完不重要的作业,卧槽,XX作业马上要交了,赶紧补补补.如今做这个项目,因为没找到合适的多选下拉Web插件,又不想用html自带的丑陋的<select multiple></select>,自己花了一整天时间做了一个.或许这样占用的主要功能开发的时间,开发起来会更有紧迫感吧.感觉自己是个抖M自虐倾向,并且伴

网上搜集第三方

iOS开发-常用第三方开源框架介绍 为了了解一下目前第三方库的普及程度,下面列举一些知名App对第三方库的依赖. 网易新闻 AppleReachability ASIHTTPRequest EGOTableViewPullRefresh GTMNSString+HTML MGTemplateEngine MPOAuth RegexKitLite SDWebImage SSZipArchive wax Garageband MurmurHash libpng zlib SBJson (json-f

iOS开发-常用第三方开源框架介绍(你了解的ios只是冰山一角)

iOS开发-常用第三方开源框架介绍(你了解的ios只是冰山一角) 2015-04-05 15:25 2482人阅读 评论(1) 收藏 举报开源框架 图像: 1.图片浏览控件MWPhotoBrowser       实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存.可对图片进行缩放等操作.      下载:https://github.com/mwaterfall/MWPhotoBrowser目前比较活跃的社区仍旧是Github,

常用iOS的第三方框架

图像:1.图片浏览控件MWPhotoBrowser       实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存.可对图片进行缩放等操作.      下载:https://github.com/mwaterfall/MWPhotoBrowser 目前比较活跃的社区仍旧是Github,除此以外也有一些不错的库散落在Google Code.SourceForge等地方.由于Github社区太过主流,这里主要介绍一下Github里面流