小编oco*_*odo的帖子

Emacs:如何在defun中用lisp函数替换-regexp?

例如,我想在括号,(),UPCASE中创建所有文本.以交互方式执行以下操作非常简单:

M-x query-replace-regexp
replace: "(\(.+?\))"
with   : "(\,(upcase \1))"
Run Code Online (Sandbox Code Playgroud)

相反,我想写一个defun会这样做:

(defun upcs ()
  (interactive)
  (goto-char 1)
  (while (search-forward "(\\(.+?\\))" nil t) (replace-match "(\\,(upcase \\1))" t nil)))
Run Code Online (Sandbox Code Playgroud)

但它不起作用!虽然下面的工作(其追加foobar以括号文本):

(defun HOOK ()
  (interactive)
  (goto-char 1)
  (while (search-forward-regexp "(\\(.+?\\))" nil t) (replace-match "(foo \\1 bar)" t nil)))
Run Code Online (Sandbox Code Playgroud)

lisp emacs

8
推荐指数
3
解决办法
4018
查看次数

FrameworkElement.Name问题

我试图在构造函数中设置页面的Name属性:

public partial class PageListView : Page
{
    public PageListView(string title)
    {
        InitializeComponent();
        Name = title;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我经常收到以下错误消息.

'x' is not a valid value for property 'Name'.
Run Code Online (Sandbox Code Playgroud)

x似乎是几乎所有的东西,向下钻取到异常的详细信息似乎并没有提供任何有用的信息(如的InnerException为空).

有谁知道这里发生了什么?

string wpf properties frameworkelement

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

KendoUI数据属性事件处理程序和'this'范围

似乎kendo的不显眼的javascript样式事件调用this在我的方法上下文中断.

假设我有一个对象Foo,实例化为bar = new Foo()

function Foo(){};

Foo.prototype.name = "Herring";
Foo.prototype.doSomething = function(e) {
   alert(this.name);
};

bar = new Foo();
Run Code Online (Sandbox Code Playgroud)

然后使用数据单击附加事件

<a data-role="button" data-click="bar.doSomething">Click Me</a>
Run Code Online (Sandbox Code Playgroud)

对象上下文bar被替换(不知道为什么,因为我们有方便的element容器.)因此this.name是未定义的.

var self = this;在对象构造函数中尝试了旧的,但它不起作用,有谁知道解决这个问题的最佳方法是什么?

更新:Hacky解决方法

因为我真的不想失去将模块包装为类的好处,所以我创建了事件调用函数包装器,然后调用适当对象上的方法.

例如,将标记连接到包装函数.

<a data-role="button" data-click="doSomething">Click Me</a>
Run Code Online (Sandbox Code Playgroud)

并且包装函数只调用object.method.

function doSomething(e){ bar.doSomething(e) };  
Run Code Online (Sandbox Code Playgroud)

现在,这实现了预期的结果,但它非常可怕,从标记调用的每个事件都必须具有类似上面的代理功能.所以想象一下你有300个事件的场景......你会立刻明白为什么这很糟糕.

如果没有其他解决方案,我非常希望有.我将这个解决方法作为答案发布,但就我而言,它远非理想.

脚注

我会完全诚实,这似乎是剑道的主要架构缺陷,因为这种从标记调用事件的方法是"剑道方式".显然它无法修补,因为可能有一些代码已经处理this作为html元素的引用.

能够覆盖它,或者能够通过可以传递调用的泛型处理程序(实质上是通用代理函数)来路由这些事件调用,是可以处理它的可能方法.它也可以是kendo.对象上的简单可配置值.

理论解决方案

如果有效,我会发布后续内容,理论上可以在通用代理中抛出事件,并让它调用正确的范围函数.

假设我们使用event属性来调用代理,然后创建一个单独的属性来传达对象/方法调用.例如.

<a data-role="button" data-click="prox" data-prox="o.eventHandler">Click Me</a>
Run Code Online (Sandbox Code Playgroud)

代理函数将从prox属性数据集中提取:

方法 …

javascript unobtrusive-javascript this kendo-ui

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

在emacs lisp中调整函数

我有很多方便的功能,可以在当前的单词或区域上运行,并且由于懒惰等等,我用模板构建它们......

例如

(defun lower-camelcase-at-point-or-region ()
  "lowerCamelCaseTheCurrent dashed or snake_case word or any words in text selection."
  (interactive)
  (let (pos1 pos2 meat)
    (if (and transient-mark-mode mark-active)
        (setq pos1 (region-beginning)
              pos2 (region-end))
      (setq pos1 (car (bounds-of-thing-at-point 'symbol))
            pos2 (cdr (bounds-of-thing-at-point 'symbol))))
    (setq meat (s-lower-camel-case (buffer-substring-no-properties pos1 pos2)))
    (delete-region pos1 pos2)
    (insert  meat)    
    )
  )
Run Code Online (Sandbox Code Playgroud)

实际上这是所有锅炉板,除了这条线......

(setq meat (s-lower-camel-case (buffer-substring-no-properties pos1 pos2)))
Run Code Online (Sandbox Code Playgroud)

我调用s-lower-camel-case缓冲区子串的地方.我想重用at点或区域的东西,但是没有在任何地方重复它(因为那是愚蠢的,并且很难维护.)

所以我真正想知道的是,我可以在Emacs Lisp中讨论函数吗?

当我试着这个......

(defun do-stuff-on-point-or-region ()
  "Do stuff."
  (interactive)
  (operate-on-point-or-region 's-lower-camel-case)
)
Run Code Online (Sandbox Code Playgroud)

随着operate-on-point-or-region定义为...:

(defun operate-on-point-or-region (fn) …
Run Code Online (Sandbox Code Playgroud)

elisp emacs24

7
推荐指数
2
解决办法
1924
查看次数

设置模板图像的图像颜色

我有这样的图像: 在此输入图像描述

(渲染为模板图像)

我试过这段代码:

@IBOutlet weak var imgAdd: NSImageView!
imgAdd.layer?.backgroundColor = CGColor.white
Run Code Online (Sandbox Code Playgroud)

这只会改变背景颜色.

有没有办法以编程方式更改此图像的颜色?


到目前为止,我已经尝试了下面的代码不起作用.(图像颜色不会改变.)

func tintedImage(_ image: NSImage, tint: NSColor) -> NSImage {
    guard let tinted = image.copy() as? NSImage else { return image }
    tinted.lockFocus()
    tint.set()

    let imageRect = NSRect(origin: NSZeroPoint, size: image.size)
    NSRectFillUsingOperation(imageRect, .sourceAtop)

    tinted.unlockFocus()
    return tinted
}

imgDok.image = tintedImage(NSImage(named: "myImage")!, tint: NSColor.red)
Run Code Online (Sandbox Code Playgroud)

macos cocoa nsimageview swift3

7
推荐指数
6
解决办法
3366
查看次数

Javascript的灵活图形可视化框架

我正在寻找一个类似于flex组件SpringGraph的 Javascript灵活的图形可视化框架.我需要能够将节点表示为不同的可视组件,例如窗口,图像等.能够命名边缘等任何建议?

javascript visualization graph

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

自动编辑多个文件

我有很多文件,我想删除第1行到第55行,然后为第25行到第35行添加注释(例如://),然后保存到新文件.

如何在bash shell上使用vim自动执行此操作?

vim

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

在C#中实现DSL以生成特定于域的XML

我有一个遗留的HTTP/XML服务,我需要与我的应用程序中的各种功能进行交互.

我必须为服务创建各种请求消息,因此为了避免在代码周围乱七八糟的魔术字符串,我决定创建xml XElement片段来创建一个基本的DSL.

例如.

代替...

new XElement("root", 
  new XElement("request",
    new XElement("messageData", ...)));
Run Code Online (Sandbox Code Playgroud)

我打算用:

Root( Request( MessageData(...) ) );
Run Code Online (Sandbox Code Playgroud)

使用Root,Request和MessageData(当然,这些是出于说明目的)定义为静态方法,它们都执行类似于以下操作:

private static XElement Root(params object[] content) 
{
    return new XElement("root", content);
}
Run Code Online (Sandbox Code Playgroud)

这给了我一个伪功能组合风格,我喜欢这种任务.

我的终极问题实际上是一个理智/最佳实践,所以它可能过于主观,但我很高兴有机会得到一些反馈.

  1. 我打算将这些私有方法移动到公共静态类,以便任何想要为服务撰写消息的类都可以轻松访问它们.

  2. 我还打算让服务的不同功能将消息由特定的消息构建类创建,以提高可维护性.

这是实现这个简单的DSL的好方法,还是我错过了一些特殊的酱汁,让我能做得更好?

让我怀疑的是,事实上,只要我将这些方法移动到另一个类,我就会增加这些方法调用的长度(当然,我仍然保留了删除大量魔术字符串的初始目标.)我更关心DSL语言类的大小(loc),而不是语法简洁?

注意事项

请注意,在这种情况下,远程服务实现不当,并且不符合任何通用消息传递标准,例如WSDL,SOAP,XML/RPC,WCF等.

在这些情况下,创建手工构建的消息显然不是明智之举.

在极少数情况下,您必须处理此类服务,并且无论出于何种原因无法重新设计,下面的答案提供了一些处理情况的可能方法.

c# xml legacy dsl

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

如何实现:with_trait使用Fabrication

我正在考虑从FactoryGirl迁移到Fabrication宝石的许多模拟.

但是,到目前为止,我一直无法找到有关实现FactoryGirl中可用的特征模式的任何信息.

是否有一种普遍接受的方法来使用Fabrication来做到这一点?

提前感谢您的任何答案或信息.

ruby-on-rails mocking fabrication-gem factory-bot

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

Bash:重定向已经运行的进程的输出?

可能重复:
使用命令行重定向进程启动后的STDERR/STDOUT?

在Bash中,有一种方法可以在进程运行后捕获/重定向进程的输出(和stderr?)吗?

unix bash pipe process

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