• Emacshacking第三天


      Starting!!

      1.啰嗦几句  

     1 /*
     2 
     3    1.关于备份功能
     4      emacs有auto-backup和auto-save两种备份功能:
     5      1.auto-backup是将保存好的文件进行备份,类似Git的版本控制。
     6      2,auto-save是emacs为了提高编辑体验,便每隔很少的时间间隔就自动对当前文件和buffer内容进行保存。
     7   
     8      但实际上一般的emacs用户都用不到这些功能,或者已经哟更强大的替代品.

          (setq make-backup-files nil)
          (setq auto-save-default nil)
        2.关于快捷键
          在使用“C-h f”等查询命令的时候,emacs默认会新开启一个窗口,但是光标还会在原来的窗口,如果MainWindow在编辑一些重要的文件,多开启一些窗口会很不爽,我们想让emacs在最下面
    开启一个minibuffer来提供这样类似的功能,#popwin#就是这样的一个package。
    我们希望将主窗口只起到编辑的作用,一些查询和辅助功能最好统一到最下面的minibuffer中。这样会显得很整齐。
          因为时间常长了就会忘掉这些安装和功能的细节,但这些细节特别好的帮助我们理解emacs。如果说是想成为开发者而不永远是小白,就需要记住这些东西。
    9 10 */

      

      

      2.关于lisp语法

     1 /*
     2   
     3     1.在 Emacs 中,Major Mode 又分为三种,
     4 
     5        text-mode ,用于编辑文本文件
     6        special-mode ,特殊模式(很少见)
     7        prog-mode ,所有的编程语言的父模式
     8   在每一个模式(mode)中它的名称与各个变量还有函数都是有特定的命名规则,比如所有的 
     9   模式都被命名为 ModeName-mode ,里面所设置的快捷键则为 ModeName-mode-key-
    10   map ,而所有的钩子则会被命名为 ModeName-mode-hook
    11 
    12     2.features
    13   当一个Lisp插件(package)调用(provide 'symbol_name)函数的时候,emacs会将symbol_name加入到内置的features-lists中。"C-h v"可以查看该变量。
    14  这里能找到关于详细介绍。
    15  The purpose of features is for emacs to know if a package is already loaded.
    16 
    17     3.load-file , load , require , autoload 
    18 
    19      这里能找到详细介绍

            load-file 用于打开某一个指定的文件,用于当你不想让 Emacs 来去决定加 载某个配置文件时( .el 或者 .elc 文件)。

            load 搜索 load-path 中的路径并打开第一个所找到的匹配文件名的文件。首先查找.elc编译好的文件,如果没有在检查.el文件 。

           (当load函数没有load-path的时候,可以直接使用"load-file+文件的绝对路径“进行加载)。 不过这个时候需要明确的告诉emacs需要加载的是哪个文件(后缀名.el或者.elc也要写上)

            require 加载还未被加载的插件。首先它会查看变量 features 中是否存在所要加载的 符号如果不存在则使用上面提到的 load 将其载入。(有点类似于其他编程语言中的 import )

                        1).将配置文件中的(require ‘###)直接改成(load '#####.el)是完全可以的。

            总结一下:(require ’###)函数首先回去查找features-list中是否存在该函数,如果没有,便会调用load函数(依赖于load-path)来首先加载###.elc为名的文件,如果没有便加载###.el文件进行一句一句的解释执行(如果还是没有便会报错),一直执行到(provide ‘###)这句函数的时候才会将该函数加载到features-list中。至于后续的emacs机制,以后再说吧。

            autoload 用于仅在函数调用时加载文件,使用此方法可以大大节省编辑器的启动时间。

    32 */

     

       3.关于小技巧

        在写C++代码时候,会有一些像#include<#######>之类的经常写但又容易写错的代码。emacs提供了一些缩写补全功能和缩进功能。

     1 /*
     2 
     3     (setq-default abbrev-mode t)
     4 (define-abbrev-table 'global-abbrev-table '(
     5                         ;; Shifu
     6                         ("inc" "#include<")
     7                           ))
     8 
     9 
    10    输入“8zl”按ENTER或者任何非字母键就会补全。这时候可以只写半个括号,然后按“>”边会很方便的补全。看来以后是真的离不开emacs了。。。
    11   该插件会在目录下新建一个abbrev_defs的文件用来保存一些配置信息。
    12 

        还提供了一个功能,叫Hippie 补全:快捷键”C-c C-h“,可以在company-mode不能提供补全的情况下进行补全。
    13 */

      

      4.关于update-autload

        在安装popwin这个package的时候,在GitHub源码上的调用方式中有两句话:

    (require 'popwin)
    (popwin-mode t)  
    

        而在安装company的时候,调用方式:

    (global-company-mode t)
    

      这里有一些lisp语法上的概念:

      在emacs加载package系统的时候(package-initialize),系统会在每一个package的配置文件中(update-directory-autoloads ~/.emacs.d/lisp)查找有autload魔法注释的函数,然后将这些函数放到一个叫###_autload.el的文件中。如果没有,就需要自行将该插件加载进去——(require ‘###)。而require函数调用的本质就是调用load来将文件加载到features中的。

      有关el和elc文件的事情后面再细说,太难。。。感觉有一点像是C++的头文件加载的过程。但是在使用load-file加载的时候要注意,因为使用的是文件的全名,如果是.elc文件,那如果后面对源文件进行修改的话,一定要重新编译,否则修改的东西是不会生效的甚至会报错。

      5.关于orgmode文学编程

      因为不是很熟悉orgmode的基本操作,感觉现阶段还只是想用熟悉emacs的语法和基本使用,所以就这一块就放一下吧。

      突然发现hackingEmacsde的本质就是学会发现问题,然后耐心去Google,这里强调一些简单的"C-h C-f"等查找快捷键,学好这些快捷键是熟悉emacs的必要条件。

      这两天的进度有些慢,算法部分有点落下。。。不过都不能放弃,坚持咯~

  • 相关阅读:
    spring学习笔记---数据库事务并发与锁详解
    VIM
    Linux命令总结(转)
    js实现配置菜品规格时,向后台传一个json格式字符串
    js 子窗口调用父框框方法
    springMVC 的拦截器理解
    java 使用poi 导入Excel 数据到数据库
    导入jeesite 项目
    JS动态添加删除html
    在Linux CentOS 下安装JDK 1.8
  • 原文地址:https://www.cnblogs.com/haotianmichael/p/8425808.html
Copyright © 2020-2023  润新知