小编Joh*_*den的帖子

在speedbar中显示隐藏文件

有没有办法显示文档调用高速条中的2级隐藏文件?例如.emacs

答案很长

事实证明,未示出的文件由正则表达式控制

通常"^\\(\\..*\\)\\'",我认为这意味着以点开头的所有内容

设置正则表达式:

(setq speedbar-directory-unshown-regexp "^$")
Run Code Online (Sandbox Code Playgroud)

显示一切的诀窍.

emacs

7
推荐指数
1
解决办法
1709
查看次数

有没有办法启用(int i = 0; ...在gcc中...而不必打开c99模式

我有一个非常大的程序,在没有警告的情况下编译gcc.

如果我在命令行上打开c99模式--std = c99,它会发出大量警告和错误.

但我喜欢这个成语 for(int i=0; i<20; i++){ code }

代替 {int i; for (i=0; i<20; i++){ code }}

有没有办法告诉gcc允许这个而且只有这个?

或者,有没有办法在我正在使用的特定功能中启用c99模式?就像是

#pragma c99 on 

for(int i=0; i<99; i++)
{
    code
}

#pragma c99 off
Run Code Online (Sandbox Code Playgroud)

c gcc for-loop c99 pragma

7
推荐指数
1
解决办法
4973
查看次数

如何在clojure中需要许多子命名空间?

我的命名空间目前开始

(ns web.site
  (:require ring.adapter.jetty)

  (:require ring.middleware.reload)
  (:require ring.middleware.stacktrace)
  (:require ring.middleware.params)
  (:require ring.middleware.keyword-params)
  (:require ring.middleware.nested-params)
  (:require ring.middleware.multipart-params)
  (:require ring.middleware.cookies)
  (:require ring.middleware.session)
  (:require ring.middleware.session.cookie)
  (:require ring.middleware.flash)
  (:require ring.middleware.resource)
  (:require ring.middleware.file-info))
Run Code Online (Sandbox Code Playgroud)

这里显然有一定的冗余.如何删除它?

namespaces clojure

7
推荐指数
1
解决办法
650
查看次数

我可以搜索树中的所有文本文件(但不能搜索二进制文件)中的某个字符串

到目前为止我最好的镜头是(用于在包含大型C程序的目录中查找字符串)

find ~/example_directory -type f \( -name "*.mk" -or -name "*.[sch]" \) -print0 | xargs -0 -e grep "example_string"
Run Code Online (Sandbox Code Playgroud)

哪个工作得很好,但它依赖于.mk makefile,.c或.h源文件和.s汇编程序文件中的所有有趣内容.

我正在考虑添加诸如"所有名为Makefile的文件"或"所有*.py python脚本"之类的内容,但如果有某种方法告诉find只查找文本文件,那就更容易了.

如果你只是在所有文件上运行grep,它需要很长时间,并且你会在目标文件上获得大量无趣的点击.

unix bash shell grep find

6
推荐指数
2
解决办法
4403
查看次数

在emacs中,我可以为代码设置一组换行设置,为文本设置一个换行设置吗?

经过大量的实验,我认为我喜欢:

(setq truncate-lines nil)
(setq word-wrap t)
Run Code Online (Sandbox Code Playgroud)

用于文本编辑,但是

(setq truncate-lines t)
(setq word-wrap nil)
Run Code Online (Sandbox Code Playgroud)

用于编程.

在所有模式中,我喜欢:

(setq fill-column 80)
Run Code Online (Sandbox Code Playgroud)

所以我可以使用M-qC-u M-q将文本传输到80列,但我也发现我不喜欢auto-fill模式,并且永远不会喜欢它.

我也不是那么热衷visual-line-mode(或者至少它不是那个word-wrap)

我可以把一些咒语放在我的.emacs文件中,这会让我开心吗?

我定义很高兴:'这一切只是做我想要的,我不需要再考虑这个了'.

emacs word-wrap

6
推荐指数
1
解决办法
410
查看次数

哪里的运行服务器在组件中消失了?

我曾经能够像这样在compojure中启动一个Web服务器:

(run-server {:port 8080} "/*" (servlet my-app))
Run Code Online (Sandbox Code Playgroud)

有谁知道这个函数在最新的组件中去了哪里?(0.6.2)

文档说我应该从命令行运行它并使用一些怪异的自动重新加载的东西,此时我可能也在使用python.

clojure compojure

5
推荐指数
1
解决办法
1311
查看次数

Pylons REPL在运行Web服务器时重新评估代码

我正在使用预先存在的pylons项目(okfn的ckan)在python中编程,但我是一个贸易上的lisper并习惯于这种做事方式.

如果我做出虚假陈述,请纠正我:

在挂架中,似乎我应该说

$ paster serve --reload

获得一个会注意到变化的Web服务器.

此时我可以更改功能,保存文件,然后转到浏览器测试更改.

如果我想在制作网页的过程中检查函数中的变量,那么我将加注"hello",然后当我加载页面时,我得到一个基于浏览器的调试器,我可以在其中检查程序.

这一切都非常好并且在游泳方面起作用,我得到的印象是人们倾向于编写挂架代码.

不幸的是,重新加载需要几秒钟,并且它不断打破我的思路.

我想做的是从emacs运行Web服务器,(虽然命令行上的python REPL几乎一样好),这样我就可以在编辑器中更改一个函数,然后将新代码发送到运行过程而不必重新启动它.(使用命令行repl我想我必须复制并粘贴新的东西,但这也是可行的,只是稍微不方便)

Python看起来非常有活力,而且在许多方面都非常像lisp,所以我原则上看不出任何原因导致它无效.

所以我想问题是:

是否有人熟悉lisp的做事方式,以及Pylons,他们能告诉我如何在pylons中编写lisp方式吗?或者出于某种原因这是不可能的还是坏的?

编辑:

我可以从emacs里面的python解释器运行webserver:

from paste.script.serve import ServeCommand
ServeCommand("serve").run(["development.ini"])
Run Code Online (Sandbox Code Playgroud)

我可以通过插入代码来停止并向我展示它正在做什么:

import pdb
pdb.set_trace()
Run Code Online (Sandbox Code Playgroud)

所以我现在只需要一种方法让网络服务器在不同的线程上运行,这样控制就可以返回到REPL,我可以在运行过程中重新定义函数和变量.

def start_server():
    from paste.script.serve import ServeCommand
    ServeCommand("serve").run(["development.ini"])


server_thread=threading.Thread(target=start_server)
server_thread.start()
Run Code Online (Sandbox Code Playgroud)

这似乎有效,除了如果我在REPL重新定义一个函数,更改不会反映在Web服务器中.有谁知道为什么?

python pylons read-eval-print-loop

5
推荐指数
1
解决办法
356
查看次数

是否可以使用 gdb 通过 ssh 远程调试?

我可以使用本地源文件调试在我具有 ssh 访问权限的远程目标上运行的程序吗?

假设我的家用计算机上的目录中有一个名为 hello.c 的程序/home/jla/hello

在远程计算机上,我将相同的文件放在目录 /hello 中,并使用 编译它 $ gcc -g -o hello hello.c,然后删除远程 hello.c,但保留可执行文件。

然后我可以在本地运行 gdb,将其通过 ssh 连接到远程计算机以运行可执行文件,但使用本地源作为参考吗?

笔记:

  1. 令人烦恼的是,远程机器非常精简且无法更改。它有 gdb,但没有 gdbserver

  2. 请注意,本地和远程计算机具有不同的体系结构。在这种特殊情况下,64 位和 32 位英特尔

  3. 我真正想做的是在 emacs/gud 下运行它。但这将是一个很好的开始。

gdb remote-debugging

5
推荐指数
1
解决办法
3247
查看次数

我可以让 emacs grep windows 只使用另一个窗口来打开文件吗?

我面前有 emacs。

我运行了 find-grep,它有很多命中,这些命中显示在一个窗口中。文件名以绿色显示为超链接。

我将其设为唯一的窗口,Cx 1。

如果我单击文件名,窗口会垂直分割,并且包含找到的文本的文件将显示在另一个窗口中。

如果我单击更多文件名,则新文件将替换旧文件,这就是我想要发生的情况。

到目前为止,一切都很好...

但是,如果我调整窗口大小,则 emacs 会定期(当我单击时)再次分割两个窗口之一,从而使显示难以阅读。然后它将在两个新窗口之间循环打开新文件。有时它会打开更多的窗户,使情况变得更糟。如果我关闭任何这些新窗口,它们就会再次重新打开。

事实上,有时即使我不调整任何东西的大小,这种不正常的行为也会发生。如果我这样做的话,这种情况似乎会更频繁地发生。

我希望 emacs 停止胡闹,只有一个 find-grep 窗口和一个“显示”窗口,并且始终用新文件替换显示窗口。我还希望能够将这些窗口设置为看起来最方便的尺寸。

有什么办法可以实现这一点吗?

或者任何人都可以向我指出一篇关于整个事情(替换此窗口的内容/替换不同窗口的内容/通过拆分创建另一个窗口)的工作原理的文章,这样我就可以理智地破解它。

windows emacs find-grep

5
推荐指数
1
解决办法
1271
查看次数

leiningen为什么要创建目录层次结构?我可以免除吗?

如果我用leiningen创建一个新的clojure项目,它会像这样创建一个目录树:

.
|-- doc
|   `-- intro.md
|-- project.clj
|-- README.md
|-- src
|   `-- hello_friend
|       `-- core.clj
`-- test
    `-- hello_friend
        `-- core_test.clj
Run Code Online (Sandbox Code Playgroud)

通常,我想要的只是一个单独的clojure文件,我想使用leiningen来处理库并开始一个repl.

我有两个问题:

(1)使用这种结构可以使leiningen正常工作

.
|-- project.clj
`-- hello.clj
Run Code Online (Sandbox Code Playgroud)

我更喜欢这个.(实际上更好的方法是将project.clj作为hello.clj文件的一部分)

(2)深层目录结构有什么好的理由吗?或者它只是来自java-land的习惯?


请注意,就我所见,这工作正常:

project.clj

(defproject generic "0.0.0"
  :dependencies 
  [[org.clojure/clojure "1.4.0"]
   [hiccup "1.0.2"]]
  :source-paths ["."]
  :main two

  :repl-options { :port 4001 :init (println "(-main) to run") }
)
Run Code Online (Sandbox Code Playgroud)

one.clj

(ns one
  (:use hiccup.core))

(def doom (html [:h1 "doom"]))
Run Code Online (Sandbox Code Playgroud)

two.clj

(ns two 
  (:require one))

(defn -main [] 
  (println one/doom))
Run Code Online (Sandbox Code Playgroud)

clojure leiningen

5
推荐指数
1
解决办法
249
查看次数