小编Dan*_*nin的帖子

Emacs:临时缓冲区的弹出底部窗口

我想有一个弹出的底部窗口,用于临时缓冲区,如编译,完成等.即使根窗口是水平分割,它也应该垂直分割整个帧.例如:在Mx编译之前:

+------+------+
|      |      |
|      |      |
|      |      |
+------+------+

后:

+------+------+
|      |      |
+------+------+
|             |
+------+------+

我对ecb-compilation-window非常满意,但我不想使用ECB和CEDET.实际上我看到了描述行为的两种方式,但两者都有其缺点.

缺点:它使用delete-other-windows函数,然后根据需要拆分根窗口后重建以前的Windows树.它使代码中存在的早期窗口(或任何模块的代码)的所有引用无效.

  • 将window-min-height变量设置为其最小可能值(1),并在emacs启动期间垂直调用split-window-vertical,最小化窗口高度.然后使用此窗口为临时缓冲区设置其高度.

缺点:框架底部有恼人的模式线的小烦人窗口,不适用于emacs --daemon.

是否有更优雅的方法来做到这一点没有缺点

emacs elisp

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

Haskell:读取多态数据类型和元组的实例

假设我有一个框架的多态数据类型:

data Frame a = Frame {
      fdata :: V.Vector (V.Vector a)
    , frows :: Int
    , fcols :: Int
}

makeFrame :: [[a]] -> Frame a
makeFrame s = ...
Run Code Online (Sandbox Code Playgroud)

我希望它的文本表示看起来像列表列表:

instance Show a => Show (Frame a) where
  show (Frame m _ _) = show $ V.toList $ V.toList <$> m

instance Read a => Read (Frame a) where
  readsPrec _ value = [makeFrame $ read value, "")]
Run Code Online (Sandbox Code Playgroud)

我对我的读取功能非常满意,直到我发现框架在元组内部时它不能正常工作:

-- works
> let x = read $ show …
Run Code Online (Sandbox Code Playgroud)

haskell

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

Haskell protobuf:模糊类型变量

通常我知道如何修复模糊的类型变量问题,但这次不知道.长话短说,我使用protobuf Haskell库来处理协议缓冲区.该库让您忘记维护单独的.proto文件,如果它分别是Encode和Decode类型的实例,它会导致序列化和反序列化您的数据类型.

我正在protobuf之上设计一个简单的协议.主消息数据类型包含消息ID,消息类型和一些取决于类型的可选数据.我想要一个获取消息ID,消息类型和可选数据(需要是Encode类的实例)的函数,并创建一个新的MyMessage实例,并将可选数据预先序列化为ByteString.

这就是我尝试这样做的方式:

{-# LANGUAGE DataKinds     #-}
{-# LANGUAGE DeriveGeneric #-}

import           Data.ByteString      (ByteString)
import           Data.Int
import           Data.Maybe
import           Data.Monoid
import           Data.ProtocolBuffers
import           Data.Serialize
import           Data.Text            (Text, pack)
import           GHC.Generics         (Generic)
import           GHC.TypeLits

data MyMsgType = MSG_TYPE_1
               | MSG_TYPE_2
               deriving (Enum, Show)

data MyMessage = MyMessage {
    msgId   :: Required 1 (Value Int64)
  , msgType :: Required 2 (Enumeration MyMsgType)
  , cpData  :: Optional 3 (Value ByteString)
} deriving (Generic, Show)

instance Encode MyMessage
instance Decode …
Run Code Online (Sandbox Code Playgroud)

haskell protocol-buffers

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

在haskell表达无限

是否有更优雅的方式表达除了let posInf = 1 / 0let negInf = -1 / 0分别在哈斯克尔的正面和负面无穷大?

haskell

0
推荐指数
1
解决办法
280
查看次数

标签 统计

haskell ×3

elisp ×1

emacs ×1

protocol-buffers ×1