小编Pau*_*omé的帖子

使用Emacs作为IDE

目前,当我使用C或C++编码时,我使用Emacs的工作流涉及三个窗口.右边最大的包含我正在使用的文件.左边分为两个,底部是我用来输入编译或make命令的shell,top通常是我在工作时要咨询的某种文档或README文件.现在我知道有一些非常专业的Emacs用户,我很好奇其他Emacs在功能上是有用的,如果打算将它用作一个完整的IDE.具体来说,大多数IDE通常以某种形式实现这些功能:

  • 源代码编辑器
  • 编译器
  • 调试
  • 文档查找
  • 版本控制
  • OO功能,如类查找和对象检查器

对于其中的一些,很明显Emacs如何适应这些功能,但其余的呢?此外,如果必须关注特定语言,我会说它应该是C++.

编辑:一位用户指出,当我说'剩下的'时,我应该更具体一些.大多数情况下,我对有效的版本控制以及文档查找感到好奇.例如,在SLIME中,在Lisp函数上进行快速hyperspec查找相当容易.有没有快速查找C++ STL文档中的内容(例如,如果我忘记了hash_map的确切语法)?

ide emacs development-environment slime

166
推荐指数
10
解决办法
7万
查看次数

spotify auth上的重定向URI无效

我尝试使用spotify Web API通过我的应用程序授权用户但我收到此错误:

INVALID_CLIENT: Invalid redirect URI
Run Code Online (Sandbox Code Playgroud)

网址:

GET https://accounts.spotify.com/authorize/?client_id=6ae90bf75bf748c8874a75d16682f0c5&response_type=code&redirect_uri=https%3A%2F%2Fexample.com%2Fcallback&scope=user-read-private%20user-read-email
Run Code Online (Sandbox Code Playgroud)

我看不出问题出在哪里......你能帮忙吗?

authentication spotify

49
推荐指数
4
解决办法
4万
查看次数

什么时候应该使用Emacs#'函数语法?

基本上,我什么时候应该使用Emacs Lisp的function程序?我还没有发现其中有行为上的差异,如果你函数作为参数传递的任何实例'like-this#'like-this.事实上,如果我评估(eq 'goto-char #'goto-char)它返回t.

我遇到的Emacs Lisp代码很少使用function/ #'; 作者只是quote/ '一切.
例:(add-hook 'emacs-lisp-hook 'turn-on-eldoc-mode)

但是,我可以找到一些反例.这是Emacs 24.3源代码中的一个electric.el:

(add-hook 'post-self-insert-hook
          #'electric-indent-post-self-insert-function
          'append)
Run Code Online (Sandbox Code Playgroud)

猜测和进一步的问题:

  • 它只是一个Lisp-2风格大会吗?
  • 它与字节编译有关吗?
  • 这对图书馆作家来说是否有意义?比如,如果您打算在大量环境和Emacs版本下运行您的代码?(推论是如果你只是"dotfile-tinkering"那么你不需要担心这一切.)
  • 什么时候应该引用lambda表达式?我什么时候可以不加引号?
    例如,(do-something '(lambda …
    (do-something (lambda …
  • 在早期版本的Emacs中是否有一些限制,这些限制引起了elisp的这些方面?就像,我可以忽略大多之间的区别'#',只要我使用一个版本的Emacs超过最近X

lisp emacs elisp

34
推荐指数
3
解决办法
3148
查看次数

计划延续假人

对于我的生活,我无法理解延续.我认为这个问题源于我不明白它们的用途.我在书籍或网上找到的所有例子都非常简单.他们让我想知道,为什么有人甚至想要延续?

这是一个典型的不切实际的例子,来自TSPL,我认为这是一本非常公认的关于这个主题的书.在英语中,他们将继续描述为计算结果的"做什么".好的,这是可以理解的.

然后,第二个例子给出:

(call/cc
  (lambda (k)
    (* 5 (k 4)))) => 4 
Run Code Online (Sandbox Code Playgroud)

这有什么用?k甚至没有定义!当(k 4)无法计算时,如何评估此代码?更何况,如何call/cc知道撕掉4最内层表达式的参数并返回它?会发生什么事(* 5 ..?如果这个最外层的表达式被丢弃,为什么要写呢?

然后,陈述的"较少"的简单示例是如何使用call/cc来提供递归的非本地退出.这听起来像流控制指令,即break/return在命令式语言中,而不是计算.

通过这些动议的目的是什么?如果有人需要计算结果,为什么不只是存储它并在以后根据需要调用.

lisp scheme continuations

27
推荐指数
3
解决办法
5412
查看次数

如何打破嵌套的foreach循环然后转到c#上的父foreach循环

我有以下代码:

foreach(// Some condition here)
{
    while (// Some condition here)
    {
        foreach (// Some condition here)
        {
             if (// Condition again)
             {
                  //Do some code
             }
             if (// Condition again)
             {
                 //Stop the first foreach then go back to first foreach
             }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我想要做的是当我if在最后一个foreach循环中点击第二个语句时返回第一个foreach循环.

注意:如果第二个if语句不为真,它应该继续最后一个foreach循环,直到条件不为真.

提前致谢!

c# foreach loops if-statement while-loop

22
推荐指数
4
解决办法
2万
查看次数

Emacs lisp"shell-command-on-region"

在GNU Emacs中,我想在当前选定的文本上运行一个程序figlet.然后我想评论生产的区域.

我已经弄清楚如何使用标准的Emacs命令来做到这一点:

  • 在单词的开头用C- <space>设置标记
  • 将光标移动到单词的末尾
  • Cu Mx shell-command-on-region RET figlet RET
  • Mx评论区域RET

但是,我没有弄清楚如何编写Emacs lisp程序来完成所有这些工作.这是我的尝试:

(defun figlet-region () 
  (interactive)
  (push-mark)
  (shell-command-on-region "figlet")
  (comment-region (mark) (point))
  (pop-mark)
)

(global-set-key "\C-c\C-f" 'figlet-region)
Run Code Online (Sandbox Code Playgroud)

然后C-<space>; M-x figlet-region生产垃圾:

figlet-region: Wrong number of arguments: #[(start end command &optional output-buffer replace error-buffer display-error-buffer) "ÆÇÈ  
\"!É
'jÊ!j;j
0Wb
?Ë`Ì\"Í ÎQÎDRÎÉ!\"&
ffÏ )ãÐqÑ!#Ò#p=¬É$]d|e^|Íed ΠÎD¡ÎÉ!\"&â%&#qÉ$Á&%Ó *Í ÉØ#DÚ#É!\"&*#Ô!#ÕÖ×!8WrÐ!qd`Z'o   ØcÙÉ\"d'Zb)(Úp!)Û!*" [error-buffer small-temporary-file-directory temporary-file-directory exit-status error-file replace make-temp-file expand-file-name "scor" nil ...] 9 1945557 (let (string) (unless (mark) (error "The …

lisp emacs elisp

20
推荐指数
3
解决办法
6081
查看次数

为什么Common Lisp中不存在原始的`call-with-current-continuations`?

最近,我一直在调查Scheme和Common Lisp之间关于这两种语言对延续的方法的区别.

我注意到Common Lisp方法比Scheme方法更保守.

此外,Scheme提供了一个原始的call-with-current-continuation,通常是缩写的call/cc,它在ANSI Common Lisp规范中没有等价物(尽管有一些库试图实现它们).

有没有人知道为什么决定不在ANSI Common Lisp规范中创建类似的原语?

提前致谢.

lisp scheme continuations callcc common-lisp

20
推荐指数
3
解决办法
3091
查看次数

iPhone/iOS上常见的LISP

是否可以Common Lisp在iOS中调用函数?

如果是这样,是否可以在动态库中创建它?

lisp iphone common-lisp ios4 ios

13
推荐指数
1
解决办法
7374
查看次数

LISP In Small Pieces - 运行代码的最佳LISP环境?

Christian Queinnec写了一篇名为LISP In Small Pieces的杰作,其中包括11个Lisp Interpreters和两个Lisp编译器.

当你去从网站下载的代码在这里 -它的评论:

The programs of this book are available on the net. 
These programs used to run with some Scheme systems around 1994.
Run Code Online (Sandbox Code Playgroud)

任何的想法:

(a)当时运行的计划系统是什么,更重要的是;

(b)今天会运行哪些计划系统?

lisp scheme common-lisp racket

13
推荐指数
3
解决办法
3220
查看次数

为什么Ruby中没有深层复制方法?

我正在研究技术图纸(svg/ruby​​)的解决方案.我想操纵矩形,并add!在这个类中有一个方法:

class Rect
  def add!(delta)
    @x1+=delta 
    ... # and so on
    self
  end
end
Run Code Online (Sandbox Code Playgroud)

我还需要一个add返回a Rect但不操作的方法self:

def add(delta)
  r=self.dup/clone/"copy" # <-- not realy the 3 and no quotes, just in text here
  r.add! delta
end
Run Code Online (Sandbox Code Playgroud)

dup并且clone不要做我的事情但是:

def copy; Marshal.load(Marshal.dump(self)); end
Run Code Online (Sandbox Code Playgroud)

确实.

为什么普通Ruby中不存在这样的基本功能?请不要告诉我,我可以扭转addadd!,让add做的工作,并add!调用它.

ruby copy deep-copy

10
推荐指数
1
解决办法
3621
查看次数